1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-27 03:22:17 -05:00
Simba/Units/RUTIS/Rutis_EXT_Dialogs.pas
2010-08-20 17:21:43 +02:00

127 lines
2.8 KiB
ObjectPascal

Unit Rutis_EXT_Dialogs;
{$mode objfpc}{$H+}
Interface
Uses
Classes, SysUtils,
Rutis_Defs,
{$IfDef WinCE}WinCE_FileDialog,{$EndIf WinCE}
Dialogs;
Procedure RegisterEXTMethods(MethodList : PExtMethodList);
Implementation
Procedure _OpenFileDialog(Stack : PRutisStack; Param0 : Integer; Result : PRutisStackItem);
Var
{$IfDef WinCE}
dlg : TFFileDialog;
{$Else WinCE}
dlg : TOpenDialog;
{$EndIf WinCE}
Begin
MakeVType(@Stack^[Param0], VString);
MakeVType(@Stack^[Param0 + 1], VString);
Result^.VTyp := VString;
New(Result^.VString);
{$IfDef WinCE}
dlg := TFFileDialog.Create(nil);
try
dlg.FileName := Stack^[Param0].VString^;
dlg.ACaption := 'Open File';
dlg.Filter := Stack^[Param0+1].VString^;
If dlg.Filter = '' then
dlg.Filter := 'All Files (*.*)|*.*';
If dlg.Execute then
Result^.VString^ := dlg.FileName
else
Result^.VString^ := '';
finally
dlg.Free;
end;
{$Else WinCE}
dlg := TOpenDialog.Create(nil);
Try
dlg.FileName := Stack^[Param0].VString^;
dlg.Filter := Stack^[Param0 + 1].VString^;
If dlg.Filter = '' Then
dlg.Filter := 'All Files (*.*)|*.*';
If dlg.Execute Then
Result^.VString^ := dlg.FileName
Else
Result^.VString^ := '';
Finally
dlg.Free;
End;
{$EndIf WinCE}
End;
Procedure _SaveFileDialog(Stack : PRutisStack; Param0 : Integer; Result : PRutisStackItem);
Var
{$IfDef WinCE}
dlg: TFFileDialog;
{$Else WinCE}
dlg : TSaveDialog;
{$EndIf WinCE}
Begin
MakeVType(@Stack^[Param0], VString);
MakeVType(@Stack^[Param0 + 1], VString);
Result^.VTyp := VString;
New(Result^.VString);
{$IfDef WinCE}
dlg := TFFileDialog.Create(nil);
try
dlg.FileName := Stack^[Param0].VString^;
dlg.ACaption := 'Open File';
dlg.Filter := Stack^[Param0+1].VString^;
If dlg.Filter = '' then
dlg.Filter := 'All Files (*.*)|*.*';
If dlg.Execute then
Result^.VString^ := dlg.FileName
else
Result^.VString^ := '';
finally
dlg.Free;
end;
{$Else WinCE}
dlg := TOpenDialog.Create(nil);
Try
dlg.FileName := Stack^[Param0].VString^;
dlg.Filter := Stack^[Param0 + 1].VString^;
If dlg.Filter = '' Then
dlg.Filter := 'All Files (*.*)|*.*';
If dlg.Execute Then
Result^.VString^ := dlg.FileName
Else
Result^.VString^ := '';
Finally
dlg.Free;
End;
{$EndIf WinCE}
End;
//==============================================================================
//==============================================================================
Procedure RegisterEXTMethods(MethodList : PExtMethodList);
Begin
RegExtMethod('OpenFileDialog',{$IfDef FPC}@{$EndIf}_OpenFileDialog,
[VString, VString], VString, MethodList);
RegExtMethod('SaveFileDialog',{$IfDef FPC}@{$EndIf}_SaveFileDialog,
[VString, VString], VString, MethodList);
End;
End.