Mam program który podczas działania programu tworzy komponenty a we właściwości caption zapisuje abc kolejna liczba np. abc5, abc 42
Jak sprawdzić czy komponent ma właściwości caption abc jakas liczba?
Jeżeli masz komponent wyznaczony przez Sender (np. po kliknięciu na niego wywoływana jest procedura) to robisz tak:
(Sender as TComponent).Caption
Istnieje coś takiego jak Components i ComponentCount które posiada chyba każda formatka i każdy komponent który wywodzi się z TComponent.
Aby sprawdzić wystarczy, że wywolasz tą funkcję, a zwróci ona pierwszy komponent jaki ma taki caption!
function Szukaj (Czego: String; Gdzie: TComponent): TControl;
Var
I: Integer;
begin
result := nil; //w przypadku niepowodzenia zwraca nil
for i := 0 to Gdzie.ComponentCount - 1 do
begin
if Gdzie.Components[i] is TControl then
begin
if TControl(Gdzie.Components[i]).Caption = Czego then
begin
result := TControl(Gdzie.Components[i]);
break; //wyjdź z pętli ale można tu wstawić warunek np. który sprawdza czy to jest label itp i dopiero wtedy kończyć pętlę
end;
end;
end;
end;
Jako parametry przekaż string którego szukasz i komponent na ktorym szukać ma tegoż captiona. Funkcja zwróci TControl ponieważ to jest najstarszy przodek posiadajacy caption.
Przed jego uzyciem warto jednak sprawdzic czy to jest na 100% ten typ klasy ktorego sie spodziewasz!
Powodzenia [hurra]
Jest to porste jak drut!
Ale ja się nie śmieje bo jaczynałem od programu, który po naciśnięciu ENTER-a wyświetlał napis Hello!
Nie wiedziałem nawet do czego służy label...
Dobra, teraz do rzeczy. Piszesz coś takiego:
(...)
if Button1.Caption='UFOCZEK' then
begin
Application.MessageBox('Bttonik ma Caption UFOCZEK!!!', 'Odkrycie roku', MB_OK);
Tylko wszystko w 1 linijce!
Pozdrawiam!
Fire
[diabel]
I SORY!!!!!!
Zapomniałem o else
Ale to se możesz darować...
:-) :-)