Also man kann ja auch für spezielle Fälle einen eigenen Save-Dialog basteln. Dieses ist besonders praktisch, da man viel mehr Funktionen einbauen kann, oder auch selbst eine Vorschau-Datei anzeigen lassen kann. Man hat viel mehr Kontrolle wie man was speichert...
Hab mal als Beispiel eine Exe drangehängt! (Ist nur ein schnell hingeschriebenes Beispiel)
' Nur mal ein Beispiel - Sieht auch nicht wirklich besonders hübsch aus :D
$H Windows.ph
$H messages.ph
Usermessages ~wm_close
' ########################### Globale Variablen und Sonstiges
Declare L#,Sz&,Filename&,Pfad&,CDButton&,VorgabePfad$,Typ&,TempExt$,TempFile$,Version&,VText&,GB&
Dim L#,4
DEF PathFindExtension(1) !"shlwapi","PathFindExtensionA"
DEF PathRemoveExtension(1) !"SHLWAPI","PathRemoveExtensionA"
VorgabePfad$="E:\myPrograms\SelfSave"' <--- Bitte ändern, da dieser Pfad muss zum testetn existent sein muss !!!
' ########################### Findet Extension beim Dateiname
Proc Findext
parameters FN$
Declare ext#
Dim ext#,20
ext# = PathFindExtension(addr(FN$))
FN$ = string$(ext#,0)
dispose ext#
return FN$
endproc
' ########################### Nur Dateiname ohne Extension
proc removeExt
parameters FN$
Declare Result#,result$
Dim Result#,261
string result#,0 = FN$
PathRemoveExtension(result#)
result$ = string$(result#,0)
Dispose result#
return result$
endproc
' ########################### Fensterelemente
Proc Elements
Create("Text",%hwnd,"Dateiname:",10,12,80,23)
Filename&=Create("Edit",%hwnd,"Test.out",87,10,400,23)
Create("Text",%hwnd,"Pfad:",10,42,80,23)
Pfad&=Create("Edit",%hwnd,VorgabePfad$,87,40,400,23)
CDButton&=Create("Button",%hwnd,"Pfad ändern",500,40,100,23)
Create("Text",%hwnd,"Dateityp:",10,72,80,23)
Typ&=Create("ChoiceBox",%hwnd,0,87,70,400,230)
AddString(Typ&,"OUT-Datei (*.out)")
AddString(Typ&,"XML (*.xml)")
AddString(Typ&,"JSON (*.json)")
SelectString(Typ&,-1,"OUT")
TempExt$="OUT-Datei (*.out)"
VText&=Create("Text",%hwnd,"Version:",10,102,80,23)
Version&=Create("ChoiceBox",%hwnd,0,87,100,400,230)
AddString(Version&,"Out-Version 1.0")
AddString(Version&,"Out-Version 2.0")
AddString(Version&,"Out-Version 3.0")
SelectString(Version&,-1,"Out-Version 1.0")
GB&=Create("GroupBox",%hwnd," Optionen ",87,130,400,85)
Create("CheckBox",GB&,"Schreibgeschützt",10,20,150,23)
Create("CheckBox",GB&,"Versteckt",170,20,150,23)
Create("CheckBox",GB&,"Komprimiert",10,50,150,23)
Create("CheckBox",GB&,"Verschlüsselt",170,50,150,23)
Create("DefButton",%hwnd,"Speichern",87,230,100,23)
Create("Button",%hwnd,"Abbrechen",190,230,100,23)
EndProc
' ########################### Neuer Pfad
Proc NewDir
var NeuPfad$=ChooseDir$(%hwnd,"Neuen Pfad wählen",GetText$(Pfad&),2)
CaseNot NeuPfad$="":SetText Pfad&,NeuPfad$
EndProc
' ########################### Update Fenster
Proc UpdateWindow
Case width(%hwnd,1)<800:SetWindowPos %hwnd=%WinLeft,%WinTop-800,height(%hwnd,1);0
Case height(%hwnd,1)<600:SetWindowPos %hwnd=%WinLeft,%WinTop-width(%hwnd,1),600;0
SetWindowPos Sz& = 0,0-0,0;0
EndProc
' ########################### Hauptfenster
WindowStyle 31
WindowTitle "SelfSave Beispiel"
Window %maxX+5,5 - 800,600
Cls ~GetSysColor(15)
UseFont "Verdana",16,0,0,0,0
var font&=Create("Font","Verdana",16,0,0,0,0)
SetDialogFont 1
Elements
Long L#,0=-1
Sz& = Create("StatusWindow",%HWND,"",1,L#)
SetText Sz&, 0, "Dateiname: Test | Extension: odt"
SetWindowPos %hwnd=((%maxX/2)-400),((%maxY/2)-300)-800,600;0
' ########################### Hauptschleife
WhileNot (%Umessage = ~wm_close) & (&uWnd = %hWnd)
WaitInput
Case %Key=4:UpdateWindow
Case Clicked(CDButton&):NewDir
if GetText$(Typ&)=TempExt$
else
removeExt GetText$(Filename&)
if $(0)=""
TempFile$="Neue Datei"
else
TempFile$=$(0)
endif
if GetText$(Typ&)="OUT-Datei (*.out)"
SetText Filename&,TempFile$+".out"
SetText Sz&, 0, "Dateiname: "+Tempfile$+" | Extension: out"
EnableWindow Version&,1
EnableWindow VText&,1
elseif GetText$(Typ&)="XML (*.xml)"
SetText Filename&,TempFile$+".xml"
SetText Sz&, 0, "Dateiname: "+Tempfile$+" | Extension: xml"
EnableWindow Version&,0
EnableWindow VText&,0
elseif GetText$(Typ&)="JSON (*.json)"
SetText Filename&,TempFile$+".json"
SetText Sz&, 0, "Dateiname: "+Tempfile$+" | Extension: json"
EnableWindow Version&,0
EnableWindow VText&,0
endif
TempExt$=GetText$(Typ&)
endif
EndWhile
Dispose L#
|