Pętla po TabSheet'ach...

0

Męcze się z tym i męcze, i mi ciągle ort!, więc proszę Was o pomoc w moim problemie:

Jak usunąć wszystkie komponenty TabSheet oprócz tego, który nazywa się TabSheet1. Próbowałem już z pętlą po itemach i usuwanie, ale coś <ort>niewychodziło </ort>:/

Proszę o pomoc, albo przynajmniej o jakąś wskazówkę...

0

Jest funkcja FindComponent, która zwraca jako argument typ TComponent, następnie sprawdzasz czy en component jest type TTabSheet, potem sprawdzasz jego nazw i jeśli jest inna niż "TabSheet1" to go usuwasz. Napisałbym ci kod, ale teraz nie mam zbytnio czasu.

0

Bardzo dobre rozwiązanie, właśnie o to mi chodziło, ale jak zwykle mi się coś krzaczy i bym prosił, czy ktos by mógł mi napisać ten kodzik ? Wiem, że będzie coś z

for i := 0 to ComponentsCount - 1 do

... tylko co dalej ? :/

0
for i := PageControl1.PageCount - 1 downto 0 do

Ilośc komponentów zmniejszy się jak usuniesz jeden.

0

przykład procedury:

var
i:integer;
begin
for i:=Form1.ComponentCount-1 downto 0 do
begin
if(Form1.Components[i].ClassName='TTabSheet')then
if(Form1.Components[i].Name<>'TabSheet1')then
Form1.Components[i].Free;
end;
end;

Nie użyłem PageControl1.ComponentCound bo u mnie nie wiem czemu zawsze zwraca 0 :|
Pozdro

0

Dzieki, dzo to mi pomogło, ale nadal <ort>niedziała </ort>tak, jak powinno, a mianowicie:

Podczas zamykania formy ma usuwać wszystkie TabSheet'y z PageControl'a oprócz TabSheet1. Mam kodzik:

for i := PageControl1.ComponentCount - 1 downto 0 do
     if PageControl1.Pages[i].Name = 'TabSheet1' then Abort
     else PageControl1.Pages[i].Destroy; end;

, ale on <ort>nieusuwa </ort>podczas zamykania formy wszsytkich TabSheet'ów oprócz tabSheet1, tylko usuwa ostatni :/ Czy dało by się jakoś to zmodyfikować, aby działało już dobrze ? Z góry dzięki :)

0
var I:Integer;
Begin
  For I:=PageControl.PageCount-1 DownTo 0 Do
    If PageControl.Pages[I].Name<>'TabSheet1' Then PageControl.Pages[I].Free;
End;

Nie używaj Destroy tylko Free.

0

PS.: Tux, sprawdziłem twój kod i działa zupełnie jak mój, usuwa tylko ostatni element, a nie wszystkie :/

0

PS.: Tux, sprawdziłem twój kod i działa zupełnie jak mój, usuwa tylko ostatni element, a nie wszystkie

u mnie usuwa wszystkie

// dopisane: Kod Szymka działa w 200%

0

Dzięki Szymek, już wszystko działa [soczek]. I sorka za pisanie tylu postów...

1 użytkowników online, w tym zalogowanych: 0, gości: 1