Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Свой обработчик для динамически созданного компонента   Найти похожие ветки 

 
Вася   (2010-03-29 04:37) [0]

создаю динамически tform:

newform:=tform.create(nil);
newform.visible:=true;


пытаюсь назначить ей свой onmousedown:

newform.onmousedown:=mouse_down;

а оно мне заявляет:

[Error] Incompatible types: "method pointer and regular procedure"

в интернете написано что-то примерно подобное:

> смотрим описание класса TNotifyEvent
>  > type TNotifyEvent = procedure (Sender: TObject) of object;
> и думаем что означают в описании слова of object.


я к сожалению не знаю что это значит, но может всё-таки можно назначить туда обычную процедуру:

procedure mouse_down(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); // объявление

implementation

...

procedure mouse_down(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
// something //
end;


как вообще правильнее делать-то?(


 
brother ©   (2010-03-29 06:18) [1]

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin

end;

значит:

> procedure mouse_down(Sender: TObject; Button: TMouseButton;
> Shift: TShiftState; X, Y: Integer);
> begin
> // something //
> end;


 
brother ©   (2010-03-29 06:20) [2]

зы. ты
> procedure mouse_down(Sender: TObject; Button: TMouseButton;
> Shift: TShiftState; X, Y: Integer);

проверял? ;)


 
Вася   (2010-03-29 06:21) [3]

м-м...не понял...а разве у меня не точно так же?


 
brother ©   (2010-03-29 06:22) [4]

я тебе привел пример и спросил про [2]


 
Вася   (2010-03-29 06:34) [5]

хм...

> указатель на процедуру 4 байта, а на метод класса "двойной" указатель в 8 байт...

не совсем понял "о чом тут ваще"(с), но получается что никак?((


 
brother ©   (2010-03-29 06:35) [6]

[2]


 
Метод   (2010-03-29 10:34) [7]

"Методу" при вызове передается скрытый параметр Self. Этим вызов "метода" отличается от вызова обычной "процедуры". Поэтому тебе компилятор и говорит, что "Несовместимые типы: "указатель на метод и обычная процедура"". Используй метод какого-то класса (той же формы) вместо обычной процедуры, как в [1]. И вообще, почитай, что такое "метод" и чем он отличается от "процедуры".


 
KSergey ©   (2010-03-29 12:28) [8]

Автор, почитайте вот тут
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


 
Вася   (2010-03-29 12:30) [9]

у меня в программе нету классов...тока tform который я динамически создаю...

я пытался читать про классы,но там половина слов непонятные...может книга плохая...=(
а метод - это вроде так функция внутри класса зовётся просто...

без классов совсем нельзя?они мне не нравятся что-то совсем...=\\


 
brother ©   (2010-03-29 12:36) [10]

имхо, топик - развод ибо [2], а автору могу пожелать одного: удачи в программировании!


 
Метод   (2010-03-29 12:42) [11]

TButton, TForm - классы. Без классов в Delphi делать особо нечего. Можно, конечно, но - не надо. Delphi - объектно-ориентированный язык, поэтому в нем есть и повсеместно используются классы. Парадигма объектно-ориентированного программирования сама по себе подразумевает использование классов. Классы - краеугольный камень ООП и Delphi. Не нравятся классы - используй другой язык программирования. Вот только ООП, как показывает опыт, в большинстве случаев лучше процедурного программирования.

я пытался читать про классы,но там половина слов непонятные...может книга плохая

То есть, ты хочешь сказать, что в книге используются какие-то не такие слова? Английские? Или матерные?


 
Омлет ©   (2010-03-29 12:49) [12]

> brother ©   (29.03.10 12:36) [10]
> имхо, топик - развод ибо [2]


А что такого в [2]? Не понял.


 
Вася   (2010-03-29 13:59) [13]

> brother ©   (29.03.10 12:36) [10]
> имхо, топик - развод ибо [2]


там всё в точности как у меня.и не работает.сам бы проверил сначала...=\\

> То есть, ты хочешь сказать, что в книге используются какие-
> то не такие слова?


просто неизвестные мне.например от "инкапсуляция" каждый раз мурашки...какое-то жуткое слово...х_х
от определений незнакомых понятий в википедии становится только непонятнее - в раскрытии каждого понятия снова незнакомые термины...


 
Вася   (2010-03-29 14:04) [14]

а вообще ни разу не встречал на форумах или обучающих сайтах проектов где бы новые классы создавались с нуля...
только использование готовых обработчиков vcl или jedi...а там только обычное...

vcl удобно,не спорю...но не рационально же...


 
Плохиш ©   (2010-03-29 14:29) [15]

Сантехнику - сантехниково.


 
KSergey ©   (2010-03-29 15:37) [16]

> Вася   (29.03.10 14:04) [14]
> vcl удобно,не спорю...но не рационально же...

еще один рационализатор...

тогда пройдите на wasm.ru


 
Демо ©   (2010-03-29 15:53) [17]


> Плохиш ©   (29.03.10 14:29) [15]
> Сантехнику - сантехниково.


Садовнику - садовниково.


 
Демо ©   (2010-03-29 15:55) [18]


> просто неизвестные мне.например от "инкапсуляция" каждый
> раз мурашки...какое-то жуткое слово...х_хот определений
> незнакомых понятий в википедии становится только непонятнее
> - в раскрытии каждого понятия снова незнакомые термины..
> .


А придётся поучиться.
Без понимания ООП в Delphi далее "Hello, World!" делать нечего.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.044 c
15-1272621615
Кто б сомневался
2010-04-30 14:00
2010.08.27
ФТС разрешила Михалкову получать авторские сборы с продаж чистых


6-1217400351
workbench
2008-07-30 10:45
2010.08.27
TNMSMTP


2-1267693170
00110011
2010-03-04 11:59
2010.08.27
раздел const


2-1270871051
tippa
2010-04-10 07:44
2010.08.27
Synchronize и критические секции


2-1271157616
@!!ex
2010-04-13 15:20
2010.08.27
Корректно ли сделал define?