button obsługiwany zmienną

0

Mam na formularzu 5 przycisków button.
Każdy z nich ma nazwę pokolei a1, a2, a3, a4, a5.
W zmiennej name: string ; mam wartość np. a3.
i teraz jak odwołać się do tego buttona za pośrednictwem zmiennej name, aby np. muc zmienciś caption tego puttona.

Bo normalnie to by było a3.caption:='';
No ale nie zawsze to będze a3.

0

niewiem czy dobrze zrozumialem ale :)

if name='a1.' then a1.caption = 'blebleble1';
if name='a2.' then a2.caption = 'blebleble2';
if name='a3.' then a3.caption = 'blebleble3';
if name='a4.' then a4.caption = 'blebleble4';
if name='a5.' then a5.caption = 'blebleble5';

0

Tak, zgada się. O to mi chodzi, ale w programie mam tych przycisków dużo więcej i przydało by się to jakoś inaczej zrobić.
Ma ktoś może jakiś inny pomysł ?

0

Jeżeli captiony mają być różne:

Case ord(name[2]) of
 $31: (FindComponent(name) as TButton).caption := 'napis1'; //1
 $32: //2
end;

lub

(FindComponent(name) as TButton).caption := 'Identyczny napis';

kiedy nie muszą

0

W zasadzie co do mojego sposobu 1 to też nie jest to najrótsza forma kodu. Ostatecznie mógłbyś zadklarować tablicę

 var Tablica : array[1..Liczba_buttonów] of TCaption = ('napis1', 'napis buttonu 2', 'to jest button a3');

i dać

 (FindComponent(name) as TButton).caption := Tablica[StrToInt(name[2])];
0

Szczerze mówiąc to coś nie zabardzo rozumiem ten kod (znaczy prawie rozumiem), ale coś mi nie działa. Spróbuje jeszcze coś pokąbinować.

0

OKI.
Udało mi się to uruchomić.
Caption tego znalezionego buttona znika.
A co zrobić żeby to tego captiona tego znalezonego buttona coś wpisać ?

0

Hm... to jak w końcu napisałeś?

0

dobra OK, już wiem.
tylko że:
var Tablica : array[1..5] of Tcaption =('Button1', 'button2', 'button3','button4','button5');

to mi nie działa i nie wiem czemu.
Do każdej tablicy musze oddzielnie wpisać daną tablica[3]:='button3'; i wtedy działa

Czemu mi nie działa to co ty mi podałeś ?

0

Wszystko już działa.

Tablica : array[1..5] of Tcaption = ( 'Button1' , 'button2' , 'button3' , 'button4' , 'button5');

wpisałem to do var zamiast do const.
Wielkie dzięki. [cya]

0

var Tablica : array[1..5] of Tcaption =('Button1', 'button2', 'button3','button4','button5');

to mi nie działa i nie wiem czemu.

Musisz to dać nie do var jakiejś procedury tylko do var całego unitu (u mnie chyba za słowem implementation) - u mnie działało.

0
Procedure CosTam;
Var
 S: String;
Begin
 S := a3;
 TButton(FindComponent(S)).Caption := 'coś tam';
End;
0

procedure CosTam;
var
S: string;
begin
S := a3;
TButton(FindComponent(S)).Caption := 'coś tam';
end;

Oczywiście :

S := 'a3';

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