Главная страница
    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.012 c
15-1151405664
ArtemESC
2006-06-27 14:54
2006.07.30
Мышак в DrDos e..


15-1151576692
DelphiN!
2006-06-29 14:24
2006.07.30
Град размером с яблоко в Германии


1-1150550494
lux_dn
2006-06-17 17:21
2006.07.30
Утечка ПАМЯТИ & DLL


2-1152766669
Neket
2006-07-13 08:57
2006.07.30
Проблема с переносимостью программы


1-1150202714
Layner
2006-06-13 16:45
2006.07.30
Как узнать что было до редактирования например на SpinEdit?





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