fix from Martin Smat for TFileDialogs

git-svn-id: trunk@3849 -
This commit is contained in:
mattias 2003-02-16 00:43:55 +00:00
parent 61afdc3765
commit 0b96803a3b

View File

@ -1323,6 +1323,8 @@ Var
LF: LogFont; LF: LogFont;
OpenFile: OpenFileName; OpenFile: OpenFileName;
Ret: Boolean; Ret: Boolean;
FName: array[0..Max_path] of char;
FFilter: string;
Function GetFlagsFromOptions(Options: TOpenOptions): DWord; Function GetFlagsFromOptions(Options: TOpenOptions): DWord;
Begin Begin
@ -1374,6 +1376,13 @@ Var
else Result := 0; else Result := 0;
end; end;
procedure ReplacePipe(var AFilter:string);
var i:integer;
begin
for i:=1 to length(AFilter) do
if AFilter[i]='|' then AFilter[i]:=#0;
end;
Begin Begin
Assert(False, 'Trace:TWin32Object.CreateCommonDialog - Start'); Assert(False, 'Trace:TWin32Object.CreateCommonDialog - Start');
Assert(False, Format('Trace:TWin32Object.CreateCommonDialog - class name --> ', [Sender.ClassName])); Assert(False, Format('Trace:TWin32Object.CreateCommonDialog - class name --> ', [Sender.ClassName]));
@ -1393,40 +1402,34 @@ Begin
End End
Else If Sender Is TFileDialog Then Else If Sender Is TFileDialog Then
Begin Begin
If Sender Is TSaveDialog Then {must be before TOpenDialog because TSaveDialog IS TOpenDialog} {TODO: set correctly Sender.FileName and Sender.Files when more files are selected}
If Sender Is TOpenDialog Then
Begin Begin
OpenFile := LPOpenFileName(@Sender)^; FName[0]:=#0;
FFilter := (Sender As TOpenDialog).Filter;
ReplacePipe(FFilter);
FFilter := FFilter+#0;
ZeroMemory(@OpenFile, SizeOf(OpenFileName)); ZeroMemory(@OpenFile, SizeOf(OpenFileName));
With OpenFile Do With OpenFile Do
Begin Begin
LStructSize := SizeOf(OpenFileName); LStructSize := SizeOf(OpenFileName);
HWndOwner := GetOwnerHandle; HWndOwner := GetOwnerHandle;
LPStrFilter := PChar((Sender As TSaveDialog).Filter); LPStrFilter := PChar(FFilter);
{If (Sender As TSaveDialog).FileName <> '' Then LPStrFile := @FName;
LPStrFile := PChar((Sender As TSaveDialog).FileName);} LPStrTitle := PChar((Sender As TOpenDialog).Title);
LPStrFileTitle := PChar((Sender As TSaveDialog).Title); LPStrInitialDir := PChar((Sender As TOpenDialog).InitialDir);
LPStrInitialDir := PChar((Sender As TSaveDialog).InitialDir); NMaxFile := Max_path;
Flags := GetFlagsFromOptions((Sender As TOpenDialog).Options); Flags := GetFlagsFromOptions((Sender As TOpenDialog).Options);
End; End;
Ret := GetSaveFileName(@OpenFile); If Sender Is TSaveDialog Then {must be before TOpenDialog because TSaveDialog IS TOpenDialog}
End
Else If Sender Is TOpenDialog Then
Begin
OpenFile := LPOpenFileName(@Sender)^;
ZeroMemory(@OpenFile, SizeOf(OpenFileName));
With OpenFile Do
Begin Begin
LStructSize := SizeOf(OpenFileName); Ret := GetSaveFileName(@OpenFile);
HWndOwner := GetOwnerHandle; End
LPStrFilter := PChar((Sender As TOpenDialog).Filter); Else //TOpenDialog
{If (Sender As TOpenDialog).FileName <> '' Then Begin
LPStrFile := PChar((Sender As TOpenDialog).FileName);} Ret := GetOpenFileName(@OpenFile);
LPStrFileTitle := PChar((Sender As TOpenDialog).Title);
LPStrInitialDir := PChar((Sender As TOpenDialog).InitialDir);
Flags := GetFlagsFromOptions((Sender As TOpenDialog).Options);
End; End;
Ret := GetOpenFileName(@OpenFile) If Ret Then (Sender As TOpenDialog).FileName := StrPas(FName);
End End
End End
Else If Sender Is TFontDialog Then Else If Sender Is TFontDialog Then
@ -2628,6 +2631,9 @@ End;
{ {
$Log$ $Log$
Revision 1.47 2003/02/16 00:43:55 mattias
fix from Martin Smat for TFileDialogs
Revision 1.46 2003/02/08 10:37:32 mattias Revision 1.46 2003/02/08 10:37:32 mattias
applied patch from Martin for TFileDialog applied patch from Martin for TFileDialog