Hallo,
ich bruete seit heute Morgen ueber der Implementierung eines TCommonDialog Dialogs.
Das Problem ist folgendes:
Ich habe eine Klasse von TCommonDialog abgeleitet und ein TForm (TTntForm) eingefuegt, welches lediglich eine ListBox (TTntExtListView) enthaelt. Wenn man auf einen Listeintrag doppelklickt, soll der Dialog mit IDOK geschlossen werden.
Die 'OnDoppelClick'-Methode enthaelt folgenden Code:
Delphi-Quelltext
1: 2:
| if elvStepList.Selected <> nil then EndDialog(GetParent(Handle), IDOK); |
Soviel ich weiss passiert danach folgendes:
Der Handle des TTntForm wird auf 0 gesetzt. Anscheinend ist dieses TTntForm dann der Meinung, sich neu erstellen zu muessen, was in der Methode "TTntForm.CreateWindowHandle" schief geht.
Ergebnis ist ein: "EWin32Error 'Win32 Error Code: 1400. Invalid window handle.' ". Der Debugger landet in der SysUtils-Methode: RaiseLastWin32Error.
Sowohl der TCommonDialog Dialog, als auch das TTntForm Object sind globale Variables. Die TTntForm wird in der ExplorerHook Methode erstellt.
Mir erscheint das Arbeiten mit dieser TCommonDialog Klasse recht umstaendlich. Sicherlich kann da 'ne ganze Menge falsch sein. Allerdings muesste ich ziemlich viel Code in diesen Text einfuegen, um alle Informationen zu geben.
Es wuerde mich sehr freuen, wenn jemand mir einen Tip geben koennte, wo das Problem liegen koennte.
Vielen Dank im voraus
Lars Beuth
Moderiert von
Christian S.: Quote- durch Delphi-Tags ersetzt