Entwickler-Ecke

Dateizugriff - Shelltreeview auf "next" (Bild,Datei) wechseln


Lui - Mi 25.06.03 12:55
Titel: Shelltreeview auf "next" (Bild,Datei) wechseln
Hallo,

ich habe einen shelltreeview der einen bestimmten Ordner anzeigt in dem sich Bilddateien befinden. Es sind 10 Bilder in diesem Ordner. Man kann diese auswählen und OnBtnClick dadurch das Hintergrundbild des Desktops ändern. Funktioniert auch alles wunderbar, aber das ist mir noch nicht genug.

Ich habe eine Timer Komponente hinzugefügt und will mit dieser das in frei wählbaren Intervalen die Liste mit den Bildern wechselt, also das z.B. alle 10 sek. das nächste Bild aus der Liste als Hintergrund gesetzt wird.

Nur mit welchem Codeschnippsel stelle ich das an? Es soll also immer der nächste Eintrag ausgewählt werden (beim letzten wieder der erste). Aber wie stell ich das am besten an? Welche Methoden gibts von Shelltreeview um eine Zeile/ eine Datei weiter zu gehen, diese zu markieren,...wie ich dann das bgpic ändere weiß ich, halt nur nicht wie ich eine Poistion in dem treeview weiter springen kann.

Über Antwort wäre ich sehr dankbar.

MfG

Lui


Unzi - Do 26.06.03 20:30

Also, mit dem ShellTreeView konnte ich nur Ordner anzeigen, allerdings sagst du, du zeigst Bilddateien an. Wie sehe ich denn eigentlich dann die zehn Bilder? Und zweitens: Wenn du mir sagst, wie man aus einem ShellTreeView den aktuell markierten Ordner bekommen kann, hätte ich eine Lösung parat.


Lui - Fr 27.06.03 13:33
Titel: Shelltreview mit select
Hallo,

es gibt eine Einstellung die nicht nur den Ordner anzeigt sondern auch deren Inhalt (hab den Namen jetzt leider nicht im Kopf). Die Bilder sind wie im Explorer auch als Dateien zu sehen.

Mit Shelltreeview.selected kann man mit dem markierten Satz arbeiten.

Aber wie kann ich auf das nächste Wechseln, bzw. am Ende wieder auf das erste?

Mfg

Lui


Unzi - Fr 27.06.03 16:15

Also, ich hätte eine Lösung, die zwar nicht den Cursor im ShellTreeView setzt, das kann man aber dadurch ausgleichen, dass man ein Label erstellt und den aktuellen Dateinamen draufschreibt. Mein Code orientiert sich auch daran:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
var
  Form1: TForm1;sr:TSearchRec;state:byte;

//...

procedure TForm1.FormCreate(Sender: TObject);
begin
state:=0;
end;

procedure SetBackGround(name:string);
begin
//...
end;

function TForm1.GetNextFile:string;
var res:byte;path:string;
begin
result:='';
if state=0 then begin
path:=shelltreeview1.SelectedFolder.PathName;
if path[length(path)]<>'\' then path:=path+'\';
res:=findfirst(path+'*.*',faAnyFile,sr);
state:=1;
if res=0 then begin
result:=sr.Name;
exit;
end;
end;
res:=findnext(sr);
if res=0 then
result:=sr.Name;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if getnextfile<>'' then begin
if sr.Attr<>faDirectory then begin
label1.Caption:=sr.Name;
SetBackground(sr.Name);
end;
end
else begin
findclose(sr);
state:=0;
end;
end;

//Abbrechen
procedure TForm1.Button1Click(Sender: TObject);
begin
findclose(sr);
state:=0;
timer1.Enabled:=false;
end;

//Wieder anfangen
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;


Gruß!
Unzi