Für diese Lösung habe ich nun 2 Tage gebraucht
Diese kommt an den Anfnag der Procedure, welche am Anfang dieses Themas dargestellt wurde.
Delphi-Quellcode:
var
I, Unsichtbar, Ende, Anpassung: Integer;
//Unsichtbare Tabs übergehen
Unsichtbar := 0;
Ende := 0;
Anpassung := 0;
//Bis zum aktuellen TabIndex, die unsichtbaren finden
for I := 0 to Der_TabIndex do
begin
if PageControl.Pages[I].TabVisible = FALSE then
begin
Anpassung := Anpassung + 1;
end;
end;
//Nächsten sichtbaren nach aktuellem Tab (mit Anpassung der unsichtbaren) ermitteln
for I := (Der_TabIndex + Anpassung) to PageControl.PageCount - 1 do
begin
if PageControl.Pages[I].TabVisible = TRUE then
begin
Ende := I;
break;
end;
end;
//Alle unsichtbare in dem Bereich bis zum nächsten sichtbaren ermitteln (Verschiebung nach links)
for I := 0 to (Ende - 1) do
begin
if PageControl.Pages[I].TabVisible = FALSE then
begin
Unsichtbar := Unsichtbar + 1;
end;
end;
If Unsichtbar > 0 then Der_TabIndex := Der_TabIndex + Unsichtbar;
end;
Bessere Lösungen gibt es bestimmt. Vielleicht gibt es hier ja welche die Lust am optimieren haben.
Die Lösung dort oben setzt den TabIndex immer an die richtige Stelle, egal welche Tabs ausgeblendet wurden.
Gruss
Holger