Столкнулся с проблемой:
Пишу: with label1, label2, label3 do caption := 'метка'; В итоге значение "метка" применяется только объекту label3, а остальным нет. В чём моя ошибка ? |
Никогда не думал, что так можно написать. Что вы хотели сказать этим куском кода? Чтобы он выполнялся три раза для разных label? Я, конечно, delphi плохо знаю, но по-моему, так писать нельзя.
|
Просто такая запись эквивалентна следующей:
Код:
with label1 do |
Так, я что-то не понял.
Если она эквивалентна, то почему же она не правильна? |
Я рекомендовал прочесть то, что сказано на этот счет в помощи:
Цитата:
В вашем случае свойство caption можно поменять уже у самого низко расположенного по вложенности объекта TLabel... что в общем-то сразу видно из эквивалентного варианта кода. |
Prisoner
А как следует написать, чтобы caption='' применилось для всех label'ов? |
Установку свойств нескольких объектов можно сделать через RTTI функцию SetXXXProp, где XXX - мнемоника типа свойства и может быть Ord, Str, Float... а вот как реализовать обход компонентов для смены свойств уже дело конкретной задачи.
Для примера следующий обработчик клика на кнопку установит всем объектам на форме у которых есть свойство caption значение bla-bla-bla: Код:
procedure TForm1.Button1Click(Sender: TObject); PS для примера надо включить в раздел uses модуль TypInfo. |
Время: 04:46. |
Время: 04:46.
© OSzone.net 2001-