![]() |
VCL-Paintbox: Wie komplett neu zeichnen lassen?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich verstehe Folgendes nicht:
Ein leeres Formular. Man platziere eine
Delphi-Quellcode:
und einen
TPaintBox
Delphi-Quellcode:
:
TSplitView
Delphi-Quellcode:
(Und in den SplitView noch einen Button zum Auf- und zuklappen)
object PaintBox1: TPaintBox
Left = 0 Top = 0 Width = 585 Height = 299 Align = alClient OnPaint = PaintBox1Paint ExplicitLeft = 272 ExplicitTop = 120 ExplicitWidth = 105 ExplicitHeight = 105 end object SplitView1: TSplitView Left = 435 Top = 0 Width = 200 Height = 299 CloseStyle = svcCompact DisplayMode = svmOverlay OpenedWidth = 200 Placement = svpRight TabOrder = 0 end Warum liefert folgender Code:
Delphi-Quellcode:
Ein Ergebnis wie das Video im Anhang?
procedure TForm8.Button1Click(Sender: TObject);
begin SplitView1.Opened := not SplitView1.Opened; end; procedure TForm8.FormCreate(Sender: TObject); begin PaintBox1.Canvas.Pen.Width := 3; end; procedure TForm8.PaintBox1Paint(Sender: TObject); var paintRect: TRect; newColor: TColor; begin paintRect := PaintBox1.ClientRect; PaintBox1.Canvas.Brush.Color := Random($FFFFFF); PaintBox1.Canvas.FillRect(paintRect); paintRect.Inflate(-10, -10); PaintBox1.Canvas.Pen.Color := Random($FFFFFF); PaintBox1.Canvas.Ellipse(paintRect); end;
Den zweiten Punkt möchte ich nicht. Ich möchte dass alles zusammenpasst. Ist die PaintBox die falsche Komponente für mich? |
AW: VCL-Paintbox: Wie komplett neu zeichnen lassen?
Zwei Ideen:
1) Die Paintbox auf ein Panel setzen und das auf alClient und auf Resize reagieren 2) Zum SplitView1.Opened noch ein Paintbox.Refresh (o.ä.) auslösen |
AW: VCL-Paintbox: Wie komplett neu zeichnen lassen?
Das OnResize-Event wird leider nicht ausgelöst wenn sich der SplitView darüber legt. Aber Das OnOpened und OnClosed-Event für den SplitView sind schonmal ein Anfang. Dann kann man die Paintbox noch einmal komplett neu zeichnen lassen, dann stimmt alles wieder.
Danke schon mal :-) // Update: Ich habe jetzt statt der PaintBox ein TImage genommen, und alles läuft wie es soll. |
AW: VCL-Paintbox: Wie komplett neu zeichnen lassen?
Du kannst auch im
Delphi-Quellcode:
ein
TSplitView.OnClosed
Delphi-Quellcode:
aufrufen. Das hilft zwar nicht während der Animation, aber sorgt danach für ein Neuzeichnen.
PaintBox1.Invalidate
|
AW: VCL-Paintbox: Wie komplett neu zeichnen lassen?
Ja, das war ja im Endeffekt was stahli vorgeschlagen hat.
Nur sollte das spezielle Teil mit der Paintbox eigentlich nichts von irgendwelchen SplitViews wissen, der hat mit dem nämlich gar nichts am Hut ;-) Mit dem TImage bin ich jetzt eigentlich glücklich geworden. Da flackert auch nichts mehr wenn man den SplitView auf und zu macht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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