Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Вниз

Имя TComponent в качестве переменной?   Найти похожие ветки 

 
Valeris   (2002-10-23 10:31) [0]

Помогите плиз.

Есть 15 ProgressBar (ProgressBar1, ProgressBar2...ProgressBar15), как бы так сделать чтобы в зависимости от значения переменной i(1..15) можно было обращаться к нужному ProgressBar.


 
Smithson   (2002-10-23 10:33) [1]

Вариант самый простой - массив прогресбаров. Если они создаются не динамически, а на этапе проектирования, то присвой каждому в значение Tag числа 1..15 и ищи по этому значению в Form1.Components или Form1.Controls


 
Skier   (2002-10-23 10:36) [2]

>Valeris
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035271147&n=0


 
Dynamit   (2002-10-23 10:42) [3]


Var
j: Integer;
begin
For j:=0 To XForm.ControlCount-1 Do
If PCBoxes.Controls[j] is TProgressBar Then
Begin
If (PCBoxes.Controls[j] As TProgressBar).Name="ProgressBar"+IntToStr(i) Then
Begin
//действия
End;
End;
end;


XForm - контейнер, владелец объектов ProgressBar.

Метод медленный, зато универсальный


 
Dynamit   (2002-10-23 10:43) [4]

Извини, забыл исправить:

Var
j: Integer;
begin
For j:=0 To XForm.ControlCount-1 Do
If XForm.Controls[j] is TProgressBar Then
Begin
If (XForm.Controls[j] As TProgressBar).Name="ProgressBar"+IntToStr(i) Then
Begin
//действия
End;
End;
end;


 
Юрий Зотов   (2002-10-23 11:22) [5]

> Метод медленный, зато универсальный

Медленный - да. Универсальный - нет. Сработает ТОЛЬКО для TProgressBar"ов, лежаших на самой форме. А если на панели, в GroubBox"е или где угодно еще - не сработает .


 
Dynamit   (2002-10-23 11:41) [6]


> Юрий Зотов


Один мой преподаватель шутил: "Итерациями, батенька, итерациями".
Можно же перебрать контролы и в рекурсию, если они суть контейнеры!


 
Юрий Зотов   (2002-10-23 12:11) [7]

Да, можно. Но будет еще медленнее, причем намного. Это, конечно, тоже способ, но не самый лучший. Если ProgressBar"ы положены на форму в design-time, то простая замена массива Controls на массив Components будет действительно универсальной и без рекурсий. Если же они создаются в run-time - логично использовать массив или список.


 
Alex4444444444   (2002-10-23 12:16) [8]

А почему не перебирать Components? Они все на форме (обычно :)


 
Skier   (2002-10-23 12:18) [9]

>Alex4444444444


> Они все на форме...


Это в случае когда компоненты
создаются в design-time...<


 
Alex4444444444   (2002-10-23 12:25) [10]

В run-time просто сделайте массив. (Я так понял, все проблемы как раз из-за design-time.) Потом, кто ж мешает в run-time писать .Create(MyForm) ?


 
panov   (2002-10-23 12:32) [11]

procedure form1.GetProgressBar( const nBar: Integer): TProgressBar;
begin
Result := TProgressBar(FindComponent("ProgressBar"+IntToStr(nBar)));
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.036 c
1-11326
ProgOnDel
2002-10-22 13:54
2002.11.04
Работа с числами целого типа с более чем 60 значащими разрядами.


1-11276
bearoman
2002-10-23 12:00
2002.11.04
Нужены компоненты графические (датчиков, градусников)


3-11072
Андрей Назаров
2002-10-15 12:49
2002.11.04
8i+BDE+Delphi5


14-11401
zzet
2002-10-12 23:39
2002.11.04
Не было меня в той хате, куда закрыли этого кадра..


1-11142
Vaddya
2002-10-23 20:36
2002.11.04
Оператор switch-case





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