![]() |
TOpendialog Größe ändern
Hi,
ich versuche grade die größe eines TOpendialog zu ändern...im Forum hab ich dazu Lösungen á la
Delphi-Quellcode:
gefunden, leider werden die Controls in dem dialog nicht mit resized.
SetWindowPos(GetParent(OpenDialog1.Handle), 0, 0, 0, width, Height, SWP_NOMOVE);
Gibt es eine Möglichkeit dies zu bewerkstelligen? in dem Thread ![]() Gruß Frank |
Re: TOpendialog Größe ändern
Zitat:
|
Re: TOpendialog Größe ändern
ich schau mir grade mal den source von der Komponente "TSzOpenDialog" (
![]() er setzt eine Konstante und erweitert die VCL-Options...
Delphi-Quellcode:
dieses weist er einem Flag (TOpenfilename.Flags, definiert in rtl\CommDlg.pas) zu.
const
OFN_ENABLESIZING = $00800000; OpenOptions: array [TOpenOption] of DWORD = ( OFN_READONLY, OFN_OVERWRITEPROMPT, OFN_HIDEREADONLY, OFN_NOCHANGEDIR, OFN_SHOWHELP, OFN_NOVALIDATE, OFN_ALLOWMULTISELECT, OFN_EXTENSIONDIFFERENT, OFN_PATHMUSTEXIST, OFN_FILEMUSTEXIST, OFN_CREATEPROMPT, OFN_SHAREAWARE, OFN_NOREADONLYRETURN, OFN_NOTESTFILECREATE, OFN_NONETWORKBUTTON, OFN_NOLONGNAMES, OFN_EXPLORER, OFN_NODEREFERENCELINKS, OFN_ENABLESIZING); TOpenOption = (ofReadOnly, ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofShowHelp, ofNoValidate, ofAllowMultiSelect, ofExtensionDifferent, ofPathMustExist, ofFileMustExist, ofCreatePrompt, ofShareAware, ofNoReadOnlyReturn, ofNoTestFileCreate, ofNoNetworkButton, ofNoLongNames, ofOldStyleDialog, ofNoDereferenceLinks, ofEnableSizing);
Delphi-Quellcode:
TOpenFilenameA = packed record
.... Flags: DWORD;
Delphi-Quellcode:
Würde gerne vom normalen Dialog ableiten, komme aber vermutlich nicht mehr an das flag ran...
with OpenFilename do
begin ... for Option := Low(Option) to High(Option) do if Option in FOptions then Flags := Flags or OpenOptions[Option]; habs mal so probiert:
Delphi-Quellcode:
will ungern wegen dem resizing eine Fremdkomponente verwenden. der DFM-Editor soll eigentlich nur Standard-kompos verwenden...also wenn es da eine SetWindowLong- oder CreateParams-Variante gibt, wär mir sehr geholfen...ansonsten gibts halt kein resizing ;)
procedure TForm1.Button1Click(Sender: TObject);
var DlgHwnd:Integer; const OFN_ENABLESIZING = $00800000; begin DlgHwnd:=GetParent(opendialog1.Handle); //auch ohne GetParent probiert SetWindowLong(DlgHwnd,GWL_STYLE,GetWindowLong(DlgHwnd,GWL_Style) or OFN_ENABLESIZING); opendialog1.execute; end; Gruß Frank |
Re: TOpendialog Größe ändern
keiner eine idee?
|
Re: TOpendialog Größe ändern
sieht so aus als hätte ich das Problem gelöst:
Delphi-Quellcode:
TMyOpenDialog = class(dialogs.TOpenDialog)
protected function TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool; override; end; implementation uses CommDlg; //TOpenFileName function TMyOpenDialog.TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool; const OFN_ENABLESIZING = $00800000; begin TOpenFilename(Dialogdata).Flags:=TOpenFilename(Dialogdata).Flags or OFN_ENABLESIZING; result:=inherited TaskModalDialog(DialogFunc,DialogData); end; //Edit: ich habe zwar jetzt das sizegrip zum manuellen resize (funktioniert super). leider fehlt mir aber noch die Möglichkeit, den Dialog programmgesteuert zu resizen, ich hatte gehofft, wenn das flag aktiv ist, passen sich die Controls auch beim setzen der Größe an... Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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