こんにちはすべて TWinControl
から派生した新しいコンポーネントを作成しました。 TPanel
に貼り付けて、パネルのPaintTo
という手続きを呼び出そうとしました。その結果、パネルとキャプションが表示され、コンポーネントはキャンバスにまったく塗りつぶされません。これについて何をすべきですか?私のコンポーネントでPaintToが動作しない
ソース(親愛なるダビデは尋ねたとして)の一部:あなたは本当に今までPaintToを呼び出すか、上書きする必要はありません
Procedure TApListBox.Paint;
var
C: TCanvas;
B: TBitmap;
ItemClient: TPoint;
Begin
Try
If (FUpdating > 0) Then
Exit;
Try
BeginUpdate;
B := TBitmap.Create;
B.Width := Width;
B.Height := Height;
With B.Canvas Do Begin
Lock;
// Begin :
ItemClient := Point(IVisPanel + 3, 2);
// Draw Items
PaintItems(B.Canvas, ItemClient);
Unlock;
End;
C := TCanvas.Create;
C.Handle := GetWindowDC(Self.Handle);
C.Lock;
inherited;
C.Draw(1, 1, B);
If (RenameEdit.Visible) Then
RenameEdit.Repaint;
Finally
C.Unlock;
ReleaseDC(0, C.Handle);
C.Free;
B.Free;
Dec(FUpdating);
End;
Except
End;
End;
コントロールはどのようにして塗装されますか? –
パネル、そのキャプション、*と*あなたのコントロールがペイントされていない場合、どうしてあなたのコントロールではなく、パネルに問題があると思いますか? –
「キャンバス」のオーバーロードを使用していますか?または、 'DC'オーバーロードを使用してCanvasのハンドルを渡している場合は、キャンバスをロックしていますか? –