Nancyです。
最近、Delphiを勉強し始めました。
メインフォーム起動時に
フォームにキャンバスの背景を真っ黒にしたいのですが、うまくいきません。
以下のコードを書きました。
procedure TfrmMain.FormCreate(Sender: TObject);
begin
// 先ず、フォームにキャンバスの背景を真っ黒にする
Canvas.Brush.Color := 0;
Canvas.Rectangle(10,10,600,500);
end;
どうしたらいいのでしょう?
> メインフォーム起動時に
> フォームにキャンバスの背景を真っ黒にしたいのですが、うまくいきません。
単純に背景を黒にしたいなら、Color プロパティーを clBlack にするだけです。
そうではなく、起動時だけ黒にしたいなら、OnCreate イベントハンドラでは
できません。なぜなら、このイベントは、背景が塗られるまえに起こるからです。
代わりに、OnPaint イベントハンドラにコードを書きます。
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
private
{ Private 宣言 }
public
FlagFirst:Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
begin
if not FlagFirst then begin
Canvas.Brush.Color := clBlack;
Canvas.FillRect(ClientRect);
FlagFirst := true;
end;
// その他の描画コードがあればここに書く
end;
FlagFirst は起動時に一度だけ実行するのに必要です。
onShowじゃ無理ですか?
OnShowは表示寸前に発生しますので、ここでCanvasをいじっても無駄です。
jokさま、るるとんさま、たかみちえ様、ありがとうございます。
仰せの通り見事にうまくいきました。
boolean型変数はデフォルトでfalseみたいですね。
フラグの処理まで指摘していただきありがとうございます。
ツイート | ![]() |