Registriert seit: 1. Feb 2018
3.691 Beiträge
Delphi 11 Alexandria
|
AW: SelectDirectory
13. Apr 2018, 22:49
SelDir() Update
Delphi-Quellcode:
function SelDir ( StartPath : String; var SelectedDir : String ) : Boolean;
var
tmp : TArray<string>;
begin
Result := False;
if Win32MajorVersion >= 6 then
with TFileOpenDialog.Create(nil) do
try
Title := 'Select Directory';
Options := [fdoPickFolders, fdoPathMustExist, fdoForceFileSystem];
OkButtonLabel := 'Select';
DefaultFolder := StartPath;
FileName := StartPath;
if Execute then
begin
SelectedDir := FileName;
Result := True;
end;
finally
Free;
end
else
// Mögliche Options: sdHidePinnedPlaces, sdNoDereferenceLinks, sdForceShowHidden, sdAllowMultiselect
if SelectDirectory(StartPath, tmp, [sdForceShowHidden], 'Select Directory', 'Foldername:', 'Select')
// BACKUP - hier noch der Aufruf für den kleinen Dialog
// Mögliche Options: sdNewFolder, sdShowEdit, sdShowShares, sdNewUI, sdShowFiles, sdValidateDir
// mit Option sdShowFiles wird aus dem auch ein Datei-Selektor
// if SelectDirectory('Select Directory', ExtractFileDrive(StartPath), StartPath,
// [sdNewFolder, sdShowEdit, sdShowShares, sdNewUI, sdValidateDir])
then begin
SelectedDir := tmp[0]; // Achtung, hier wird nur der erste Eintrag genommen! Also so nicht "sdAllowMultiselect" fähig
// SelectedDir := StartPath; // BACKUP - für den alten Dialog
Result := True;
end;
end;
// Beispiel Aufruf:
procedure TForm2.Button1Click(Sender: TObject);
var
s : String;
begin
if SelDir('C:\Tools\',S) then ShowMessage(s);
end;
Dank gilt himitsu für's Zeit nehmen und Erklären und das bei mir endlich der Groschen gefallen ist warum ich's Anfang nicht hinbekam, es gibt zwei Unterschiedliche Option-Sets, muss man auch erstmal draufkommen
Nun sehen Dialoge unter XP und Vista sogut wie gleich aus, beide Verhalten sich relativ identisch.
|
|
Zitat
|