喫茶XRAYトップページ

[スレッド全体
]

[13045] コントロールのClickメソッド返信 削除
2019/9/3 (火) 21:17:07 Mr.XRAY
コントロールの Click メソッドは protected 部にあります.したがって,
以下のコードは 次のエラーが発生してコンパイルできません.
もちろん入力支援のリストに Click は表示されません.
http://mrxray.on.coocan.jp/Delphi/Others/A_IDETechnique.htm#05

[dcc32 エラー] Unit1.pas(33): E2362 プロテクトシンボル TControl.Click にアクセスできません

procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Click;
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
  ShowMessage('Clicked ');
end;

※ Click メソッドは,コントロールをクリックした時に自動的に実行されます.


Click はない

[13046] コントロールのClickメソッド-メッセージ送信返信 削除
2019/9/3 (火) 21:19:12 Mr.XRAY
Click メソッドと同じ動作を実現するためによく使用されるのが
メッセージの送信です.

参考記事
[ コードでボタンクリックのイベントを発生させる ]
http://mrxray.on.coocan.jp/Delphi/Others/A_UltraIntro01.htm#14

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendMessage(Panel1.Handle, WM_LBUTTONDOWN, 0, 0);
  SendMessage(Panel1.Handle, WM_LBUTTONUP, 0, 0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Panel1.Perform(WM_LBUTTONDOWN, 0, 0);
  Panel1.Perform(WM_LBUTTONUP, 0, 0);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  // TPanel は Button コントロールではないので BM_CLICK は動作しない
  SendMessage(Panel1.Handle, BM_CLICK, 0, 0);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  // Panel1Click のコードを実行
  // 本当の意味でのクリック動作ではない
  Panel1Click(nil);
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
  ShowMessage('Clicked ');
end;


[13047] コントロールのClickメソッド-protected部返信 削除
2019/9/3 (火) 21:21:08 Mr.XRAY
protected 部のメンバーにアクセスするには,
対象のコントロールの継承クラスを定義します.

implementation

{$R *.dfm}

type
  TMyPanel = class(TPanel);

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyPanel(Panel1).Click;
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
  ShowMessage('Clicked ');
end;


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82