Hallo,
ich habe in eine Listbox die Dateien eines Verzeichnisses eingetragen.
Mit der Maus soll eine Datei angewählt werden können. Mit einen Klick soll die Datei geöffnet werden.
Einen kleinen Fehler kann ich aber nicht ausmerzen:
Wenn ich auf dem untersten Eintrag die Maustaste drücke und festhalte und den Mauszeiger dann nach unten aus der Listbox ziehe, dann kommt eine Fehlermeldung (list index out of ... -1).
Ich kann den Fehler nicht nicht erkennen.
<pre>
//alle Dateien eines Verzeichnisses in eine Listbox laden
procedure TForm1.FormActivate(Sender: TObject);
var
zpath:string;
x,z:integer;
begin
zPath := 'e:\*.*';
z:=ListBox1.Perform(LB_DIR, DDL_READWRITE, LongInt(@zPath[1])); //z muss die Anzahl der Dateien sein
x:= ListBox1.Count ; //Anzahl der Listboxelemente , =z+1 ermitteln
label2.Caption:= IntToStr(x); // nur zur Kontrolle
ListBox1.Height:=ListBox1.ItemHeight *x; //Listboxhöhe setzen
listbox1.Selected[0]:=true; // den 1. Eintrag selektieren
end;
//**************************************************
//wenn mit der Maus über einen Eintrag gefahren wird, dann den Eintrag im Label zeigen
Procedure Tform1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Point: TPoint;
z:integer;
begin
Point.x:=x;
Point.y:=y;
z:=listbox1.ItemAtPos(point,true); // nur zur kontrolle
label2.Caption:=inttostr(z); // nur zur kontrolle
Label1.Caption:=ListBox1.Items[ListBox1.ItemAtPos(Point,True)]; //hier tritt der Fehler auf beim leeren Eintrag auf
end;
//***********************************************
// wenn ein ListboxEintrag angeklickt wurde, dann mit dem reg. Prog öffnen.
procedure TForm1.ListBox1Click(Sender: TObject);
var
dat:string;
begin
dat:='e:\'+label1.Caption;
ShellExecute(0,'open',PChar(dat),Nil,Nil,SW_NORMAL );
end;
</pre>
ich habe in eine Listbox die Dateien eines Verzeichnisses eingetragen.
Mit der Maus soll eine Datei angewählt werden können. Mit einen Klick soll die Datei geöffnet werden.
Einen kleinen Fehler kann ich aber nicht ausmerzen:
Wenn ich auf dem untersten Eintrag die Maustaste drücke und festhalte und den Mauszeiger dann nach unten aus der Listbox ziehe, dann kommt eine Fehlermeldung (list index out of ... -1).
Ich kann den Fehler nicht nicht erkennen.
<pre>
//alle Dateien eines Verzeichnisses in eine Listbox laden
procedure TForm1.FormActivate(Sender: TObject);
var
zpath:string;
x,z:integer;
begin
zPath := 'e:\*.*';
z:=ListBox1.Perform(LB_DIR, DDL_READWRITE, LongInt(@zPath[1])); //z muss die Anzahl der Dateien sein
x:= ListBox1.Count ; //Anzahl der Listboxelemente , =z+1 ermitteln
label2.Caption:= IntToStr(x); // nur zur Kontrolle
ListBox1.Height:=ListBox1.ItemHeight *x; //Listboxhöhe setzen
listbox1.Selected[0]:=true; // den 1. Eintrag selektieren
end;
//**************************************************
//wenn mit der Maus über einen Eintrag gefahren wird, dann den Eintrag im Label zeigen
Procedure Tform1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Point: TPoint;
z:integer;
begin
Point.x:=x;
Point.y:=y;
z:=listbox1.ItemAtPos(point,true); // nur zur kontrolle
label2.Caption:=inttostr(z); // nur zur kontrolle
Label1.Caption:=ListBox1.Items[ListBox1.ItemAtPos(Point,True)]; //hier tritt der Fehler auf beim leeren Eintrag auf
end;
//***********************************************
// wenn ein ListboxEintrag angeklickt wurde, dann mit dem reg. Prog öffnen.
procedure TForm1.ListBox1Click(Sender: TObject);
var
dat:string;
begin
dat:='e:\'+label1.Caption;
ShellExecute(0,'open',PChar(dat),Nil,Nil,SW_NORMAL );
end;
</pre>
Comment