TFileOpen
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
In der unter Lazarus unterstützten Grafikschnittstelle des Pocket PC ist momentan noch keine Entsprechung für den OpenDialog vorhanden.
Folglich müsstest du selbst einen Einbauen, um ihn benutzen zu können.
Folglich müsstest du selbst einen Einbauen, um ihn benutzen zu können.
Zuletzt geändert von monta am Mi 11. Apr 2007, 19:19, insgesamt 1-mal geändert.
-
- Beiträge: 13
- Registriert: Di 6. Mär 2007, 21:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Stralsund
So kann man das kapieren..aber das ist wohl ne Nummer zu gross für mich.monta hat geschrieben:In der unter Lazarus unterstützten Grafikschnittstelle des Pocket PC ist momentan noch keine Entsprechung für den OpenDialog vorhanden.
Folglich müsstest du selbst einen Einbauen, um ihn benutzen zu können.
Da ich nur eine einfache Dateiauswahl in einem Ordner brauche, ist es wohl das Einfachste eine FindFirst/FindNext-Funktion zu machen und die Dateien in eine StringListe zu tun zwecks Auswahl.
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
du kannst auch noch folgendes machen:
bei meiner Oberfläche für 7za habe ich das auch so gelöst:
eine ListBox dort werden Dateien und Verzeichnisse per FindFirst und so angezeigt.
Ich klicke jetzt auf ein Verzeichnis (Verzeichnise werden mit [] um schlossen)
geht es ein Verzeichnis höher wenn ein [..] kommt ein tiefer.
ich poste mal meinen code hier, denn müsstes du nur etwas anpassen. ich nehme eine TListView
weil ich noch etwas mehr wollte *G*
achja die ComboBox ist dein Verzeichnis
du musst einmal irgendwo LoadDir auf rufen dann nur noch bei Doppelklick z.b. ChangeDir
bei meiner Oberfläche für 7za habe ich das auch so gelöst:
eine ListBox dort werden Dateien und Verzeichnisse per FindFirst und so angezeigt.
Ich klicke jetzt auf ein Verzeichnis (Verzeichnise werden mit [] um schlossen)
geht es ein Verzeichnis höher wenn ein [..] kommt ein tiefer.
ich poste mal meinen code hier, denn müsstes du nur etwas anpassen. ich nehme eine TListView
weil ich noch etwas mehr wollte *G*
achja die ComboBox ist dein Verzeichnis
du musst einmal irgendwo LoadDir auf rufen dann nur noch bei Doppelklick z.b. ChangeDir
Code: Alles auswählen
procedure LoadDir(dirName:String;ListView:TListView);
var
sr:TSearchRec;
str:String;
dir:TDir;
begin
writeln(dirname);
if FindFirst(dirName + '*' ,faAnyFile and faDirectory,sr) = 0 then begin
ListView.Items.Clear;
repeat
if sr.Name <> '.' then begin
with ListView.Items.add do begin
dir:=TDir.Create;
dir.TempName:='';
if (sr.Attr and faDirectory) = faDirectory then begin
Caption:='[' + sr.Name + ']';
dir.dir:=dirName+sr.name + '/';
end
else begin
Caption:=sr.Name;
dir.dir:=dirName+sr.name;
end;
Data:=dir;
end;
end;
until FindNext(sr) <> 0
end;
end;
procedure TForm1.ChangeDir(ListView:TListView; comboBox:TComboBox);
var
str,d:String;
begin
if (ListView.Selected <> NIl) and (listview.Selected.Data <> NIL) then begin
str:=TDir(listview.items[listview.Selected.Index].Data).dir;
if ExtractFileName(str) <> '' then d:=TempDir + ExtractFileName(str) + '/';
// Wenn es schon ein Verzeichnis mit dem Namen gibt
// verwende es.
if DirectoryExists(d) = True then TDir(listview.Selected.Data).TempName:=d;
// Wenn im Dateinamen .. vorkommt ein Verzeichnisebe Tifer gehen
if pos('..',str) > 0 then begin
comboBox.Text:=GetPrvDir1(comboBox.text);
// Neues Verzeichnis Auslesen und in die angeben ListView laden
LoadDir(ComboBox.Text,ListView);
end
else begin
// Wenn es kein Verzeichnis ist:
if listview.Selected.caption[1] <> '[' then begin
FileName:='"'+str+'"';
dirlevel:=1;
if (TDir(listview.items[listview.Selected.Index].Data).TempName ='') and (ListView2.Tag <> -2) then begin
Load7za(ListView2,'"'+str +'"');
listview.Tag:=-1;
Listview2.Tag:=0;
end
else begin
// nur laden wenn es kein Datei ist
Listview2.Tag:=-2;
comboBox2.text:=TDir(listview.items[listview.Selected.Index].Data).TempName;
LoadDir(comboBox2.text,ListView2)
end;
end
else begin
// Wenn es ein verzeichnis ist, dann wechsel ist
comboBox.Text:=str;
LoadDir(ComboBox.Text,ListView);
end;
end
end; // if Data <> NIL and Sele <> NIL then
end;
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 13
- Registriert: Di 6. Mär 2007, 21:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Stralsund
Nett, gerade die bräuchte ich auch für mein Programm. Also ersatzweise TListView, wenigstens geht das bessere.Christian hat geschrieben:Och pluto, das du immer deinen senf dazugeben musst ohne jemals das auszuprobiern ... ListBox ist ebensowenig implementiert für WinCE z.Z. (brauch man dort ja auch selten)
Zuletzt geändert von tobo am Do 12. Apr 2007, 11:15, insgesamt 2-mal geändert.
-
- Beiträge: 13
- Registriert: Di 6. Mär 2007, 21:46
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Stralsund
Danke für den Code, so oder ähnlich hatte ich mir das gedacht.pluto hat geschrieben:du kannst auch noch folgendes machen:
bei meiner Oberfläche für 7za habe ich das auch so gelöst:
eine ListBox dort werden Dateien und Verzeichnisse per FindFirst und so angezeigt.
TListView geht also, weil TListBox ja wohl auch nicht implementiert ist.