Главная страница
    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.013 c
15-1151433023
Nic
2006-06-27 22:30
2006.07.30
Как правильно ставить доп вентилятор?


2-1152599023
Yegorchic
2006-07-11 10:23
2006.07.30
Как определить количество помеченных (checked) items в ListView?


3-1148397089
Karburator
2006-05-23 19:11
2006.07.30
Помогите, не могу подключить сетевую базу


8-1139383204
AlexeyMir
2006-02-08 10:20
2006.07.30
Как муз.файла независимо воспроизвести на 2х звуковых


2-1152260349
Afonya
2006-07-07 12: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
Английский Французский Немецкий Итальянский Португальский Русский Испанский