Einzelnen Beitrag anzeigen

IngoD7

Registriert seit: 16. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 13:16
Zitat von Hansa:
Hi,

wieso wird hier :

Delphi-Quellcode:
procedure TfrmKeyTest1.PanelEnter(Sender: TObject);
begin
  if (Sender is TPanel) then begin
    (Sender as TPanel).Color := clSkyBlue;
    Canvas.Pen.Color := clNavy; // Rahmen-Schriftfarbe
    Canvas.Pen.Width := PinselBreite;
    Canvas.Rectangle ((Sender as TPanel).Left-1,
                      (Sender as TPanel).Top-1,
                      (Sender as TPanel).Left + (Sender as TPanel).Width+2,
                      (Sender as TPanel).Top + (Sender as TPanel).Height+2);
  end;
end;
das Panel gefäbt und angezeigt, die Umrandung mit dem Rectangle jedoch nicht ? Und zwar nur beim Programmstart !
Weil Windows sich - warum auch immer - entschieden hat, deine Form nach dem Aufbringen des Rectangels nochmal zu zeichnen (oder überhaupt erst fertig zu zeichnen). Dieses Zeichnen geschieht dann ohne Rectangel.

Baue mal irgendwo ein kleinen Button ein mit OnClick --> Form.Repaint. Nach einem Repaint ist dein Rectangel auch weg. Ebenso, wenn du dein Fenster so weit über den Bildschirmrand verschiebst, dass das Panel (über'n Rand) verschwindet, und dann zurückziehst.

//Nachtrag:
Du baust ja schon ziemlich lange an deiner Rahmengeschichte herum. Mal um Labels, mal um Panels. Wie auch immer.
Ich würde nicht direkt auf dem Canvas der Form herumkleistern, sondern Objekte benutzen, die ich sicht- und unsichtbar machen kann, die ich verschieben kann, etc. Einen Rahmen würde ich mir als TShape erstellen (Eigenschaften Brush, Pen und Shape korrekt setzen, damit es ein Rahmen wird) und bei Bedarf folgendermaßen um das Panel legen:
Delphi-Quellcode:
   shape1.Left:=(Sender as TPanel).Left-PinselBreite;
   shape1.Top:=(Sender as TPanel).Top-PinselBreite;
   shape1.Width:=(Sender as TPanel).Width+2*PinselBreite;
   shape1.Height:=(Sender as TPanel).Height+2*PinselBreite;
   shape1.Show;
Danach hast du keine Probleme mehr mit irgendwelchen Repaints.
  Mit Zitat antworten Zitat