buttonの長押しで処理を繰返すには?

解決


ToshiqnZ  2002-08-16 20:58:21  No: 1286

こんにちは、ToshiqnZと申します。Delphi始めて間もないですが、色々な掲示板等
で質問したり、読ませて頂いてます。以下、質問です。

例ですが、以下の様な内容で、Button1を押し続けた時に動作を繰返すにはどうし
たら良いのでしょうか。

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
    i:integer;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
  i:=i+1;
  Edit1.Text:=IntToStr(i);
end;

宜しくお願いします。


たかみちえ  URL  2002-08-17 01:27:55  No: 1287

んん、OnMouseDownイベントとOnMouseUpイベントを使ってすべての処理をすれば、
何とかなると思いますが。


Lupin3rd  2002-08-17 02:51:07  No: 1288

OnMouseDownとOnMouseUpとTTimerを駆使するのはどうでしょうか。


ToshiqnZ  2002-08-17 06:06:53  No: 1289

たかみちえさん、Lupin3rdさん  アドバイスありがとうございました。

実はプロパティとかで設定できると思っていました。ちょっとまわりくどい気がし
ますが実現できました。正式版にはまだ実装していませんがテスト報告します。

Timer1のOnTimerイベントは、Button1のClickイベントに共有設定しました。

procedure TForm1.FormCreate(Sender: TObject);
begin
  i:=0;
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Timer1.Enabled:=False;
end;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Timer1.Enabled:=True;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  i:=i+1;
  Edit1.Text:=IntToStr(i);
end;

end.


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加