Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Panel - Farbe wechseln (https://www.delphipraxis.net/140892-panel-farbe-wechseln.html)

yasR 28. Sep 2009 13:18


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;

Neutral General 28. Sep 2009 13:27

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 ;)

yasR 28. Sep 2009 13:30

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

Neutral General 28. Sep 2009 13:31

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.

yasR 28. Sep 2009 13:34

Re: Panel - Farbe wechseln
 
merke aber gerade das es nicht klappt -.-

Neutral General 28. Sep 2009 13:36

Re: Panel - Farbe wechseln
 
Doch es klappt. Kann nur sein, dass 10ms zu kurz sind.

Was klappt denn nicht?

EDIT: Ah du brauchst wahrscheinlich DelayDelay bzw ein Application.ProcessMessages nach dem ersten Farbwechsel.

Larsi 28. Sep 2009 13:38

Re: Panel - Farbe wechseln
 
Delphi-Referenz durchsuchendelay Es gibt in der Code Lib einen Beitrag dazu. Das ist eine Alternative zu Sleep mit dem Unterschied das das Programm nicht einfriert während der Zeit. Weiß nicht ob das bei so kurzen Zeit einen Unterschied macht.

yasR 28. Sep 2009 13:40

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 ^^

Neutral General 28. Sep 2009 13:42

Re: Panel - Farbe wechseln
 
Ich hab ja gesagt du sollst es so machen:

Delphi-Quellcode:
procedure TForm5.Panel11Click(Sender: TObject);
begin
  Panel11.Color := RGB(195,195,195);
  Application.ProcessMessages;
  sleep(10); // mal etwas mehr
  Panel11.Color := clWhite;
end;
Das Programm kommt sonst nicht dazu das Fenster neu zu malen bevor sleep ausgeführt wird und man sieht nichts von der Farbänderung.

Edit: Delay ist quasi ein Sleep mit eingebautem Application.ProcessMessages ;)

himitsu 28. Sep 2009 13:44

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 03:19 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz