Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: So 06.06.10 22:21 
Für eine Art Archiver/Packer brauche ich einen Import von Dateien oder kompletten Ordnern.
Der user soll also per Dateiauswahldialog mehrere Dateien UND Ordner gleichzeitig auswählen können.
Wie geht das?
Kennen tu ich nur den Opendialog für Dateien und FolderBrowser für Ordner. Aber nix mit beiden zusammen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 06.06.10 22:25 
Das geht vielleicht mit SHBrowseForFolder und dem Flag BIF_BROWSEINCLUDEFILES, entsprechende Wrapper gibt es auch in der Library hier.

// EDIT:
Aber mir fällt ein, dass mehrere gleichzeitig da wohl nicht geht.

Ansonsten ist das sinnvollste selbst basteln oder fertige Shell-Komponenten verwenden.
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: So 06.06.10 22:30 
fertig klingt gut. nur was? ^^
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 06.06.10 22:36 
Zum Beispiel diese Komponenten:
www.delphicomponents.net/products
Daraus kannst du recht schnell einen Dialog basteln wie du ihn haben möchtest.
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mo 07.06.10 00:27 
Shelllistview und -treeview sieht grad super aus
Beides zusammen auf ein Form und ich hab nen schicken Dialog. Gibts die nicht auch von Delphi offiziell? Hab iwie nur ne Variante von Alphaskins. Finde die sonst ne (D2009)

Aber Problem: Wie kann ich verbieten, dass z.b. der Papierkorb oder der Arbeitsplatz ausgewählt werden kann?
Angezeigt werden darf er ja, und angeklickt auch (zum navigieren) aber sowas darf dann nicht übernommen werden. Wie das?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 07.06.10 00:30 
user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
Gibts die nicht auch von Delphi offiziell?
Die ShellControls liegen in den Demos, sollten aber auch nur als solche verstanden werden. Die sind extrem langsam und haben einige Bugs. Deshalb nimm lieber Fremdkomponenten. ;-)

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
Aber Problem: Wie kann ich verbieten, dass z.b. der Papierkorb oder der Arbeitsplatz ausgewählt werden kann?
Wie das bei diesen Komponenten geht weiß ich auch nicht auswendig, da bleibt nur anschauen. :D
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mo 07.06.10 22:49 
Hm. Was anderes was passt finde ich nicht. Und die Orthos Dinger gehn bei D2009 nicht (Unicode...)
Weitere Vorschläge? ^^

Edit: Hmm...So schlecht ist das ShellListView gar nicht. Hab auch was gefunden, um die SpezialOrdner am Ende rauszuhauen.
Wo ist denn bei dem Ding das Problem, warum man es nicht verwenden sollte?
BTW: Mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TfrmFiles.lvFilesChange(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  if(Item<>niland (Change=ctState) then begin
    if(Item.Selected) and not (lvFiles.Folders[Item.Index].IsFileFolder or lvFiles.Folders[Item.Index].IsFile()) then Item.Selected:=false;
  end;
end;

kann ich verhindern, dass die SpezialOrdner ausgewählt werden. Das problem: Dann kann ich nicht mehr da rein springen...
Da trotzdem eine Markierung da ist (gestrichelter Rahmen um Dateinamen) müsste man das doch trotzdem manuell machen können. Nur wie komme ich an dieses halbausgewählte Element?