Ich verstehe Folgendes nicht:
Ein leeres Formular. Man platziere eine
TPaintBox
und einen
TSplitView
:
Delphi-Quellcode:
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
(Und in den SplitView noch einen Button zum Auf- und zuklappen)
Warum liefert folgender Code:
Delphi-Quellcode:
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;
Ein Ergebnis wie das Video im Anhang?
- Die Paintbox wird komplett neu gezeichnet wenn ich das Fomular in der Größe ändere. So habe ich das erwartet
- Wenn man den SplitView auf und zu macht wird nur ein Teil der Paintbox neu gezeichnet, der Rest bleibt "alt".
Den zweiten Punkt möchte ich nicht. Ich möchte dass alles zusammenpasst. Ist die PaintBox die falsche Komponente für mich?