Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

VCL-Paintbox: Wie komplett neu zeichnen lassen?

  Alt 27. Mai 2016, 18:06
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?
  1. Die Paintbox wird komplett neu gezeichnet wenn ich das Fomular in der Größe ändere. So habe ich das erwartet
  2. 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?
Angehängte Dateien
Dateityp: zip Eine harmlose MP4-Datei.zip (137,2 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat