mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 17:19:22 +02:00
fix from Martin Smat for TFileDialogs
git-svn-id: trunk@3849 -
This commit is contained in:
parent
61afdc3765
commit
0b96803a3b
@ -1323,6 +1323,8 @@ Var
|
||||
LF: LogFont;
|
||||
OpenFile: OpenFileName;
|
||||
Ret: Boolean;
|
||||
FName: array[0..Max_path] of char;
|
||||
FFilter: string;
|
||||
|
||||
Function GetFlagsFromOptions(Options: TOpenOptions): DWord;
|
||||
Begin
|
||||
@ -1374,6 +1376,13 @@ Var
|
||||
else Result := 0;
|
||||
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
|
||||
Assert(False, 'Trace:TWin32Object.CreateCommonDialog - Start');
|
||||
Assert(False, Format('Trace:TWin32Object.CreateCommonDialog - class name --> ', [Sender.ClassName]));
|
||||
@ -1393,40 +1402,34 @@ Begin
|
||||
End
|
||||
Else If Sender Is TFileDialog Then
|
||||
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
|
||||
OpenFile := LPOpenFileName(@Sender)^;
|
||||
FName[0]:=#0;
|
||||
FFilter := (Sender As TOpenDialog).Filter;
|
||||
ReplacePipe(FFilter);
|
||||
FFilter := FFilter+#0;
|
||||
ZeroMemory(@OpenFile, SizeOf(OpenFileName));
|
||||
With OpenFile Do
|
||||
Begin
|
||||
LStructSize := SizeOf(OpenFileName);
|
||||
HWndOwner := GetOwnerHandle;
|
||||
LPStrFilter := PChar((Sender As TSaveDialog).Filter);
|
||||
{If (Sender As TSaveDialog).FileName <> '' Then
|
||||
LPStrFile := PChar((Sender As TSaveDialog).FileName);}
|
||||
LPStrFileTitle := PChar((Sender As TSaveDialog).Title);
|
||||
LPStrInitialDir := PChar((Sender As TSaveDialog).InitialDir);
|
||||
LPStrFilter := PChar(FFilter);
|
||||
LPStrFile := @FName;
|
||||
LPStrTitle := PChar((Sender As TOpenDialog).Title);
|
||||
LPStrInitialDir := PChar((Sender As TOpenDialog).InitialDir);
|
||||
NMaxFile := Max_path;
|
||||
Flags := GetFlagsFromOptions((Sender As TOpenDialog).Options);
|
||||
End;
|
||||
Ret := GetSaveFileName(@OpenFile);
|
||||
End
|
||||
Else If Sender Is TOpenDialog Then
|
||||
Begin
|
||||
OpenFile := LPOpenFileName(@Sender)^;
|
||||
ZeroMemory(@OpenFile, SizeOf(OpenFileName));
|
||||
With OpenFile Do
|
||||
If Sender Is TSaveDialog Then {must be before TOpenDialog because TSaveDialog IS TOpenDialog}
|
||||
Begin
|
||||
LStructSize := SizeOf(OpenFileName);
|
||||
HWndOwner := GetOwnerHandle;
|
||||
LPStrFilter := PChar((Sender As TOpenDialog).Filter);
|
||||
{If (Sender As TOpenDialog).FileName <> '' Then
|
||||
LPStrFile := PChar((Sender As TOpenDialog).FileName);}
|
||||
LPStrFileTitle := PChar((Sender As TOpenDialog).Title);
|
||||
LPStrInitialDir := PChar((Sender As TOpenDialog).InitialDir);
|
||||
|
||||
Flags := GetFlagsFromOptions((Sender As TOpenDialog).Options);
|
||||
Ret := GetSaveFileName(@OpenFile);
|
||||
End
|
||||
Else //TOpenDialog
|
||||
Begin
|
||||
Ret := GetOpenFileName(@OpenFile);
|
||||
End;
|
||||
Ret := GetOpenFileName(@OpenFile)
|
||||
If Ret Then (Sender As TOpenDialog).FileName := StrPas(FName);
|
||||
End
|
||||
End
|
||||
Else If Sender Is TFontDialog Then
|
||||
@ -2628,6 +2631,9 @@ End;
|
||||
|
||||
{
|
||||
$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
|
||||
applied patch from Martin for TFileDialog
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user