Главная страница
    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
4-1145133480
Volf_555
2006-04-16 00:38
2006.07.30
Как убрать значок программы с панели задач?


1-1150732226
Dust
2006-06-19 19:50
2006.07.30
Определить размер буфера по указателю. Возможно?


1-1150884526
eugenemail1970
2006-06-21 14:08
2006.07.30
Нужно модернизировать TBarSeries


2-1152674594
learner
2006-07-12 07:23
2006.07.30
Combining signed and unsigned types


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