Форум: "Основная";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
ВнизКаким образом обойти громоздские конструкции типа case или if.... Найти похожие ветки
← →
Sergey__ (2006-06-20 17:43) [0]Уважаемые мастера, есть следующая проблема. Имеется набор визуальных компонент,к примеру TStaticText, поименованых последовательно s1,s2,s3,s4 и т.д. , так же имеется счетчик, пусть i , принимающий значения 1,2,3,4, и т.д. Можно ли каким-то образом обойтись без конструкций
case i of
1 : s1.Caption =.....
2 : s2.Caption =.....
3 : s3.Caption =.....
.
.
.
end;
или
if i = 1 then s1.Caption =....
if i = 2 then s2.Caption =....
if i = 3 then s3.Caption =....
.
.
.
Если можно, то как ?
← →
begin...end © (2006-06-20 17:48) [1]Можно. См. TComponent.FindComponent.
← →
Desdechado © (2006-06-20 17:49) [2]Form1.Components[j].Name
← →
Плохиш © (2006-06-20 17:49) [3]У FindComponent в справке прямо твой случай разрисован.
← →
Джо © (2006-06-20 17:52) [4]> Можно ли каким-то образом обойтись без конструкций
const
Captions: array [1..N] of string = ("text1","text2","another text"...);
Controls: array [1..N] of TStaticText = (...);
// при OnCreate формы заполняем массив Controls
...
затем, при необходимости:
Controls[i].Caption = Captions[i]
← →
jack128 © (2006-06-20 22:48) [5]Джо © (20.06.06 17:52) [4]
const
Controls: array [1..N] of TStaticText = (...);
мечтать не вредно :-P
← →
Джо © (2006-06-21 00:51) [6]> [5] jack128 © (20.06.06 22:48)
> Джо © (20.06.06 17:52) [4]
> const
> Controls: array [1..N] of TStaticText = (...);
>
> мечтать не вредно :-P
Мне сегодня позволительно ;-p
← →
evvcom © (2006-06-21 08:44) [7]> const
> Captions: array [1..N] of string = ("text1","text2","another text"...);
type
PStaticText = ^TStaticText;
TMyForm = class(TForm)
// Следить за порядком следования при добавлении новых! Они должны четко следовать друг за другом!
StaticText1: TStaticText;
StaticText2: TStaticText;
...
StaticTextN: TStaticText;
end;
...
var
pMyStText: PStaticText;
begin
pMyStText := @StaticText1;
for i := 1 to N do begin
pMyStText^.Caption := Captions[i];
Inc(pMyStText);
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c