Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   opendialog automatisch schließen (https://www.delphipraxis.net/173592-opendialog-automatisch-schliessen.html)

jangbu 6. Mär 2013 11:39

opendialog automatisch schließen
 
Hallo,

klingt vielleicht sinnlos, aber kann ein opendialog automatisch z.B. nach einer gewissen Wartezeit geschlossen, also einfach der Öffnen-button simuliert werden?

Natcree 6. Mär 2013 12:21

AW: opendialog automatisch schließen
 
versuch mal ne ttimercomponente setze die warte zeit ein und dann opendialogfenster schließen lassen

jangbu 6. Mär 2013 12:48

AW: opendialog automatisch schließen
 
genau das meine ich ja, wie kann ich von "extern" dem opendialog, der ja auf keypress wartet, von "außen" das ereignis unterschieben.

Natcree 6. Mär 2013 12:56

AW: opendialog automatisch schließen
 
habe nen code mach mal ne ttimer kompo rauf onclickereignis und setze den timer auf deinen Zeitraum ein
habs getestet funktioniert


procedure TForm1.Timer1Timer(Sender: TObject);
begin

keybd_event( VK_ESCAPE, Mapvirtualkey( VK_ESCAPE, 0 ), 0, 0);

keybd_event( VK_ESCAPE, Mapvirtualkey( VK_ESCAPE, 0 ), KEYEVENTF_KEYUP,0);
end;

DeddyH 6. Mär 2013 12:59

AW: opendialog automatisch schließen
 
Und wenn zwischendurch eine andere Anwendung den Fokus erhält?

[edit] Was aber funktionieren könnte:
Delphi-Quellcode:
PostMessage(OpenDialog.Handle, WM_SYSCOMMAND, SC_CLOSE, 0);
Das ist allerdings auch noch verbesserungswürdig, da der Dialog ja eine gewisse Zeit zum Öffnen braucht. [/edit]

Brisedarius 6. Mär 2013 13:08

AW: opendialog automatisch schließen
 
Hallo,

Am besten, schick die Message direkt an das Handle des OpenDialoges.

Etwa so:

SendMessage(opendialog1.Handle, WM_CLOSE, 0, 0);

Allerdings, wird der OpenDialog, mit WM_CLOSE einfach geschlossen, sp als ob der Benutzer auf Abbrechen geklickt hätte.

LG
Brisedarius

Natcree 6. Mär 2013 13:10

AW: opendialog automatisch schließen
 
procedure TForm1.Timer1Timer(Sender: TObject);
const
IDS_WNDTITLE = 'Öffnen';
var
hWnd: DWORD;
begin
hWnd := FindWindow(nil, IDS_WNDTITLE);
if hWnd <> 0 then
SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0)
end;
versuch mal den

DeddyH 6. Mär 2013 13:13

AW: opendialog automatisch schließen
 
FindWindow braucht man nicht, siehe mein Edit oben.

Dalai 6. Mär 2013 13:15

AW: opendialog automatisch schließen
 
Bedenkst du bitte auch, dass es den User verwirren wird, wenn sich ein solcher Dialog ohne erkennbaren Grund von allein schließt? Irgendwie kann ich mir keinen Anwendungsfall vorstellen, in dem sowas sinnvoll sein könnte (liegt aber bestimmt an mir).

MfG Dalai

Natcree 6. Mär 2013 13:17

AW: opendialog automatisch schließen
 
deddyh

Dein code funktioniert bei mir nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Seite 1 von 2  1 2      

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