掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユニット分割について (ID:149999)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
別ユニットにする例です. unit HogeHoge; interface uses Winapi.Windows, System.Classes, Vcl.Graphics, Vcl.Controls; 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; implementation { TMyCommClass } type TMyControl = class(TCustomControl); procedure TMyCommClass.OnMouseDownEvent(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var LColor : TColor; begin if FDispCtrl <> nil then begin TMyControl(FDispCtrl).Caption := TMyControl(Sender).Name; TMyControl(FDispCtrl).ParentBackground := False; LColor := RGB(Random(255), Random(255), Random(255)); TMyControl(FDispCtrl).Color := LColor; end; end; procedure TMyCommClass.SetTargetCtrl(const Value: TControl); begin FTargetCtrl := Value; if FTargetCtrl <> nil then begin TMyControl(FTargetCtrl).OnMouseDown := OnMouseDownEvent; end; end; end. 上のユニットを使用する側のコード例です. フォーム上でマウスダウンすると TPanel の色が変わります. Button1 上でマウスダウンするとフォームの色が変わります. 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 TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation uses HogeHoge; {$R *.DFM} var FMyCommClass1 : TMyCommClass; FMyCommClass2 : TMyCommClass; procedure TForm1.FormCreate(Sender: TObject); begin FMyCommClass1 := TMyCommClass.Create; FMyCommClass2 := TMyCommClass.Create; FMyCommClass1.TargetCtrl := Form1; FMyCommClass1.DispCtrl := Panel1; FMyCommClass2.TargetCtrl := Button1; FMyCommClass2.DispCtrl := Form1; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FMyCommClass1); FreeAndNil(FMyCommClass2); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.