![]() |
Form blendet sich einfach aus / Timer läuft nicht ab !!!
Hi :hi:
Ich wollte eine Form einblenden lassen, wenn in einem bestimmten Ordner eine Datei geändert / gelöscht ( eingefügt (was auch immer) wird. Also dachte ich mir, mache ich das über das AlphaBlend (das Einblenden). Ich habe den Wert auf 0 gesetzt und erhöhe ihn in einer Schleife solange, bis die Form komplett zu sehen ist. Das funktioniert auch alles. Jetzt wollte ich, das die Form so für ca. 15 Sek. angezeigt wird, und sich danach wieder schließt. Dafür habe ich einen Timer genommen und seine Zeit entsprechend eingestellt. Nur blendet sich die Form jetzt nach ein paar Sekunden einfach aus. Den Timer beachtet sie scheinbar gar nicht. Ich finde den Fehler einfach nicht ... Hier ist mal mein Quellcode: Ich hoffe, ihr könnt mir vielleicht helfen ...
Delphi-Quellcode:
Gruß,procedure TForm19.ShellChangeNotifier1Change; var i : integer; begin Form25.Show; for i := 0 to 255 do begin Form25.AlphaBlendValue := Form25.AlphaBlendValue + 1; if (Form25.AlphaBlendValue = 255) then Timer1.Enabled := true; end; end; procedure TForm19.Timer1Timer(Sender: TObject); begin Form25.Close; Form25.AlphaBlendValue := 0; Form19.SetFocus; end; -=cats=- :coder: |
Re: Form blendet sich einfach aus
Du schließt das Formular im Timer-Ereignis doch einfach. Zudem setzt du den Alphavalue sofort auf 0 wodurch es auch zu 100% transparent wird.
|
Re: Form blendet sich einfach aus
Hmm ... ja schon.
Aber sie soll sich ja auch schließen, wenn die Zeit abgelaufen ist ... Oder ist das TimerEreignis falsch ? Ich dachte, das wird dann aktiv, wenn der Timer abgelaufen ist ... :gruebel: |
Re: Form blendet sich einfach aus
ich verstehs nicht ganz. Du willst das dein Form sich nach einer gewissen zeit wieder ausblendet. Gleichzeitig schreibst du aber auch das sich dein Form nach ein paar Sekunden ausblendet. Willst du das denn oder doch nicht?
|
Re: Form blendet sich einfach aus
Ist der Timer vielleicht schon von Programmstart an aus Versehen eingeschaltet?
|
Re: Form blendet sich einfach aus
Er will es, aber erst nach dem Timer1.Interval abgelaufen ist.
|
Re: Form blendet sich einfach aus
Ok, ich kann das glaub ich grad nicht ganz rüber bringen :-)
Ich schreibe einfach mal die einzelnen Schritte auf, die mein Programm machen soll :arrow: Programm wird gestartet (Form19) :arrow: Mein ShellChangeNotifier stellt fest "Oh, da ist gerade eine Datei eingegangen" :arrow: Form25 blendet sich langsam ein (über AlphaBlend). Sie wird also immer deutlicher zu erkennen. :arrow: Damit der Benutzer sie nicht wegklicken muss, bleibt sie für 15 Sekunden eingeblendet (voll sichtbar --> AlphaBlendValue = 255) :arrow: Die 15 Sekunden sind um, also --> weg mit Form25 Ich hoffe, so ist es etwas klarer ... Der Timer sitzt auf false. (Am Anfang). Habe ich im OI eingestellt. //edit: Zitat:
Kann es vielleicht an dem Event vom ShellChangeNotifier liegen ? Vielleicht kann der ja nur ganz kurz eine Aktion ausführen ... :gruebel: :?: :?: // edit 3: So, ich habe jetzt mal ein Sleep eingebaut. Jetzt funktioniert es. Das Problem ist nur, das auf einmal keine Labels mehr auf der Form angezeigt werden. Ich sehe nur den Hintergrund der Form :-( |
Re: Form blendet sich einfach aus
Welches Interval hat dein Timer?
|
Re: Form blendet sich einfach aus
Ich habe es auf 15000 gesetzt.
|
Re: Form blendet sich einfach aus
Kann es sein das du nur nicht das blenden des Forms siehst weil deine Schleife ersten zu schnell durchläuft und zweites die Messages zwischendurch nicht verarbeitet werden? Dadurch hat es dann für dich den Anschein das die Funktionalität des Timers nicht stimmt.
|
Re: Form blendet sich einfach aus
Also, das immer heller werden der Form sehe ich.
Geht zwar wirklich sehr schnell, aber das macht ja nichts. Hauptsache, man kann es ein bisschen sehen. Ich dachte mir, ich bau mir mal Nachrichten dazwischen, mit ShowMessage('Hallo'); usw. Damit ich sehe, was er macht und was nicht. Dadurch habe ich rausgefunden, das die Form da bleibt bis ich die Nachricht, die ich danach aufrufe (im Shell...Change-Event) wegklicke. Und dann hab ich bei der TimerMethode auch nochmal eine Nachricht reingesetzt .. Die wird nicht angezeigt ! Scheinbar wird die Methode gar nicht aufgerufen ... :gruebel: Kann das sein ? |
Re: Form blendet sich einfach aus / Timer läuft nicht ab !!!
Ich muss jetzt nochmal mit diesem Thema anfangen ... :?
Also, hat vielleicht jemand eine Idee, warum mein Timer nicht abläuft ? Ich finde den Fehler einfach nicht :-( Habe den Quellcode nochmal so geändert:
Delphi-Quellcode:
Leider hat das auch nichts genützt :-(
procedure TForm19.ShellChangeNotifier1Change;
begin Form25.Show; Timer1.Enabled := true; end; procedure TForm19.Timer1Timer(Sender: TObject); var i : integer; begin for i := 255 to 0 do begin Form25.AlphaBlendValue := Form25.AlphaBlendValue - 1; end; if(Form25.AlphaBlendValue = 0) then begin Form25.Close; Timer1.Enabled := false; end; end; Form25 wird zwar eingeblendet, sie schließt sich aber nicht ... Weiß vielleicht jemand, woran das liegen könnte ? Gruß, -=cats=- :coder: |
Re: Form blendet sich einfach aus / Timer läuft nicht ab !!!
Hi,
Delphi-Quellcode:
procedure TForm19.Timer1Timer(Sender: TObject);
var i : integer; begin Timer1.Enabled := false; // den Timer würde ich sofort ausschalten... for i := 255 to 0 do begin // hier muss wohl DOWNTO rein // Form25.AlphaBlendValue := Form25.AlphaBlendValue - 1; Form25.AlphaBlendValue := I; // damit ist es gleich, was vorher drin war... end; // if(Form25.AlphaBlendValue = 0) // then // begin Form25.Close; // und hier die Form immer schließen, sie ist ja eh unsichtbar wg. der Schleife oben // end; end; /edit: Schreibfehler korrigiert |
Re: Form blendet sich einfach aus / Timer läuft nicht ab !!!
:hello: Juhuuu !!! Es funktioniert !!!
Vielen Dank für Deine Hilfe !!!!!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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