![]() |
Panel - Farbe wechseln
Hey,
mein Panel soll nach einem OnClick Ereignis für kurze Zeit (ca. 10 Millisekunden) eine andere Farbe bekommen. Gibt es dafür eventuell schon fertige Routinen oder könnt ihr mir sagen wie man das löst?
Delphi-Quellcode:
procedure TForm5.Panel10Click(Sender: TObject);
begin end; |
Re: Panel - Farbe wechseln
Weißt du wie du generell die Farbe änderst?
Du musst das Problem in kleinere unterteilen. Und wenn du bei nem Unterproblem nicht weißt, wie dus machen kannst, dann kannst du hier in der DP suchen und wenn du nichts gefunden hast darfst du fragen ;) Also ich helfe dir mal: Farbe wechseln Warten Farbe zurücksetzen Das ist dein "Schlachtplan" wenn du die Farbe eines Panels ändern kannst dann hast du schon 2/3 geschafft ;) |
Re: Panel - Farbe wechseln
procedure TForm5.Panel10Click(Sender: TObject);
begin Panel10.Color := RGB(195,195,195); sleep(10); Panel10.Color := clred; end; ist das denn elegant? ;-P |
Re: Panel - Farbe wechseln
Klappt doch^^
Elegant.. joo. Wüsste nicht wie mans wirklich anders machen sollte. Du kannstes natürlich noch in ne procedure verbauen. Aber ansonsten hätte ichs jetzt auch so gemacht. |
Re: Panel - Farbe wechseln
merke aber gerade das es nicht klappt -.-
|
Re: Panel - Farbe wechseln
Doch es klappt. Kann nur sein, dass 10ms zu kurz sind.
Was klappt denn nicht? EDIT: Ah du brauchst wahrscheinlich ![]() |
Re: Panel - Farbe wechseln
![]() |
Re: Panel - Farbe wechseln
procedure TForm5.Panel11Click(Sender: TObject);
begin Panel11.Color := clGreen; // RGB(195,195,195); sleep(5000); // mal etwas mehr ;-) Panel11.Color := clWhite; end; nach dieser Procedure klappt es aber nicht o.O. Es passiert nichts ;-( EDIT: Okay, ich werde mal Delay testen ^^ |
Re: Panel - Farbe wechseln
Ich hab ja gesagt du sollst es so machen:
Delphi-Quellcode:
Das Programm kommt sonst nicht dazu das Fenster neu zu malen bevor sleep ausgeführt wird und man sieht nichts von der Farbänderung.
procedure TForm5.Panel11Click(Sender: TObject);
begin Panel11.Color := RGB(195,195,195); Application.ProcessMessages; sleep(10); // mal etwas mehr Panel11.Color := clWhite; end; Edit: Delay ist quasi ein Sleep mit eingebautem Application.ProcessMessages ;) |
Re: Panel - Farbe wechseln
Da du ja nun schon ein Bitmap als Hintergrund hast, zeichne dieses mit der anderen Hintergrundfarbe neu, starte einen Timer und zeichne es dann wieder mit der alten Farbe, aber bei 10ms könnte man den Timer weglassen und einfach nur ein Sleep verwenden.
Die Hintergrundfarbe kannst du eh ändern, wie du willst, bei deinen abgerundeten Panels würde man die eh nicht sehn (versteckt sich ja hinter dem Bitmap) und selbst bei einem normalen Panel übernimmt oftmals das (XP)-Design die Darstelltung, welches nicht grad die Angabe des zugehörigen Color-Attributes beachtet. [edit] das Zuweisen von Color lößt nicht sofort ein Neuzecihnen aus, das wirst du Manuell anstoßen müssen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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