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/)
-   -   Delphi TTaskDialog in Delphi 2007 (https://www.delphipraxis.net/98656-ttaskdialog-delphi-2007-a.html)

alcaeus 30. Aug 2007 16:12


TTaskDialog in Delphi 2007
 
Hallo,

ich will einen TTaskDialog mit ProgressBar anzeigen, waehrend ich versuche eine Datenbank-Verbindung aufzubauen. Leider ist der Dialog modal, d.h. ich kann nicht einfach Execute() ausfuehren und in der Zwischenzeit die DB-Verbindung herstellen.
Andererseits kann ich aber auch nicht die DB-Verbindung aufbauen und anschliessend den Dialog anzeigen, das waere ja irgendwie sinnbefreit. Weiss jemand vielleicht, wie ich einen nicht-modalen TaskDialog anzeigen kann, der da ist waehrend die DB-Verbindung aufgebaut wird?

Greetz
alcaeus

mkinzler 30. Aug 2007 16:13

Re: TTaskDialog in Delphi 2007
 
Vielleicht durch die Verwendung von Threads?

alcaeus 30. Aug 2007 16:14

Re: TTaskDialog in Delphi 2007
 
Hmm, als allerletzte Notloesung ja, aber wenns geht wuerd ich das gerne vermeiden, ist dann doch etwas overkill :oops:

Greetz
alcaeus

Bernhard Geyer 30. Aug 2007 16:15

Re: TTaskDialog in Delphi 2007
 
Wieso TTaskdialog? Nimm deinen eigenen Dialog und zeig ihn Nicht-Modal (.Show) an.

hoika 30. Aug 2007 16:25

Re: TTaskDialog in Delphi 2007
 
Hallo,

siehe mein Posting zu
http://www.delphipraxis.net/internal...ight=showmodal

Damit wird der Dialog "semi-modal" geöffnet,
man kann ihn aber trotzdem noch Bearbeiten,
z.b. ein Connect machen.


Heiko

alcaeus 30. Aug 2007 16:38

Re: TTaskDialog in Delphi 2007
 
Zitat:

Zitat von Bernhard Geyer
Wieso TTaskdialog? Nimm deinen eigenen Dialog und zeig ihn Nicht-Modal (.Show) an.

Naja, beim TaskDialog hab ich bereits die MarqueeProgressBar, die zusaetzlichen Infos, usw. Waer schoen wenn ich auf die fertige Loesung zurueckgreifen koennte.

Zitat:

Zitat von hoika
Damit wird der Dialog "semi-modal" geöffnet,
man kann ihn aber trotzdem noch Bearbeiten,
z.b. ein Connect machen.

An sich eine gute Idee, das wird mit dem TaskDialog aber leider nicht funktionieren, da dieser selbst DisableTaskWindows() ausfuehrt und sich ueber die API-Funktionen anzeigt.

BTW, weiss jemand ob der TaskDialog auch unter direkter Verwendung der API-Funktionen modal ist? In dem Fall wuerde ich einfach die entsprechenden API-Funktionen fuer den Aufruf verwenden.

Greetz
alcaeus

BenjaminH 30. Aug 2007 17:17

Re: TTaskDialog in Delphi 2007
 
Zitat:

Zitat von alcaeus
BTW, weiss jemand ob der TaskDialog auch unter direkter Verwendung der API-Funktionen modal ist? In dem Fall wuerde ich einfach die entsprechenden API-Funktionen fuer den Aufruf verwenden.

Ich geh mal stark davon aus, denn schließlich gibt der Rückgabewert an, was der User geklickt hat und in den Beispielcodes werden die Rückgabewerte unmittelbar nach dem Aufrufen der Funktion abgefragt.

alcaeus 30. Aug 2007 17:27

Re: TTaskDialog in Delphi 2007
 
Ok, also doch Threads.

Ich habs mittlerweile auch hingekriegt, was zu machen waehrend der Dialog angezeigt wird. Allerdings krieg ichs nicht gebacken, den Dialog zu schliessen sobald die Arbeit beendet ist. Ich kann notfalls auch anzeigen, dass die Verbindung erfolgreich war, aber mir waer lieber wenn ich das anders loesen koennte :-?

TaskDialog.Buttons ist leider leer, den Button von Hand anzuklicken waer meine erste Idee gewesen :(

Greetz
alcaeus

Ghostwalker 30. Aug 2007 17:43

Re: TTaskDialog in Delphi 2007
 
Hier evtl. eine Alternative:

http://www.jed-software.com/

Dort findest du den TJSDialog, der den Taskdialog nachbildet und noch etwas mehr kann. Unter anderem Funktioniert er nicht nur unter Vista, sondern auf allen Systemen :)

Codewalker 24. Sep 2009 18:28

Re: TTaskDialog in Delphi 2007
 
Zitat:

Zitat von alcaeus
Ich habs mittlerweile auch hingekriegt, was zu machen waehrend der Dialog angezeigt wird. Allerdings krieg ichs nicht gebacken, den Dialog zu schliessen sobald die Arbeit beendet ist. Ich kann notfalls auch anzeigen, dass die Verbindung erfolgreich war, aber mir waer lieber wenn ich das anders loesen koennte

Wie hast du das hinbekommen? Ich möchte nur ein Fortschrittsfenster damit bauen und da sind Threads ein wenig Overkill. Und das mit dem Schließen würde ich auch gerne wissen

Edit: Das Schließen geht mit
Delphi-Quellcode:
SendMessage(TaskDialog.Handle,WM_CLOSE,0,0);


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz