Hallo,
Ich habe es jetzt mit Generics gemacht, erhalte aber das gleiche Ergebnis, die Werte ändern sich nicht, ich habe mal ein Beispiel für ein gedachtes Pagecontrol gebaut, dessen implemetierung ich unabhängig von derjenigen der LCL wie folgt implementieren will:
<
Eine Datenbank könnte ebenso realisiert werden, das gedachte PageControl ist nur ein Beispiel das mir eingefallen ist, wo diese Listenstruktur nützlich sein könnte>
Code: Alles auswählen
TMyTabCtls = class;
TControlsList = specialize TFPGObjectList<MyControl>; // Zum Bespiel Engabezeile, Listbox, Radiobutton, Checkbox,...
// oder auch Datenfelder einer Datenbank, wobei dann die
// TabPages Liste von hier die Datensätze repasentieren würden
// und die Controls die Datenfelder je Datensatz
TMyTabCtls = class
Controls: TControlsList;
constructor Create;
end;
TMyTabPages = specialize TFPGObjectList<TMyTabCtls>;
var
myPages: TMyTabPages;
myCts: TMyTabCtls;
aTabNum:dword; //aktuell aktiver Tab bzw aktive Tabseite
begin
aTabNum := X;
if (thetabs < myPages.Count) and (thetabs <> aTabNum) then
begin
for thetabs := 0 to myPages[thetabs].Controls.Count-1 do
if thetabs < mypages.Count then
begin
mypages[thetabs].Controls[thectls].active:=false;
end;
end;
if thetabs=aTabNum then
begin
for thetabs := 0 to myPages.Count-1 do
for thectls:=0 to myPages[thetabs].Controls.Count-1 do //Controls sind das was ich auf der Tabseite anzeigen will
if thetabs < mypages.Count then
begin
mypages[thetabs].Controls[thectls].active:=true;
end;
end;
ich will die Controls auf den nicht aktiven Tabseiten deaktivieren, aber nicht aus der Liste löschen, eine neue Tabseite soll dann die temporär deaktivierten Controls mit den aktuellen überschreiben. Die Liste soll aber erhalten bleiben um auf die Controls bei Tabseitenwechsel wieder zugreifen zu können

.
In einer Datenbankanwendung könnte ich dann, solange die Liste im Speicher ist, wahlfrei auf alle Datenfelder in jedem Datensatz zugreifen ohne von Festplatte nachladen zu müssen, sollte also nichts ungewöhnliches sein was ich erreichen will.
Ich muss doch irgendwie die Listenelemente beeinflussen können, Werte ändern u.a.
Ist da etwa noch ein Fehler im obigen Algorithmus? Aber wo ist mein Denkfehler dann?