Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Оператор доступа в Delphi

Ответить
Настройки темы
Delphi - Оператор доступа в Delphi

Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Столкнулся с проблемой:

Пишу:

with label1, label2, label3 do
       caption := 'метка';

В итоге значение "метка" применяется только объекту label3,  а остальным нет.

В чём моя ошибка ?

-------
WelcomE to http://www.unfat.flip.ru


Отправлено: 20:12, 27-02-2004

 

Пользователь


Сообщения: 110
Благодарности: 1

Профиль | Отправить PM | Цитировать


Никогда не думал, что так можно написать. Что вы хотели сказать этим куском кода? Чтобы он выполнялся три раза для разных label? Я, конечно, delphi плохо знаю, но по-моему, так писать нельзя.

Отправлено: 02:34, 28-02-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Просто такая запись эквивалентна следующей:
Код: Выделить весь код
with label1 do
   with label2 do
       with label3 do
           caption:='метка';
Почитайте справку по инструкции with - там есть описание такой штуки.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 18:10, 28-02-2004 | #3


Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Так, я что-то не понял.
Если она эквивалентна, то почему же она не правильна?

-------
WelcomE to http://www.unfat.flip.ru


Отправлено: 19:34, 28-02-2004 | #4


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Я рекомендовал прочесть то, что сказано на этот счет в помощи:
Цитата:
with obj1, obj2, ..., objn do statement
эквивалентна
with obj1 do
 with obj2 do
    ...
    with objn do
statement
In this case, each variable reference or method name in statement is interpreted, if possible, as a member of objn; otherwise it is interpreted, if possible, as a member of objn-1; and so forth.
Имеем: В этом случае  каждое вхождение переменной или имени метода в statement интерпретируется, если возможно, как член objn; иначе интерепретируется, если возможно, как член objn-1 и так далее.

В вашем случае свойство caption можно поменять уже у самого низко расположенного по вложенности объекта TLabel... что в общем-то сразу видно из эквивалентного варианта кода.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 20:22, 28-02-2004 | #5


Аватара для UZER

Товарищ


Сообщения: 1467
Благодарности: 4

Профиль | Отправить PM | Цитировать


Prisoner
А как следует написать, чтобы caption='' применилось для всех label'ов?

-------
Жизнь-игра. Сюжет хреновый, но графика обалденная!


Отправлено: 10:33, 29-02-2004 | #6


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


Установку свойств нескольких объектов можно сделать через RTTI функцию SetXXXProp, где XXX - мнемоника типа свойства и может быть Ord, Str, Float... а вот как реализовать обход компонентов для смены свойств уже дело конкретной задачи.
Для примера следующий обработчик клика на кнопку установит всем объектам на форме у которых есть свойство caption значение bla-bla-bla:
Код: Выделить весь код
procedure TForm1.Button1Click(Sender: TObject);
Var
  i: integer;
  PropInfo: PPropInfo;
begin
for i:=0 to Form1.ComponentCount-1 do
  begin
    PropInfo := GetPropInfo( Form1.Components[i].ClassInfo, 'Caption');
    if PropInfo <> nil then
      SetStrProp( Form1.Components[i], PropInfo, 'bla-bla-bla' );
  end;
end;
В моем случае это было три надписи (TLabel).

PS для примера надо включить в раздел uses модуль TypInfo.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 20:46, 29-02-2004 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Оператор доступа в Delphi

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как оператор округляет проценты united Мобильные ОС, смартфоны и планшеты 11 18-02-2008 13:19
[решено] Javascript - Оператор === hasherfrog Вебмастеру 5 25-07-2007 14:05
оператор If... Else Pandora Вебмастеру 9 29-07-2005 08:43
Помогите начинающему понять оператор Си++ Guest Программирование и базы данных 4 11-10-2004 18:56
GPRS + Оператор kiro Мобильные ОС, смартфоны и планшеты 3 21-03-2004 21:19




 
Переход