![]() |
Aktion nach einer bestimmter Zeit durchführen
Hallo,
mit einem Klick auf ein Button wird den ganzen Bildschirm kopiert Ich möchte aber, dass mein Form nicht mitkopiert werden, deswegen habe ich folgendes gemacht :
Delphi-Quellcode:
Trotzdem wird mansch mal Form1 erwischt :mrgreen:
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.Hide;// Form1 verstecken // dann kommt der Code um den Bildschirm zu kopieren ... Form1.Show; // Form1 wieder sichtbar machen end; end. Also ich möchte gerne Form1 ein paar Sekunden (und nicht Bruchsekunde) ausblenden Oder gibt es eine andere Idee? (Ich möchte zuerst nicht einen Timer verwenden :mrgreen:) |
Re: Aktion nach einer bestimmter Zeit durchführen
Hilft
![]() |
Re: Aktion nach einer bestimmter Zeit durchführen
Lass ihn eine Sekunde warten... ;) Oder wie auch immer, dann sollte Dein Form weg sein...
Delphi-Quellcode:
LG, Markus
Sleep(1000);
|
Re: Aktion nach einer bestimmter Zeit durchführen
Da bei Sleep() das komplette Programm einfriert, würde ich darauf tippen, dass es damit auch nicht zuverlässig funktioniert.
|
Re: Aktion nach einer bestimmter Zeit durchführen
Hmm, da könntest Du natürlich richtig liegen... Jedoch wäre es einen Versuch wert ;)
LG, Markus |
Re: Aktion nach einer bestimmter Zeit durchführen
wie kann ich den Procedure delay über mein Button aufrufen?
Delphi-Quellcode:
{Uses WINPROCS}
procedure TForm1.Delay(ms: Longint); {ms = milliseconds} var TimeOut: Longint; begin TimeOut:= GetTickCount + ms; While GetTickCount < TimeOut do begin {... do something or do nothing} end; end; |
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
Kann man nicht das Form für eine bestimmte Zeit ausblenden? |
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.Hide;// Falsch !!! Hide; // Richtig Self.Hide; // Auch richtig |
Re: Aktion nach einer bestimmter Zeit durchführen
Na, probier es aus. Trial-and-Error ist ne feine Sache für Anfänger. Dein Programm kommt ja offensichtlich nicht nach, das Form verschwinden zu lassen, bevor Du einen Screenshot machst. Ob Sleep() funktioniert oder Delay() weiß ich nicht - versuch es. Jedenfalls:
Delphi-Quellcode:
LG, Markusprocedure TForm1.Delay(ms: Longint); {ms = milliseconds} var TimeOut: Longint; begin TimeOut:= GetTickCount + ms; While GetTickCount < TimeOut do begin {... do something or do nothing} end; end; procedure TForm1.Button1Click(Sender: TObject); begin Self.Hide; Delay(1000); //oder so... //Was auch immer... Self.Show; end; |
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
Ich möchte das Form (das Programm) nicht ausblenden sondern für einer bestimmten Zeit ausblenden. |
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
|
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
Trotzdem bekomme ich die Meldung "Undeclard delay" !!! |
Re: Aktion nach einer bestimmter Zeit durchführen
Kollege: lies ein Tutorial. Damit es für eine bestimmte Zeit ausgeblendet ist, musst Du es ausblenden und dann wieder einblenden, nachdem Du deinen Screenshot gemacht hast. Damit dein Form dann auch wirklich weg ist, musst Du ein bisschen warten.
Delphi-Quellcode:
Ist nicht besonders elegant. Klar, es funktioniert und deinem Compiler ist es scheiß-egal, ob da Form1. oder Self. steht - sollte man aber nicht machen...
Form1.Hide;
LG, Markus |
Re: Aktion nach einer bestimmter Zeit durchführen
Wieso eigentlich "WinProcs". Hast Du neuerdings Delphi 1 am Start? Die beiden (D1-)Units WinProcs und WinTypes sind seit Delphi 2 unter Windows zusammengefasst. Außerdem weiß ich eh nicht, wieso Du glaubst, Du brauchst die in Deiner uses-Klausel.
|
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
|
Re: Aktion nach einer bestimmter Zeit durchführen
takaky, Delay ist eine funktion aus der CodeLibrary, und wurde oben schon mal gepostet
|
Re: Aktion nach einer bestimmter Zeit durchführen
Reicht es nicht, wenn man ein Application.ProcessMessages einfügt? So hab ich das bisher immer gemacht oder ist das schon veraltet?
MFG Lorenz |
Re: Aktion nach einer bestimmter Zeit durchführen
Hallo
wie wärs mit dem guten alten "Application.ProcessMessages;"
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.Hide;// Form1 verstecken Application.ProcessMessages; // dann kommt der Code um den Bildschirm zu kopieren ... Form1.Show; // Form1 wieder sichtbar machen end; |
Re: Aktion nach einer bestimmter Zeit durchführen
Oh je sorry, ein dublette, habe die Antwort von meinem vorredner übersehen ...snüff... :oops:
|
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
|
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
Wie ich sehe, ich muss den Timer verwenden und fertig. --- |
Re: Aktion nach einer bestimmter Zeit durchführen
was spricht gegen delay?=
|
Re: Aktion nach einer bestimmter Zeit durchführen
Zitat:
|
Re: Aktion nach einer bestimmter Zeit durchführen
Füge die
![]()
Delphi-Quellcode:
Edit:
Delay(500);
![]() |
Re: Aktion nach einer bestimmter Zeit durchführen
oh mann...
Delphi-Quellcode:
alles schön vorgekaut wie taktaky das mag :!:
procedure delay(msec:longint);
var start,stop:longint; begin start := gettickcount; repeat stop := gettickcount; application.processmessages; until (stop - start ) >= msec; end; procedure TForm1.Button1Click(Sender: TObject); begin Hide; // Form1 verstecken Delay(2000); // 2 sekunden warten DoScreenshot; // dann kommt der Code um den Bildschirm zu kopieren Show; // Form1 wieder sichtbar machen end; |
Re: Aktion nach einer bestimmter Zeit durchführen
Vielen Dank!
Du hast den Code für mich nicht nur vorgekaut sondern auch mit einem Glas Wasser :mrgreen: --- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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