掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユニット分割について (ID:150010)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
質問された方が提示したコードに TImage の操作がありましたのでやってみました. プロパティの設定で例外が発生しました. TForm.OnCreate の段階では TImage は完全に生成されていないようです. で,修正したコードです. ユニットのコードです. unit HogeHogeTImage; interface uses Winapi.Windows, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.ExtCtrls; type TMyCommTImageClass = class(TComponent) private FTargetCtrl : TImage; procedure SetTargetCtrl(const Value: TImage); protected procedure OnMouseDownEvent(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); public property TargetCtrl: TImage read FTargetCtrl write SetTargetCtrl; end; implementation { TMyCommClass } procedure TMyCommTImageClass.OnMouseDownEvent(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var LColor : TColor; begin LColor := RGB(Random(255), Random(255), Random(255)); FTargetCtrl.Canvas.Brush.Color := LColor; FTargetCtrl.Canvas.FillRect(FTargetCtrl.Canvas.ClipRect); end; procedure TMyCommTImageClass.SetTargetCtrl(const Value: TImage); begin FTargetCtrl := Value; if FTargetCtrl <> nil then begin FTargetCtrl.OnMouseDown := OnMouseDownEvent; end; end; end. ユニットを使用する側のコードです. 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; Image1: TImage; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation uses HogeHogeTImage; {$R *.DFM} var FMyCommClass1 : TMyCommTImageClass; procedure TForm1.Button1Click(Sender: TObject); begin if FMyCommClass1 = nil then begin FMyCommClass1 := TMyCommTImageClass.Create(Self); end; FMyCommClass1.TargetCtrl := Image1; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.