hsimola
asked on
How to do loop -> until keypressed
How to do loop until keypressed ?
repeat
memo1.lines.add('Hello!') ;
until keypresses ; // What should I put to here, I would like to use ESC key.
repeat
memo1.lines.add('Hello!') ;
until keypresses ; // What should I put to here, I would like to use ESC key.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Most easy and primitive variant:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Memo1.Lines.Add('Hello!')
end;
procedure TForm1.FormKeyPress(Sender : TObject; var Key: Char);
begin
Timer1.Enabled:=false;
Button1.Enabled:=true;
end;
procedure TForm1.Memo1KeyPress(Sende r: TObject; var Key: Char);
begin
Timer1.Enabled:=false;
Button1.Enabled:=true;
end;
procedure TForm1.Button1Click(Sender : TObject);
begin
Timer1.Enabled :=true;
Button1.Enabled:=false;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Memo1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender:
begin
Memo1.Lines.Add('Hello!')
end;
procedure TForm1.FormKeyPress(Sender
begin
Timer1.Enabled:=false;
Button1.Enabled:=true;
end;
procedure TForm1.Memo1KeyPress(Sende
begin
Timer1.Enabled:=false;
Button1.Enabled:=true;
end;
procedure TForm1.Button1Click(Sender
begin
Timer1.Enabled :=true;
Button1.Enabled:=false;
end;
end.
unit Unit_Q_20963045;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
private{ Private declarations }
PressedKey: Char;
public { Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
PressedKey := #0;
end;
procedure TForm1.FormKeyPress(Sender
begin
PressedKey := Key;
end;
procedure TForm1.SpeedButton1Click(S
begin
try
repeat
Memo1.SetFocus;
Memo1.Lines.add('Hello!') ;
Application.ProcessMessage
until (PressedKey=#27);
finally
PressedKey := #0;
end;
end;
end.
//........................
object Form1: TForm1
Left = 216
Top = 114
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
KeyPreview = True
OldCreateOrder = False
OnCreate = FormCreate
OnKeyPress = FormKeyPress
PixelsPerInch = 96
TextHeight = 13
object SpeedButton1: TSpeedButton
Left = 52
Top = 76
Width = 135
Height = 22
Caption = 'Check Key Press'
OnClick = SpeedButton1Click
end
object Memo1: TMemo
Left = 286
Top = 42
Width = 255
Height = 317
TabOrder = 0
end
end