|
Вопрос # 515/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
есть код:
for i:= 0 to ComponentCount-1 do
if Components[i] is TDBEditEh then
begin
(Components[ai] as TDBEditEh).Color:=clBtnFace;
(Components[i] as TDBEditEh).ReadOnly:=True;
end;
Как его нужно изменить чтобы я мог найти зарание известные компоненты типа TDBEditEh
тоест например есть 10 компонентов а мне нужны только 4 из них и я знаю их названия??
 |
Вопрос задал: Сидаровский Георгий (статус: Посетитель)
Вопрос отправлен: 23 апреля 2007, 11:52
Состояние вопроса: решён, ответов: 4.
|
Ответ #1. Отвечает эксперт: Иусов Сергей Ник.
Здравствуйте, Сидаровский Георгий!
Можно в данном случае поступить немного подругому:
(Form1.FindComponent('Тут_Имя_Которое_Ты _Знаешь') as TDBEditEh).ReadOnly:=False;
и меняй имя компонента в цикле.
 |
Ответ отправил: Иусов Сергей Ник. (статус: 3-ий класс)
Время отправки: 23 апреля 2007, 11:59
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Николай Рубан
Это можно произвести например так:
for i:= 1 to 10 do
TDBEditEh(FindComponent('DBEdit'+ IntToStr(i))).ReadOnly:=True;
Good Luck!!!
 |
Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 23 апреля 2007, 12:50
|
Ответ #3. Отвечает эксперт: Вадим К
Вы же знаете имена компонентов = вот и обращайтесь.
Хотя может не хочеться дублировать код для каждого - так это просто - делаем процедуру, которой в качестве параметра передаём компонент
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 23 апреля 2007, 14:27
Оценка за ответ: 4
|
Ответ #4. Отвечает эксперт: min@y™
А ещё можно свойству Tag всех компонентов TDBEditEh на форме присвоить разные числа (например, от 1 до 10). Затем в цикле перебрать их все и, сравнивая Tag каждого с заданными, менять ReadOnly. См. пример в приложении. Там ищутся гриды с Tag = 2, 5, 7.
Приложение: Переключить в обычный режим- for i:= 0 to ComponentCount-1 do
- if (Components[i] is TDBEditEh) and (TDBEditEh(Components[i]).Tag in [2, 5, 7])
- then (TDBEditEh(Components[i]).ReadOnly:= True;
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 24 апреля 2007, 08:22
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 0.
31 января 2011, 20:00: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|