![]() |
[erledigt] Rechteck füllen
Hi,
habe einige Panele und darauf einige Labels. Code-Fragment :
Delphi-Quellcode:
Parent der Labels ist immer ein Panel. Sofern man mit der Maus in die Nähe der Labels kommt, sollen die Panels umrandet und auch gefüllt werden. Folgender Effekt tritt auf : die Umrandung klappt einwandfrei, das Füllen mit anderer Farbe aber nicht. :shock: mit dem -5/+5 im FillRect habe ich zumindest einen Effekt erzielt : außerhalb der Panels ist was zu sehen (5 Pixel breiter Rahmen in clSkyBlue).
procedure Tfrm.LabelMouseEnter(Sender: TObject);
... if (Sender is TLabel) then begin Canvas.Brush.Color := clSkyBlue; Canvas.FillRect (Rect ((Sender as TLabel).Parent.Left-5, (Sender as TLabel).Parent.Top-5, (Sender as TLabel).Parent.Left+5 + (Sender as TLabel).Parent.Width+1, (Sender as TLabel).Parent.Top+5 + (Sender as TLabel).Parent.Height+1)); Canvas.Pen.Color := clNavy; Canvas.Pen.Width := 4; Canvas.Rectangle ((Sender as TLabel).Parent.Left, (Sender as TLabel).Parent.Top, (Sender as TLabel).Parent.Left + (Sender as TLabel).Parent.Width+1, (Sender as TLabel).Parent.Top + (Sender as TLabel).Parent.Height+1); end; So was in der Art geht nicht :
Delphi-Quellcode:
Was ist da zu machen ?
(Sender as TLabel).Parent.Color := clSkyBlue;
|
Re: Rechteck füllen
Wie wäre es mit
Delphi-Quellcode:
Bei mir geht das. :zwinker:
((Sender as TLabel).Parent as TPanel).Color := clSkyBlue;
|
Re: Rechteck füllen
Anhand Deiner Eintragszahl folgere ich, dass Du Dich mit Delphi recht gut auskennst :-)
Wäre es in Deinem Fall evtl. daher nicht günstiger eine eigene Komponente von TLabel oder TCustomLabel abzuleiten und einen "Hover" Effekt bei DoPaint/DoDrawText zu realisieren. So weit ich das nachvollziehe ist das doch dein Anliegen?!? Ich kenne mich zwar nicht sooo gut aus, aber habe eine ähnliche Komponente mit Rahmen/Textfarbenänderung auch hinbekommen, dann dürfte das für Dich ein Klacks sein. Grüsse, SCRaT |
Re: Rechteck füllen
Eigene Komponente ? Wäre zu überlegen. Aber : schon mal selbst überlegt, was da alles zu tun wäre ? Das Label müssste als Subkomponente behandelt werden usw. Solange die Frage nicht geklärt ist, baue ich nicht noch irgendwas in eine Komponente und habe dann mit der denselben Ärger, wie ohne.
OT : nicht mal Luckie weiß alles. :mrgreen: |
Re: Rechteck füllen
TPanel und Color funktioniert m.E. nicht. Hast du schon mal probiert, einem Panel im OI eine andere Farbe zuzuweisen? Da passiert glaube ich rein gar nichts.
|
Re: Rechteck füllen
Hansa, ich kann in deinem Code-Fragment keine Stelle entdecken, an der du ein Panel färbst. Meiner Meinung nach zeichnest du auf dem Canvas des Formulars.
@smudo Warum sollte das nicht funktionieren? Ich muß allerdings zugeben, daß ich keine Erfahrungswerte über die Auswirkungen einer Manifest-Datei habe. Gruß Hawkeye |
Re: Rechteck füllen
Also :
Zitat:
Zitat:
Zitat:
Zitat:
Edit : Tags verbessert. Edit 2 : geht nicht. |
Re: Rechteck füllen
Mit "(Sender as TLabel)" greifst Du zwar auf das Panel zu, aber eben nur für die Position, wohin das Rechteck gezeichnet wird. "Canvas.FillRect" ist aber der Canvas des Formulars auf dem das Panel liegt.
|
Re: Rechteck füllen
Wie geahnt : der Vorschlag von WordsBG geht tatsächlich so ! :thumb: FillRect usw. macht mehr Ärger, als nötig und ist überflüssig. Zumindest für den Fall hier. Zweimal AS und das wars.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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