![]() |
MacOS: TNSOpenPanel mit initialem Verzeichnis
Ich nutze das TNSOpenPanel um ein Verzeichnis auszuwählen und dann mit dem Code von Harry Stahl für dieses Verzeichnis eine Bookmark anzulegen.
Wenn ich kein Startverzeichnis setze, ist alles gut. Wenn ich aber eines (LINitialDir) setze, kommt die Fehlermeldung "NSURL initFileURLWithPath: object already initialized".
Delphi-Quellcode:
Wie muss ich das Startverzeichnis hier richtig setzen?
class function TFileUtils.MACSelectDirectory(const ATitle: string; var ADir: string; CreateBookMark: Boolean): Boolean;
var LOpenDir: NSOpenPanel; LInitialDir: Macapi.Foundation.NSURL; LDlgResult: NSInteger; Data: NSData; begin Result := False; LOpenDir := TNSOpenPanel.Wrap(TNSOpenPanel.OCClass.openPanel); LOpenDir.setAllowsMultipleSelection(False); LOpenDir.setCanChooseFiles(False); LOpenDir.setCanChooseDirectories(True); LOpenDir.setPrompt(StrToNSStr(translation.get(1012,'Choose'))); if (ADir<>'') then begin LInitialDir:=Macapi.Foundation.TNSURL.Create; LInitialDir.initFileURLWithPath(StrToNSStr(ADir)); //<- hier kommt der Fehler LOpenDir.setDirectoryURL(LInitialDir); end; if (ATitle<>'') then LOpenDir.setTitle(StrToNSStr(ATitle)); LOpenDir.retain; try LDlgResult := LOpenDir.runModal; if LDlgResult = NSOKButton then begin if LOpenDir.URL <> NIL then begin ADir := LOpenDir.URL.path.UTF8String; end else begin if LOpenDir.URLs.objectAtIndex(0) <> NIL then begin ADir := string(Macapi.Foundation.TNSUrl.Wrap(LOpenDir.URLs.objectAtIndex(0)).relativePath.UTF8String); end; end; if FileExists (ADir) then begin ADir := ExtractFilePath (ADir); end; Result := True; if (AppScopedBookMarksEnabled and CreateBookMark) then begin CreateAppScopedBookMark(Data, LOpenDir.URL); end; end; finally LOpenDir.release; end; end; |
AW: MacOS: TNSOpenPanel mit initialem Verzeichnis
Lösung findet sich natürlich in FMX.Platform.Mac.pas:
if (ADir <> '') then LOpenDir.setDirectoryURL(TNSUrl.Wrap(TNSUrl.OCCLas s.fileURLWithPath(StrToNSStr(ADir)))); Manchmal reichen auch 10 min Pause mal um den Wald wieder zu sehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz