Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Вася   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.061 c
15-1274862762
ocean
2010-05-26 12:32
2010.08.27
Печать картинок


2-1268370164
MonoLife
2010-03-12 08:02
2010.08.27
Меню дочерних форм


3-1237837778
Гарик
2009-03-23 22:49
2010.08.27
Вызов хранимых процедур


2-1270733493
Виктор
2010-04-08 17:31
2010.08.27
DBGrid и DBEdit


2-1272264722
timekiller
2010-04-26 10:52
2010.08.27
TMemoryStream vs Microsoft Word





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский