Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.02 c
1-1150444906
Max4
2006-06-16 12:01
2006.07.30
Перехват сообщения от клавы


3-1148380618
ASW
2006-05-23 14:36
2006.07.30
Вставка в dbgrid checkbox


1-1150367443
Aleksandr.
2006-06-15 14:30
2006.07.30
Как подключить к программе chm-файл?


15-1151906609
Кручен-Верчен
2006-07-03 10:03
2006.07.30
Как научиться красиво говорить?


2-1152181187
Quattro
2006-07-06 14:19
2006.07.30
Ширина символа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский