![]() |
AW: MessageDlg über den Default-Button automatisch schließen (MeinCustomDialog.Close;
Zitat:
Gruß K-H |
AW: MessageDlg über den Default-Button automatisch schließen (MeinCustomDialog.Close;
Das Wort fällt jetzt zum ersten Mal. Was genau meinst du damit? Klingt interessant.
|
AW: MessageDlg über den Default-Button automatisch schließen (MeinCustomDialog.Close;
So wie mir bekannt ist hat ein Dialog seine eigene Message Queue.
Demnach sollte ein einfaches WM_DESTROY reichen. Dort wird dann PostQuitMessage(0); ausgelöst und die Message Queue beendet. Zumindest haben meine Selbsterstellten Dialoge diese besagte Message Queue. gruss |
AW: MessageDlg über den Default-Button automatisch schließen (MeinCustomDialog.Close;
Zitat:
VCL-Dialoge haben standardmäßig niemals eine eigene Message-Queue, schon alleine deswegen, da die VCL nicht thread-save ist. Da läuft alles im Hauptthread und in dessen Queue. |
AW: MessageDlg über den Default-Button automatisch schließen (MeinCustomDialog.Close;
Zitat:
Example:
Delphi-Quellcode:
Wird dann einfach so aufgerufen..
function TSkinBrowseForFolder.ShowBrowseFolderDialog: TBrowseFolderDialogConstant;
var Msg: TMsg; begin MoveWindow(Handle, x, y, rc.Right + 1, rc.Bottom + 1, True); SkinEngine.ShowMainWindow(Handle, 0); EnableWindow(HParent, False); // Windows Messagen verarbeiten while GetMessage(Msg, 0, 0, 0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; EnableWindow(HParent, true); Result := DlgConstant; end; Ausschnitt..
Delphi-Quellcode:
IDM_AddFolder:
begin if not Assigned(BrowseForFolder) then AddBrowseForFolderControls(MainHandle); BrowseFolderDialogConstant := BrowseForFolder.ShowBrowseFolderDialog; if not (BrowseFolderDialogConstant = bffdcCancel) then begin dir := BrowseForFolder.OutPutDir; Der Dialog beendet sich dann selbst nach einem Click als Beispiel auf "Cancel"
Delphi-Quellcode:
Ok hat jetzt weniger mit seinem Problem zu tun..
ID_BTN_CANCEL:
begin SkinEngine.SetCTLText(edInput.Handle, ''); BrowseForFolder.DlgConstant := bffdcCancel; SendMessage(WinHandle, WM_DESTROY, 0, 0); DriveList.DestroyWindow; DriveList := nil; BroForFolderHandle := 0; end; Daher bin ich raus ;) gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 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