полазил по FAQу - не нашел.. как я могу использовать Sender и где я могу его использовать??? если я правильно понимаю, то его можно использовать для одинаковых действий над объектами одного и того же класса.. это так??
вот напимер, как с помощью Sender мне в 3 checkbox - ах поменять свойство Visible??? пишу: (Sender as TCheckBox).Enabled:=true; - компиллирует но выдает ошибку... подскажите пожалуйста..
А ты где это пишешь? Sender as TCheckBox будет работать без ошибки только в обработчике событий TCheckBox (т. е., когда Sender is TCheckBox = True). Параметр Sender указывает объект-источник события. Например, в обработчике события TButton.OnClick параметр Sender будет указывать на объект типа TButton, сгенерировавший событие по щелчку мышкой.
priboltik, приведи, пожалуйста, полностью обработчик события... и поконкретнее, что в каком случае должно происходить... при щелчке на CheckBox 3 CheckBox'а должны становиться невидимыми? Или только один, на который кликнули? и описание ошибки, которая у тебя выдается.
hint: Enabled и Visible - это разные свойства ;) хочешь менять видимость - с ней и работай.
Сообщение отредактировано: мисс_граффити -
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
hint: Enabled и Visible - это разные свойства ;) хочешь менять видимость - с ней и работай.
сорри. погнал мне нужен вообще в обработчик кнопки вставить... это реально???.. вот фрагмент кода:
procedure TForm1.Button1Click(Sender: TObject); begin if edit1.Text='' then begin if opendialog1.Execute then begin AssignFile(f,opendialog1.FileName); reset(f); Edit1.Text:=opendialog1.FileName; (Sender as TCheckBox).Enabled:=true; end; end else begin try Assignfile(f,edit1.text); reset(f); except showMessage('Файл не найден'); edit1.Text:=''; end; end; end;
сегодня в универе посоветовали сначала сделать проверку: if (Sender is TCheckbox) then (sender as TCheckbox).enabled; .. еще правда не пробовал..
Смотри: Sender - это то, что, собственно, вызвало событие. В данном случае, насколько я вижу, это кнопка Button1. НО! Если ты привешиваешь обработчик Button1Click на, например, событие CheckBox1 OnClick и щелкаешь по CheckBox1 - Sender'ом будет CheckBox1. Не все CheckBox'ы, а он один. Тогда можно работать так, например:
procedure TForm1.Button1Click(Sender: TObject); begin if Sender is TCheckBox then begin (Sender as TCheckBox).Visible:=false; ShowMessage('Спрятали CheckBox'); end; if Sender is TButton then begin (Sender as TButton).Visible:=false; ShowMessage('Спрятали Button'); end; end;
Но тут надо быть осторожным: если фактически Sender - BitBtn (TBitBtn - наследник TButton), то Sender is TButton вернет истину.
Если же тебе надо поменять видимость у всех CheckBox'ов, а не у одного, вызвавшего событие (или CheckBox'ы вообще не имеют отношения к событию) - работай с массивом Components, а не с Sender'ом
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to ComponentCount - 1 do if (Components[i] is TLabel) then (Components[i] as TLabel).Caption := 'I''m Tlabel component !'; end;
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'