![]() |
TSaveDialog, OnTypeChange, FileName zur Laufzeit ändern
Hallo #,
folgender Code wird dem OnTypeChanged eines TSaveDialog zugewiesen,
Delphi-Quellcode:
In der Hlfe steht es auch schön drin
{ filter type changed }
procedure TForm1.DoCommonExportToXLS_TypeChange(Sender: TObject); var sFileName : String; sFileExt : String; begin try Assert(ExcelFileDialog<>NIL, 'ExcelFileDialog=NIL'); if ExcelFileDialog=NIL then Exit; // xlsx if ExcelFileDialog.FilterIndex=2 then begin sFileName := ExcelFileDialog.FileName; sFileExt := ExtractFileExt(sFileName); if sFileExt<>'.xlsx' then begin sFileName:= ChangeFileExt(sFileName, '.xlsx'); ExcelFileDialog.FileName:= sFileName; // klappt nicht end; end; except end; end; { TForm1.DoCommonExportToXLS_TypeChange } Zitat:
Wie kann ich denn nun den Namen doch noch ändern, ohne gleich gross mit Hooks (?) rumzubasteln oder wie bei "CheckBox zu TSaveDialog" hinzufügen rumzufummeln. Danke Heiko |
Re: TSaveDialog, OnTypeChange, FileName zur Laufzeit ändern
Du könntest doch direkt den Text des Eingabefeldes ändern, wenn du das möchtest. ;-)
|
Re: TSaveDialog, OnTypeChange, FileName zur Laufzeit ändern
Hallo,
will ich ja ;) CDM_GETFILEPATH wird zum Ermitteln benutzt, CDM_SETFILEPATH gibt es aber nicht. Nun ja, sooo wichtig ist das nun doch nicht. Heiko |
Re: TSaveDialog, OnTypeChange, FileName zur Laufzeit ändern
Hallo,
Zitat:
Kann man davon ausgehen, dass die Handles (Ids) in allen Windows-Versionen gleich sind ? Heiko |
Re: TSaveDialog, OnTypeChange, FileName zur Laufzeit ändern
Hallo,
wer lange sucht.
Delphi-Quellcode:
Original-Link im Quellcode
function GetWndText(Ctrl:HWnd): String;
var i : Integer; begin Result:= ''; try i:=SendMessage(Ctrl,WM_GETTEXTLENGTH,0,0); SetLength(Result,i); SendMessage(Ctrl,WM_GETTEXT,i+1,DWord(Result)); except end; end; { GetWndText } procedure TEditGrid.DoCommonExportToXLS_TypeChange(Sender: TObject); var Ctrl : HWnd; Item : Longint; sFileName : String; sFileExt : String; begin { portion from [url]http://newsgroups.derkeiler.com/Archive/De/de.comp.lang.delphi.misc/2007-05/msg00169.html[/url] } try Item := $47C; with (Sender as TSaveDialog) do begin if FilterIndex=2 then begin // filter is ".xlsx" // Set a new default extension // The control with ID=$480 is the Filename edit field // Man muss $47C nehmen !!!!!!!!!!!! Ctrl:= GetDlgItem(Handle, Item); // The following block is necessary due to a bug in Delphi: // TSaveDialog.Handle is not always the Handle of the dialog if Ctrl=0 then Ctrl:=GetDlgItem(GetParent(Handle), Item); if Ctrl=0 then exit; // Get its text, change the extension, and write back sFileName:= GetWndText(Ctrl); sFileExt:= ExtractFileExt(sFileExt); if sFileExt<>'.xlsx' then begin sFileName:= ChangeFileExt(sFileName, '.xlsx'); SendMessage(Ctrl,WM_SETTEXT,0,DWord(sFileName)); end; end; end; { with (Sender as TSaveDialog) do } except end; end; { TEditGrid.DoCommonExportToXLS_TypeChange } ExcelFileDialog.OnTypeChange:= DoCommonExportToXLS_TypeChange; Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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