![]() |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Mahlzeit,
ich habe das gerade noch einmal durchgespielt: Invalidate auf der Form bringt nichts. Ich habe ein Repaint ausgeführt, auch nichts. Wie weiter oben schon beschrieben habe ich onPaint mal direkt aufgerufen, auch nichts. Die Daten, die ich zeichne, ändern sich im Programmverlauf. Ich werde da mal nur eine Zeitausgabe einbauen und sehen, wo es hakt. Ich pflücke das Ding heute Abend auseinander. Mal sehen, was ich aus meinem Code verbannen muss, damit das funktioniert. Im Normalfall sollte ein Invalidate doch reichen, oder? Schönen Dank schon mal für eure Unterstützung. |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Ich habe gerade ein kleines Testprogramm geschrieben, das funktioniert wie erwartet.
Delphi-Quellcode:
unit PaintTest;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TfrmTest = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FPaintBox: TPaintBox; FTimer: TTimer; FColor: TColor; procedure DoOnPaint(Sender: TObject); procedure DoOnTimer(Sender: TObject); public { Public-Deklarationen } end; var frmTest: TfrmTest; implementation {$R *.dfm} { TfrmTest } function RandomColor: TColor; begin Result := RGB(Random($ff), Random($ff), Random($ff)); end; procedure TfrmTest.DoOnPaint(Sender: TObject); begin FPaintBox.Canvas.Brush.Color := FColor; FPaintBox.Canvas.FillRect(Rect(0, 0, FPaintBox.Width, FPaintBox.Height)); end; procedure TfrmTest.DoOnTimer(Sender: TObject); begin FColor := RandomColor; FPaintBox.Invalidate; end; procedure TfrmTest.FormCreate(Sender: TObject); begin FTimer := TTimer.Create(self); FTimer.OnTimer := DoOnTimer; FPaintBox := TPaintBox.Create(self); FPaintBox.Parent := self; FPaintBox.Align := alClient; FPaintBox.OnPaint := DoOnPaint; FColor := RandomColor; end; initialization Randomize; end. |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Liste der Anhänge anzeigen (Anzahl: 1)
N'abend,
so, ich habe alles rausgeschnissen, bis fast nichts mehr da ist. Nun habe ich oben links in der Ecke eine Uhrzeit, die läuft nur, wenn ich die Größe des Fensters veränder oder anders das onPaint erzwinge. Ich habe da Debugausgaben eingebaut, da sieht man schön, dass das Invalidate nichts bringt. |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Klappt anscheinend nur dann, wenn du FormStyle auf fsNormal setzt
|
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Oh nein! :wall:
Danke Aphton :cheers: Wie ich oben schon geschrieben habe: Zitat:
Stefan |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Np, yaw :roll:
Nur warum klappt das nicht, wenn FormStyle so gesetzt ist? |
AW: PaintBox zeichnet trotz Invalidate/Update nicht
Zitat:
Verstehen tu ich das auch nicht. Vielleicht weil die eigenschaft Autoredraw fehlt ? gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz