掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユニット分割について (ID:149996)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> そこがダメだったんですね。 そこはそこですが,引数が複数あるということです. 提示されたコードでは当然動作しません.残念ながらコードに対する理解が必要です. > mousemoveイベントを共通関数群のあるPASで得たいと言うのが本質になります。 そういう場合はクラスメソッドを使用するのが確実で便利です. クラスのイベントは文字通りクラスのメンバです 以下はその例です. . unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type // このクラスのコードを別ユニットにすれば他のプロジェクトからも利用可能 // 必要性の有無は別として・・・ TMyCommClass = class(TObject) private FTargetCtrl : TControl; FDispCtrl : TControl; procedure SetTargetCtrl(const Value: TControl); protected procedure OnMouseDownEvent(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); public property TargetCtrl: TControl read FTargetCtrl write SetTargetCtrl; property DispCtrl: TControl read FDispCtrl write FDispCtrl; end; TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} var FMyCommClass : TMyCommClass; procedure TForm1.FormCreate(Sender: TObject); begin FMyCommClass := TMyCommClass.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FMyCommClass); end; procedure TForm1.Button1Click(Sender: TObject); begin FMyCommClass.TargetCtrl := Form1; FMyCommClass.DispCtrl := Panel1; end; { TMyCommClass } type TMyControl = class(TCustomControl); procedure TMyCommClass.OnMouseDownEvent(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if FDispCtrl <> nil then begin TMyControl(FDispCtrl).Caption := TMyControl(Sender).Name; TMyControl(FDispCtrl).ParentBackground := False; TMyControl(FDispCtrl).Color := clGreen; end; end; procedure TMyCommClass.SetTargetCtrl(const Value: TControl); begin FTargetCtrl := Value; if FTargetCtrl <> nil then begin TMyControl(FTargetCtrl).OnMouseDown := OnMouseDownEvent; end; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.