Другие языки программирования и технологии

Вопрос по Delphi.

Имеется группа полей TEdit. Как (и можно ли) создать процедуру, которая бы работала со всеми такими полями одновременно? Например, везде заменяла бы некоторый введённый символ другим.
Элементарно.
Расположи на форме 5-6 компонентов TEdit, а на событие формы FormCreate вставь данный код:

procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
for i:=1 to ComponentCount do //Идем по массиву всех используемых на форме компонентов и если тип компонента TEdit, то присваиваем ему текст "Проверка".
if Components[i-1].ClassType = TEdit then
(Components[i-1] as TEdit).Text:='Проверка';
end;

Эта процедура установит текст всем компонентам класса TEdit.

Если нужно лишь отдельной группе - можно, например, воспользоваться функцией Components.GetNamePath, которая возвращает свойство в формате String Name (например, Edit1.Name='Edit1', она и вернет 'Edit1').. ну а дальше дело техники - называешь компоненты из группы "my_group_edit1", в цикле (for i:=1 to ComponentCount do) выполняешь проверку, имеются ли в Components.GetNamePath символы 'my_group_edit', если есть - то это компонент из твоей группы. . и делаешь с ним что нужно.

Удачи!
Олег 777
Олег 777
282
Лучший ответ
Алексей Черницкий А нельзя ли создать новый класс или компонент, желаемая процедура в котором будет методом?
Или я говорю бред?
Все компоненты формы находятся в массиве Components. Вот с ним и работай.
да в общем-то можно.. . если процедура или функция будет в том же модуле, то она будет иметь прямой доступ к тому что находится на форме.. . только обращаться надо через form1 . edit1 а не сразу edit1
можете написать функцию или прцедуру, где в качестве значению будете передавать объект.. . таки образом можно выборочно передавать управление функции для обработки конкретного поля
Создаем процедуру с одним параметром значения перменной. А в теле процедуры просто присваивание всем полям.
Максим Ахваев
Максим Ахваев
3 057