掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
関数や手続きのアドレスを渡す (ID:34009)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下の TPaintScreen で座標の描写は TPaintScreen 内部で処理し、関数は本体で定義したものを適当な引数で TPaintScreen に渡したいのです。目的はこの2つの処理の裏画面書き込み・表画面転送を同時に行うためです。TPaintScreen.Draw にどういうコードを書けばいいでしょう。 TPaintScreen = class(TPaintBox) private procedure FDrawCoordinate(Target: TCanvas);//座標 public Func: Pointer; OffBmp: TBitmap; procedure Draw; ・・・・・・ end; constructor TPaintScreen.Create(AOwner: TComponent; Func: Pointer); begin OffBmp := TBitmap.Create; //オフスクリーン inherited Create(AOwner); end; procedure TPaintScreen.FDrawFunction(Target: TCanvas); begin end; procedure TPaintScreen.Draw; begin FDrawCoordinate(OffBmp.Canvas);//座標 { ここで以下のようにすると「演算子まだはセミコロンが必要」のコンパイルエラー発生 Func(OffBmp); この程度の簡潔なコードで TForm1.FDrawSinX を処理する方法はないものか} Canvas.Draw(0, 0, OffBmp); end; // +----------------- Form1 ------------------+ procedure TForm1.FormCreate(Sender: TObject); begin PaintScreen1 := TPaintScreen.Create(Form1); PaintScreen1.Func := Nil; ・・・・・・ end; procedure TForm1.FDrawSinX(Target: TPaintScreen); begin with Target.OffBmp.Canvas do ・・・・・・ //ここでTarget.Canvas.Draw(0, 0, Target.OffBmp); で表画面に転送してもちらつく end; procedure TForm1.FPutScreen; begin PaintScreen1.Func := TForm1.FDrawSinX; PaintScreen1.Draw; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.