AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Panel wird nicht richtig gezeichnet

Ein Thema von Hansa · begonnen am 13. Mär 2007 · letzter Beitrag vom 15. Mär 2007
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 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