Hallo,
ich habe ein kleines Problem, dass ich einfach nicht gelöst kriege.
Folgende Situation herscht:
Ein User kriegt eine Liste von Inhalten angezeigt. Auf jedes Item dieser Liste kann er klicken und es öffnet sich dann eine Detailansicht. Es soll aber nicht möglich sein, für z.B. Bild 1 die Detailansicht doppelt zu öffnen.
Delphi-Quellcode:
procedure TForm1.ListView1DblClick(Sender: TObject);
var
detail: TForm3;
begin
if Assigned(ListView1.Selected) then
begin
if (user_id <> '0') then
begin
detail := TForm3.Create(self);
detail.load(ListView1.ItemIndex);
detail.Show;
end;
end;
end;
Wie finde ich jetzt heraus, ob der User schon eine Detailsansicht mit dem jeweiligen ItemIndex geöffnet hat? Ich habe auch scohn folgendes probiert gehabt:
Ich habe ein globals Array definiert
Delphi-Quellcode:
var
detail : Array [0..100000] of TForm3;
Und habe dann mit der gleichen Funktion wie oben (außer das dort keine lokale Variable definiert ist), das Ganze geöffnet.
Delphi-Quellcode:
procedure TForm1.ListView1DblClick(Sender: TObject);
begin
if Assigned(ListView1.Selected) then
begin
if (user_id <> '0') then
begin
detail[ListView1.ItemIndex] := TForm3.Create(self);
detail[ListView1.ItemIndex].load(ListView1.ItemIndex);
detail[ListView1.ItemIndex].Show;
end;
end;
end;
Nun hatte ich mir hier gedacht, dass ich vielleicht irgendwie das Array kontrollieren könnte ob das jeweilige Feld belegt wurde, ich weiß aber nicht wie. Was mich hierbei aber am meisten stört, ist das ich auf ein beschränktes Array angewiesen bin.
SetLength hat hier leider nicht funktioniert, da sich die Liste regelmäßig updated und die Länge daher bei jedem Update beliebig verändert wird.
Ich hoffe sehr ihr könnt mir helfen und versteht mein Problem.
Gruß
Micha
PS Weiß jemand, wie es möglich ist, bei Windows 7 in der Startleiste, beim klicken auf das Icon Aktionen anzuzeigen?