Форум программистов
Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Блог программистов  |  Рассылка  |  Закажи футболку!  |  Конкурс программистов призы на 2000 руб


Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi

Ответ
 
Опции темы
Старый 01.12.2006, 16:09   #1
OLEG'arh
Пользователь
 
Аватар для OLEG'arh
 
Регистрация: 23.11.2006
Адрес: Ростов-на-Дону
Сообщений: 37
Репутация: 10
Отправить сообщение для OLEG'arh с помощью ICQ
Восклицание подскажите как... организовать цикл из компонентов

стуация такая

form1.Button1.Caption:='x';
form1.Button2.Caption:='x';
form1.Button3.Caption:='x';
form1.Button4.Caption:='x';
form1.Button5.Caption:='x';


как сделать что то вроде

for i:=1 to 5 do
form1.Button(i).Caption:='x';
OLEG'arh вне форума   Ответить с цитированием
Старый 01.12.2006, 16:53   #2
mihali4
Старый брюзга
Заслуженный модератор
 
Аватар для mihali4
 
Регистрация: 22.11.2006
Адрес: Москва, Коньково
Сообщений: 8,851
Репутация: 2392
По умолчанию

Самый прямой:
var i: integer;
begin
for i:=0 to Form1.ComponentCount-1 do
begin
if (Components[i] is TButton) then
if ((Components[i] as TButton).Name='Button1') or
((Components[i] as TButton).Name='Button2') or
((Components[i] as TButton).Name='Button3') or
((Components[i] as TButton).Name='Button4') or
((Components[i] as TButton).Name='Button5') then
(Components[i] as TButton).Caption:='x';
end;
end;
__________________
Когда я вижу "памагити" в названии темы - я хватаюсь за пистолет...
mihali4 вне форума   Ответить с цитированием
Старый 01.12.2006, 19:03   #3
Taras
Пользователь
 
Регистрация: 28.11.2006
Сообщений: 19
Репутация: 30
По умолчанию

А вот и не так!

var i: integer;
begin
for i:=0 to Form1.ComponentCount-1 do
begin
if (Components[i] is TButton) then
with Components[i] as TButton do Name := 'x';
end;

Taras вне форума   Ответить с цитированием
Старый 01.12.2006, 20:48   #4
OLEG'arh
Пользователь
 
Аватар для OLEG'arh
 
Регистрация: 23.11.2006
Адрес: Ростов-на-Дону
Сообщений: 37
Репутация: 10
Отправить сообщение для OLEG'arh с помощью ICQ
По умолчанию

если извесно, что всего 5 Button, их нумерация начинается с 1 до 5 позиции

for j:= 1 to 5 do
(Form1.Components[j] as TButton).Caption:='x';

да кстати компилятор выдовал ошибку в варианте который представил mihali4
а так заработала. может это изза того что у меня делфи6???

var i: integer;
begin
for i:=0 to Form1.ComponentCount-1 do
begin
if (Form1.Components[i] is TButton) then
if ((Form1.Components[i] as TButton).Name='Button1') or
((Form1.Components[i] as TButton).Name='Button2') or
((Form1.Components[i] as TButton).Name='Button3') or
((Form1.Components[i] as TButton).Name='Button4') or
((Form1.Components[i] as TButton).Name='Button5') then
(Form1.Components[i] as TButton).Caption:='x';
end;
end;
OLEG'arh вне форума   Ответить с цитированием
Старый 01.12.2006, 21:45   #5
mihali4
Старый брюзга
Заслуженный модератор
 
Аватар для mihali4
 
Регистрация: 22.11.2006
Адрес: Москва, Коньково
Сообщений: 8,851
Репутация: 2392
По умолчанию

Цитата:
А вот и не так!
А если на форме до этого были накиданы другие баттоны с именами, например, But1, But2 ?
Не стоит горячиться...

Цитата:
если извесно, что всего 5 Button, их нумерация начинается с 1 до 5 позиции:
for j:= 1 to 5 do
(Form1.Components[j] as TButton).Caption:='x';
А с чего вы взяли, что в массиве индексов компонентов формы ваши кнопки будут иметь индексы от 1 до 5 ?
__________________
Когда я вижу "памагити" в названии темы - я хватаюсь за пистолет...
mihali4 вне форума   Ответить с цитированием
Старый 02.12.2006, 08:17   #6
Virtson
Владимир М.
Заслуженный модератор
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Адрес: Барнео ..
Сообщений: 1,295
Репутация: 411
Отправить сообщение для Virtson с помощью ICQ Отправить сообщение для Virtson с помощью Skype™
Счастье

for i:= 1 to 5 do
( Form1.FindComponent(Format('Button% d',[i])) as TButton).Caption:= '!';

Последний раз редактировалось Virtson; 02.12.2006 в 08:23.
Virtson вне форума   Ответить с цитированием
Старый 02.12.2006, 13:59   #7
mihali4
Старый брюзга
Заслуженный модератор
 
Аватар для mihali4
 
Регистрация: 22.11.2006
Адрес: Москва, Коньково
Сообщений: 8,851
Репутация: 2392
По умолчанию

То Virtson
Это все верно. А если кнопки в общем случае имеют абсолютно непохожие имена?
__________________
Когда я вижу "памагити" в названии темы - я хватаюсь за пистолет...
mihali4 вне форума   Ответить с цитированием
Старый 02.12.2006, 18:13   #8
OLEG'arh
Пользователь
 
Аватар для OLEG'arh
 
Регистрация: 23.11.2006
Адрес: Ростов-на-Дону
Сообщений: 37
Репутация: 10
Отправить сообщение для OLEG'arh с помощью ICQ
По умолчанию

Цитата:
Сообщение от Virtson Посмотреть сообщение
for i:= 1 to 5 do
( Form1.FindComponent(Format('Button% d',[i])) as TButton).Caption:= '!';
ВОТ! то что мне нужно.
благодарю за помощь
OLEG'arh вне форума   Ответить с цитированием
Старый 04.12.2006, 15:06   #9
inkvizitor
 
Регистрация: 04.12.2006
Сообщений: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Taras Посмотреть сообщение
А вот и не так!

var i: integer;
begin
for i:=0 to Form1.ComponentCount-1 do
begin
if (Components[i] is TButton) then
with Components[i] as TButton do Name := 'x';
end;

А если другие компоненты на форме.ПРограмме все равно какие элементы на форме что ли?Хотя идея не плохая т.к. если по mihali, то
возникает вопрос: а если этих элементов 100 и более тогда что?
Создать процедуру?
inkvizitor вне форума   Ответить с цитированием
Старый 04.12.2006, 18:58   #10
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Адрес: 116км
Сообщений: 229
Репутация: 276
Отправить сообщение для Сильванович Михаил с помощью ICQ
По умолчанию

Цитата:
Сообщение от Taras Посмотреть сообщение
А вот и не так!

var i: integer;
begin
for i:=0 to Form1.ComponentCount-1 do
begin
if (Components[i] is TButton) then
with Components[i] as TButton do Name := 'x';
end;

Так изменять-то вроде было надо Caption, а не Name... :D
__________________
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое создание элементов подскажите пожалуйста. можно ли в Делфи организовать следующее: по зад AniMEshKa Помощь студентам 4 19.04.2008 15:45
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
Подскажите как сделать цикл... Apollo_13 Общие вопросы Delphi 4 26.06.2007 22:01
3-ой цикл LeoN Общие вопросы Delphi 5 12.06.2007 14:15


Все интернет-магазины Москвы на Викимарте: компьютеры и софт, художественные книги и профессиональная литература, наручные часы.



04:02.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.

Ask Doctor at Healpth.com