![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Как можно обратиться к процедурам формы из собственноручно написанной процедуры? Выпадает ошибка: Undeclarated identifier: 'Sender'. Пробовал писать (Sender) и (Sender: TObject) - ошибка не проходит.
Код: Код:
procedure procedure1; begin if Form1.Label6.Caption<>('') then if MessageDlg('Файл не сохранён. Сохранить?',mtConfirmation,[mbYes, mbNo],0)=6 then Form1.N10Click(Sender: TObject); end; |
#2
|
||||
|
||||
![]() Код:
procedure procedure1; begin if Form1.Label6.Caption<>('') then if MessageDlg('Файл не сохранён. Сохранить?',mtConfirmation,[mbYes, mbNo],0)=6 then Form1.N10Click(nil); end; Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
R-18Rus (14.05.2012)
|
#3
|
|||
|
|||
![]() Цитата:
Код:
procedure procedure1; begin if Form1.Label6.Caption<>('') then if MessageDlg('Файл не сохранён. Сохранить?',mtConfirmation,[mbYes, mbNo],0)=6 then Form1.N10Click(Self); end; |
#4
|
||||
|
||||
![]() Интерфейс навесь, потом будешь приводить, если привелось - дернешь нужный метод.
|
#5
|
||||
|
||||
![]() Self не сработал.
А почему сработал Nil? Насколько мне известно - это указатель вникуда. |
#6
|
|||
|
|||
![]() Цитата:
Ну, если к нему нет обращения, то, собственно, почему бы ему и не сработать. Вот если внутри обработчика N10Click ты попробуешь обратиться к Sender - получишь ошибку. А Self не сработал потому что у тебя его и нет, т.к. данная процедура не является методом класса (в смысле, объекта, для метода класса, который of class, тоже нет Self). Учите матчасть, это всегда полезно. |
#7
|
||||
|
||||
![]() Цитата:
Это не указатель, а объект, который вызывает данную процедуру. Опять же как сказано выше, если в обработчике нажатия на указанный пункт меню не обрабатывается sender, то указывай nil. Google в помощь |
#8
|
||||
|
||||
![]() если в N10Click(Sender:TObject); обрабатывать аргумент (Sender), то nil тоже не сработает, здесь значение nil является просто заглушкой, т.к. процедура требует какого-либо аргумента
значение Self не сработало, т.к. процедура, из которой происходит вызов (согласно примера выданного icsander' ом) не является методом какого либо класса, соответственно значения self у нее вообще не существует и обращение к этому значению выдает ошибку опередили ![]() Последний раз редактировалось cotseec, 14.05.2012 в 07:53. |
Этот пользователь сказал Спасибо cotseec за это полезное сообщение: | ||
R-18Rus (19.05.2012)
|
#9
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.procedure1; ![]() Google в помощь |
#10
|
||||
|
||||
![]() Код:
Form1.Button1Click(nil); Form1.Button1Click(Form1); Form1.Button1Click(Application); Form1.Button1Click(TButton.Create(Application)); Пишу программы за еду. __________________ |
#11
|
|||
|
|||
![]() Цитата:
![]() Self - это явное задание экземпляра класса в его методе. Например для формы - это указание на саму форму: Код:
procedure TForm1.N10Click(Sender: TObject); begin Showmessage(Self.classname+#13#10+Self.name); end; Self иногда, еще называют безопасным аргументом методов класса, поэтому предпочтительно использовать именно его. Последний раз редактировалось icsander, 15.05.2012 в 16:33. |