![]() |
Taskleiste - Buttonblinken
Hallo alle zusammen!
Hätte eine Frage, hab schon gesucht, aber nicht gefunden... Ich möchte gerne den Button in der Taskleiste blinken lassen, so wies manche Programme ja tun, um auf sich aufmerksam zu machen. Blos wie? mfg Sonic :?: |
Re: Taskleiste - Buttonblinken
Code:
1. Parameter = Handle der Anwendung (bei VCL, IMHO "Application.Handle")
BOOL FlashWindow(
HWND hWnd, BOOL bInvert ); 2. Parameter = true, dann blinkt´s |
Re: Taskleiste - Buttonblinken
Danke erstmal,
Habe schon mal ausprobiert. Verhält sich aber ein bisschen komisch - Blinkt zwar, aber... Ich habe Windows XP, weiß nicht ob das eine Rolle spielt? Wenn ich folgenden Code verwende, dann leuchtet der Taskleisten-Button am Schluss nach dem das Fenster wieder maximiert ist immer!? zu Beginn: Timer1 = TTimer; Timerintervall = 500 Enabled = FALSE
Code:
procedure TForm1.Button1Click(Sender: TObject); begin Application.Minimize; Timer1.Enabled := TRUE; end; procedure TForm1.Timer1Timer(Sender: TObject); begin FlashWindow(Application.Handle, TRUE); end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnRestore := DoOnRestoreApplication; end; procedure TForm1.DoOnRestoreApplication(Sender : TObject); begin Timer1.Enabled := FALSE; end; Mfg Sonic :gruebel: |
Re: Taskleiste - Buttonblinken
Ich kenn mich da ja nicht aus, aber vielleicht brauchst du dazu gar keinen Timer, sondern musst, wenn es aufhören soll zu blinken einfach
Delphi-Quellcode:
schreiben.
FlashWindow(Application.Handle, FALSE);
Ich gehe davon aus, dass das einfach nur dem System sagt, dass der Button jetzt blinken soll, bis man ihm sagt, es soll damit aufhören. Man liest sich, Stanlay :hi: |
Re: Taskleiste - Buttonblinken
Eben nicht.
Zitat:
|
Re: Taskleiste - Buttonblinken
Zitat:
|
Re: Taskleiste - Buttonblinken
Ja, war ja auch nicht böse gemeint. Habe eben bloß fix im PSDK nachgeschaut ... ich geb´s ja zu ... :cheers:
|
Re: Taskleiste - Buttonblinken
In der Hilfe steht das man einen Timer dafür braucht...
Ich bin draufgekommen, das es manchmal schon funktioniert. Ich hab auch schon, folgendes versucht...
Delphi-Quellcode:
Also am Schlss nochmal FALSE schalten. Machts aber noch schlimmer.
procedure TForm1.DoOnRestoreApplication(Sender : TObject);
begin * Timer1.Enabled := FALSE; FlashWindow(Application.Handle, FALSE); end; Hab die Funktion auch schon einzeln nur in ein Button Click getan, um zu sehen was sie macht. Mir unklar :gruebel: Mfg Mike |
Re: Taskleiste - Buttonblinken
Die Funktion invertiert die Titelleiste des Fensters (bzw. den Button in der Startleiste) genau einmal. Aus einer aktiven Titelzeile wird so
Delphi-Quellcode:
eine inaktive. Um den Vorgang umzukehren und die Titelzeile wieder als aktiv darzustellen, musst du die Funktion noch einmal aufrufen - und genau so wie zuvor:
FlashWindow(self.Handle,true);
Delphi-Quellcode:
"false" als zweiter Parameter bedeutet nur, dass die Titelzeile in ihren ursprünglichen Zustand versetzt wird. War sie also inaktiv, wird sie das auch wieder. War sie aktiv, dann wird sie durch "false" eben wieder aktiv.
FlashWindow(self.Handle,true);
Ein typisches Geblinke der Fenstertitelzeile via Button-Klick und ohne Timer:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer; begin for i := 1 to 4 do begin FlashWindow(self.Handle,true); if(i < 4) then sleep(60); end; end; |
Re: Taskleiste - Buttonblinken
Ich werfe noch mal ganz mutig ein FlashWindowEx in die Runde. *werf*
Da kann man alles einstellen, wie oft, wie lange, wo, warum, weshalb, ... |
Re: Taskleiste - Buttonblinken
Zitat:
Zitat:
:) |
Re: Taskleiste - Buttonblinken
Ein FlashWindowEx Beispiel gibt's
![]() |
Re: Taskleiste - Buttonblinken
Außerdem gibt´s ein Problem bei (oder besser: mit) der VCL.
Membervariable "hwnd" definiert das Handle des Fensters das Blinken soll. Bei der VCL gibt´s aber zwei Fenster. Die Form (Form.Handle, self.Handle) und der Button in der Taskleiste, für den das TApplication-Objekt verantwortlich ist (Application.Handle). Demzufolge blinkt immer nur eins der beiden, obwohl es das Flag "FLASHW_ALL" Zitat:
Bei nonVCL gibt´s das Problem nicht. |
Re: Taskleiste - Buttonblinken
Hallo!
Danke für die vielen Tipps. Habe mich für FlashWindowEx entschieden, weils einfacher das erfüllt, was ich brauche. Das mit dem leuchten am Schluss ist bei beiden so, hab aber rausgefunden wie das gehen soll. Wenn die Applikation minimiert ist, dann löst man das blinken aus, wie auch immer. Stopt man das Blinken oder ist der Count erreicht (FlashWindowEx), bleibt der Button leuchtend, bis man die Application wieder maximiert. Das ist scheinbar so. Dann ist wieder alles normal. Mfg Sonic. :-D |
Re: Taskleiste - Buttonblinken
Wie bringe ich das Taskleistensymbol dazu nur BLAU zu werden, also ohne das es blinkt. Irgendwie steckt die Antwort hier im Thread drin, aber irgendwie komme ich nicht drauf :-(
|
Re: Taskleiste - Buttonblinken
Inzwischen selber gelöst :-)
Man darf halt nicht gleich nach FlashWindow den Taskleistentext ändern, dann wird alles wieder normal dargestellt (FlashWindow mit false muß dann trotzdem gemacht werden, weil intern ist es trotzdem noch markiert). |
Re: Taskleiste - Buttonblinken
:wall: hab dreimal hintereinander denselben Blinkzeitpunkt erwischt so das es klappte, nur beim vierten mal grad eben natürlich nicht. Na gut so einfach geht es dann doch nicht...
|
Re: Taskleiste - Buttonblinken
Moin!
Hallo erstmal, bin der Neue hier :sharkylinchen: Hab noch eine Lösung für das Blinken vom Button (Taskleiste)gefunden. Ist zwar nicht hochentwickelt, aber wenn man das entsprechende Form mit einem Timer versieht und dann folgendes tut:
Code:
springt zwar das Form gleich wieder nach vorne, aber wenn man es wieder nach hinten schiebt, blinkt der Button in der Leiste.
procedure TForm1.Timer1Timer(Sender: TObject);
begin Application.BringToFront; end; Greetz, Matze |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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