Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2009, 20:29   #1
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
Лампочка Поиск компонентов на форме

Имею 20 Label'ов имен g_0 ... g_19. У каждого из них разные Caption. Смотрим код и пытаемся понять что я хотел сделать
Код:
var
guest_adress:string
begin

guest_adress:=Form1.g_+IntToStr(RandomRange(0,19))+.Caption;

end;
Такое вообще в делфях сделать возможно ?

Спасибо
Des вне форума Ответить с цитированием
Старый 28.04.2009, 20:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Смотрите в сторону FindChildControl

http://programmersforum.ru/showthread.php?t=45302
http://programmersforum.ru/showthread.php?t=46959
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 21:08   #3
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
По умолчанию

Код:
procedure random_adress;
var
i: integer;
jj: TComponent;
begin
i:=RandomRange(0,19);
jj := Form1.FindChildControl('g_'+ IntToStr(i));
guest_adress:=???;

end;
Чот не туда забрел)) Что делать?
Des вне форума Ответить с цитированием
Старый 28.04.2009, 21:25   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Код:
uses ......,StrUtils;
......
for i :=0 to form1.componentcount -1 do
if (form1.components[i] is Tlabel)and(startstext('g_',form1.components[i].name)) then
guest_adress:=(form1.components[i] as tlabel).caption;
...........
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 28.04.2009, 21:44   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Хм.. Что-то не хочет FindChildControl находить лэйбл.
Но зато FindComponent видит )

Код:
procedure random_adress;
var
i: integer;
jj: TComponent;
begin
i:=RandomRange(0,19);
jj := Form1.FindComponent('g_'+ IntToStr(i));
guest_adress:=TLabel(jj).Caption;

end;
Ну или как Квэнди написал.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 21:45   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Sazary,я писал без случайных чисел, с случайными лучше как вы написали
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 28.04.2009, 21:50   #7
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Может вот так:
Код:
var
 guest_adress: array[0..19] of string;
 i: integer;
begin
 for i := 0 to 19 do
  guest_adress[i]:=FindComponent('g_' + IntToStr(i)).Caption;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.04.2009, 21:55   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Neeter, по всей видимости (из первого поста), автору нужно выбрать случайно один из лэйблов, а не перебирать все.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 21:59   #9
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Да, точно, значит у вас правильнее)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.04.2009, 22:09   #10
Des
Форумчанин
 
Регистрация: 12.11.2008
Сообщений: 124
Хорошо

Цитата:
Сообщение от Sazary Посмотреть сообщение
Хм.. Что-то не хочет FindChildControl находить лэйбл.
Но зато FindComponent видит )

Код:
procedure random_adress;
var
i: integer;
jj: TComponent;
begin
i:=RandomRange(0,19);
jj := Form1.FindComponent('g_'+ IntToStr(i));
guest_adress:=TLabel(jj).Caption;

end;
Ну или как Квэнди написал.

Хотел уже было выложить но как вы и говорили с FindChildControl у меня тоже были проблемы
Спасибо большое

Квэнди И вам спасибо!
Des вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на поиск и вывод компонентов stscolt Помощь студентам 1 11.04.2009 14:58
Выбор компонентов на форме HPS Общие вопросы Delphi 6 28.01.2009 14:34
С++ Builder Изменение размеров компонентов на форме во время исполнения программы Bair C++ Builder 3 18.12.2008 13:43
Использование компонентов в другой форме White БД в Delphi 3 27.08.2008 13:32
Поиск по нескольким БД с выводом инфы в одной форме Алина_Алина Microsoft Office Excel 11 19.05.2008 20:07