Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1177
от 09.09.2008, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 398, Экспертов: 51
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 143045: Уважаемые эксперты, привидите плиз пример кода, в котором бы использовалось перечисление на форме контролов типа Edit. В VBA я это делал так: for i=1 to 9 x=Form1.Controls("TextBox" & i).Value А как такой же фокус провернуть ...

Вопрос № 143.045
Уважаемые эксперты, привидите плиз пример кода, в котором бы использовалось перечисление на форме контролов типа Edit. В VBA я это делал так:
for i=1 to 9
x=Form1.Controls("TextBox" & i).Value

А как такой же фокус провернуть в Дельфи?
Отправлен: 04.09.2008, 12:13
Вопрос задал: Maximus777 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Denisss

Здравствуйте, Maximus777!

В Delphi это делается примерно так:
Код:
var
i: Integer;
x: String;
begin
for i:= 1 to 9 do
begin
x:= TEdit(Self.FindComponent('Edit' + IntToStr(i))).Text;
// Делаем что-нибудь с х
end;
end;
Функция FindComponent ищет компоненты по их именам. По умолчанию компоненты типа TEdit так и обозначаются в Delphi: Edit1, Edit2, ..., Edit9.
IntToStr преобразует число в текст. TEdit() преобразует класс TComponent в TEdit, что дает доступ к его функциям и свойствам.

Удачи!
---------
Все должно быть сделано настолько просто, насколько это возможно. Но не проще. (с) А.Эйнштейн
Ответ отправил: Denisss (статус: Профессор)
Россия, Москва
ICQ: 281599577
----
Ответ отправлен: 04.09.2008, 12:45
Оценка за ответ: 5
Комментарий оценки:
Спасибо. То что надо! Надо признать что в VBA это делается намного проще.

Отвечает: Кэр Лаэда
Здравствуйте, Maximus777!


Код:

procedure AllControls;

function rec(Par: TComponent): Boolean;
var
i: Integer;
begin
for I := 0 to Par.ComponentCount - 1 do begin
if Par.Components[i] is TEdit then begin
//что сделать с компоненттом
end;

end
else
Rec(Par.Components[i]);

end;
end;

var

par: TWinControl;
begin

par := Form1;
rec(Par);

end;



;


этот код должен найти все эдиты те которые находятся на форме даже если они на панелях или на других компонентах
---------
Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Практикант)
Ответ отправлен: 04.09.2008, 13:06
Оценка за ответ: 4
Комментарий оценки:
Я примерно так и сделал, нарыв где-то в сети такой пример. Но это немного не то. В VBA примере я просто перебираю нужные мне контролы (а ведь общее кол-во может быть больше) и всё. Пример Denisss\'а ближе к теме, буду пробовать его внедрять.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное