Autor Beitrag
n-iceman
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 22.04.09 16:49 
Danke erstmal an alle die an der fldbrows.pas gearbeitet haben, echt genial!

Trotzdem kurz ein Frage:
Wie kann ich zwar den Root Folder angeben aber einen speziellen Ordner bereits vorselektieren (vorschlagen)?

Hintergrund:
Der Benutzer soll im gesamten Arbeitsplatz etwas Auswählen können, ich möchte aber das bereits ein Ziel vorgeschlagen wird.
Wenn dies dem Benutzer nicht passt, kann er selber browsen und ein Ziel angeben, ansonsten den Vorschlag übernehmen und mit "OK" weiter gehen.

Danke bereits für weitere Infos.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 22.04.09 17:06 
Einfach als dritten Parameter im Konstruktor angeben, s. a. den 1. Beitrag in diesem Thread -)

P.S. Für einen einfachen BrowseForFolder-Aufruf kann man auch die VCL-Funktion SelectDirectory verwenden: delphi.about.com/lib...lSelectDirectory.htm
Dort dann einfach die Variable 'Dir' mit einem Verzeichnis vorbelegen...
n-iceman
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 23.04.09 00:33 
Danke für die schnelle Antwort, aber meine Frage bezieht sich nicht auf das Rootverzeichnis, sondern darauf, das ein Ziel vorselektiert werden soll.

Beispiel:
Der Benutzer soll einen künftigen Installationspfad einer Applikation wählen.
Als Root wird der gesamte Arbeitsplatz angegeben (Der Benutzer kann also auf C:\test oder C:\Users usw auswählen.)
Diese Freiheit möchte ich beibehalten, aber einen Vorschlag vorselektieren.
--> Bsp. C:\ProgramFiles\...

Danlke für weitere Hilfe.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 23.04.09 09:36 
Genau das habe ich dir geschrieben. Hast du es denn mal ausprobiert?

Zitat:

Die Create-Methode hat noch mehr Parameter, die aber nicht zwangsläufig benutzt werden müssen, wie man ja auch sehen kann. Soll bspw. ein bestimmter Ordner vorausgewählt sein, wird er einfach als dritter Parameter angehangen,

ausblenden Delphi-Quelltext
1:
2:
3:
 fb := TFolderBrowser.Create(hwndDlg,  
  'Bitte wählen Sie einen Ordner',  
  'c:\windows');

Und das Root-Verzeichnis kann man noch explizit mit SetRoot(...) setzen.
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 23.04.09 11:25 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Genau das habe ich dir geschrieben. Hast du es denn mal ausprobiert?

Zitat:

Die Create-Methode hat noch mehr Parameter, die aber nicht zwangsläufig benutzt werden müssen, wie man ja auch sehen kann. Soll bspw. ein bestimmter Ordner vorausgewählt sein, wird er einfach als dritter Parameter angehangen,

ausblenden Delphi-Quelltext
1:
2:
3:
 fb := TFolderBrowser.Create(hwndDlg,  
  'Bitte wählen Sie einen Ordner',  
  'c:\windows');

Und das Root-Verzeichnis kann man noch explizit mit SetRoot(...) setzen.

Nein, das meint er aber nicht. Sonder er möchte, dass der Nutzer keine Ebene weiter hoch gehen kann. Also alles in ProgramFiles bleibt aber dort dann beliebig wählen kann.
Das geht mit dieser Komponente meines Erachtens nicht.
n-iceman
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 23.04.09 12:52 
Hallo zusammen,

Th69 hatte absolut Recht!
Genauso wollte ich es haben, merci.

Ich hatte den dritten (Von th69 genannten) Parameter mit SetRoot verwechselt.... :roll:

@Th69
Danke nochmals, in der Hitze des Gefechtes habe ich das doch glatt missverstanden.


Gruess
trm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 491
Erhaltene Danke: 19

Windows 7x64
Delphi 7
BeitragVerfasst: So 13.12.09 00:09 
Huhu.

Ich habe die unit schon seit etlichen Jahren im Einsatz.
Seit heute gibt es eigenartige Fehlermeldungen, die ich nicht nachvollziehen kann, da nichts geändert wurde:


[Fehler] fldbrows.pas(369): Inkompatible Typen: 'Array' und 'Char'
---> BrowseInfo.pszDisplayName := @Displayname;

[Fehler] fldbrows.pas(371): Inkompatible Typen: 'TFNBFFCallBack' und 'Pointer'
---> BrowseInfo.lpfn := @FolderCallBack;

[Fataler Fehler] Unit1.pas(11): Verwendete Unit 'fldbrows.pas' kann nicht compiliert werden


Kann das jemand nachvollziehen oder mir erklären, wo der Fehler steckt ?

Ich nutze Delphi7.

Gruß + schönen 3. Advent :)
~Mathias (TRM aus *EX* Spotlight)


Edit:

Kurios:

Ich habe jetzt mal testweise ein anderes Projekt geschnappt, in der die gleiche Unit eingebunden ist.
Dort tritt der Fehler nicht auf.

Außerdem: Sobald ich in dem Projekt, in dem der Fehler auftritt, die Pointerdeklarationen entferne (das @), dann gibt es keinerlei Fehlermeldungen und auch keinerlei Warnhinweise, jedoch funktioniert die Kompilierung tadellos. Auch die Unit funktioniert komischerweise genauso wie früher, bevor der Fehler auftrat.

Kann sich jemand darauf einen Reim machen?

Noch ein Hinweis:
Solange ich die erste Fehlermeldung anders parse, erst über einen String, dann über einen PChar (pszDisplayName := PChar(String(@DisplayName)); ), dann gibt es auch keine Fehlermeldung mehr.

Wieder die Frage:
Wie kommt sowas zustande?