Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Form blendet sich einfach aus / Timer läuft nicht ab !!! (https://www.delphipraxis.net/82449-form-blendet-sich-einfach-aus-timer-laeuft-nicht-ab.html)

-=cats=- 13. Dez 2006 13:16


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:


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;
Gruß,
-=cats=- :coder:

SirThornberry 13. Dez 2006 13:21

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.

-=cats=- 13. Dez 2006 13:27

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:

SirThornberry 13. Dez 2006 13:34

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?

Neutral General 13. Dez 2006 13:38

Re: Form blendet sich einfach aus
 
Ist der Timer vielleicht schon von Programmstart an aus Versehen eingeschaltet?

inherited 13. Dez 2006 13:42

Re: Form blendet sich einfach aus
 
Er will es, aber erst nach dem Timer1.Interval abgelaufen ist.

-=cats=- 13. Dez 2006 13:43

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:

Zitat von inherited
Er will es, aber erst nach dem Timer1.Interval abgelaufen ist.

Ja genau. Wenn der Timer abgelaufen ist (so dachte ich mir das) soll sich die Form ausblenden.

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 :-(

inherited 13. Dez 2006 15:11

Re: Form blendet sich einfach aus
 
Welches Interval hat dein Timer?

-=cats=- 13. Dez 2006 15:16

Re: Form blendet sich einfach aus
 
Ich habe es auf 15000 gesetzt.

SirThornberry 13. Dez 2006 15:20

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.

-=cats=- 13. Dez 2006 15:24

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 ?

-=cats=- 14. Dez 2006 07:53

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:
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;
Leider hat das auch nichts genützt :-(
Form25 wird zwar eingeblendet, sie schließt
sich aber nicht ...

Weiß vielleicht jemand, woran das liegen könnte ?

Gruß,
-=cats=- :coder:

NormanNG 14. Dez 2006 08:16

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

-=cats=- 14. Dez 2006 08:20

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