|
Вопрос # 3 272/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Вопрос таков: есть большое кол-во Memo и Edit (в моём случае по 12). И их иногда нужно очищать. Пробовал писать процедуру (указана внизу), обругало Access Violation'ом. Пришлось делать тупым перебором. Можно ли как-то этого избежать?
Приложение: Переключить в обычный режим- {{code}}
- procedure TForm1.ClearMemos(Quant: byte);
- var i: byte;
- begin
- for i:=1 to Quant do TMemo('Memo'+IntToStr(i)).Clear;
- end;
- {{/code}}
 |
Вопрос задал: AlphA (статус: Посетитель)
Вопрос отправлен: 11 октября 2009, 16:02
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 7; последнее сообщение — 12 октября 2009, 10:21; участников в обсуждении: 3.
|
IlluminatI (статус: 2-ой класс), 11 октября 2009, 17:28 [#1]:
Привет AlphA!
Как насчет такого кода (по нажатию кнопки):
procedure TForm1.Button1Click(Sender: TObject);
var i: byte;
begin
for I := 0 to ComponentCount - 1 do
begin
if (Components[i] is TEdit) then (Components[i] as TEdit).Text:='';
if (Components[i] is TMemo) then (Components[i] as TMemo).Text:='';
end;
end;
|
|
AlphA (статус: Посетитель), 11 октября 2009, 18:15 [#2]:
Вроде работает... Но как? Берёт первые 12 созданных компонентов такого-то типа и чистит?
|
|
IlluminatI (статус: 2-ой класс), 11 октября 2009, 18:28 [#3]:
пробегается по всем компонентам (а не по первым 12ти), и, если это TEdit или TMemo - очищает его. Конечно, код можно еще оптимизировать, чтобы не писать два if...then подряд, но это уже мелочи
|
|
AlphA (статус: Посетитель), 11 октября 2009, 18:40 [#4]:
А можно как-то запретить чистить определённые объекты?
|
|
IlluminatI (статус: 2-ой класс), 11 октября 2009, 18:46 [#5]:
этот код чистит только Edit / Memo. В принципе, можно запретить чистить определенные Edit / Memo, например, поставить для определенных компонентов свойство Tag и проверять (сразу после begin такой код):
if (Components[i].Tag неравно < значение Tag компонента > ) then
begin
...
end;
|
|
AlphA (статус: Посетитель), 11 октября 2009, 18:56 [#6]:
Спасибо!
|
|
Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 12 октября 2009, 10:21 [#7]:
Еще можно воспользоваться функцией поиска компонента по имени.
for i:=1 to Quant do
TMemo(FindComponent('Memo'+IntToStr(i))).Clear;
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|