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

Вниз

Как добавить компоненту новое событие?   Найти похожие ветки 

 
Mars   (2002-09-11 15:46) [0]

Например RichEdit"у событие onScroll.


 
MBo   (2002-09-11 15:48) [1]

Проще всего сделать наследника.
Можно и перекрыть WindowProc


 
Mars   (2002-09-11 16:04) [2]

Пробую через наследника,
компилятор пропускает, но на событие никаких реакций!

TMyRichEdit = class(TRichEdit)
private
FOnScroll: TScrollEvent;
published
property OnScroll: TScrollEvent read FOnScroll write FOnScroll;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
MRE1:TMyRichEdit;
begin
MRE1:=TMyRichEdit.Create(Self);
MRE1.OnScroll:=MREScroll;
end;

procedure TForm1.MREScroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
ShowMessage("onScroll Event");
end;



 
Виктор Щербаков   (2002-09-11 16:10) [3]

Обработчик события, который храниться в FOnScroll ты должен вызывать сам из кода твоего компонента. Ты это делаешь?


 
Демонов Е.В.   (2002-09-11 16:16) [4]

>>Пробую через наследника,
>>компилятор пропускает, но на событие никаких реакций!

Действительно, смешно , ты бы тогда просто в тексте программы написал : -
//Delphi, Хочу программму такую .... чтобы ..."
Компилятор тоже пропустит - но такую, чтобы .... не сделает


 
Старый Паскалист   (2002-09-11 16:18) [5]

А генерить событие кто будет? - ты думаешь, если назвал событие
OnScroll, то его кто-то вызовет при прокрутке?
Нужно ловить соответствующие события и в их обработчика генерировать событие.

Надо ловить сообщения. возникающие при скроллировании.
В грубом приближении что-то вроде

TMyRichEdit = class(TRichEdit)
private
FOnScroll: TScrollEvent;
published
property OnScroll: TScrollEvent read FOnScroll write FOnScroll;
procedure DoScroll(...); dynamic;
//begin
// Генеришь событие
// if Assigned(FOnScroll) then FOnScroll(...);
//end;
procedure WMHScroll(var Msg: TScrollMessage); message WM_HScroll;
// begin
// with Msg do
// begin
// DoScroll(направление, Msg.ScrollCode, Msg.Pos..., вобщем, преобразовывать инфу из Msg в то, что нужно для TScrollEvent);
// end;
// end;
procedure WMVScroll(var Msg: TScrollMessage); message WM_VScroll; //
// то же самое с учётом направления
//
end;


 
MBo   (2002-09-11 16:20) [6]

пример наследника с обработчиком событий
http://www.swissdelphicenter.ch/en/showcode.php?id=1068


 
Старый Паскалист   (2002-09-11 16:28) [7]

И в обработчиках собыитий inherited не забудь!!!.

procedure WMHScroll(var Msg: TScrollMessage); message WM_HScroll;
begin
inherited;
with Msg do
begin
DoScroll(...);
end;
end;


 
Mars   (2002-09-11 17:55) [8]

Дааа, я чето думал все так просто!
Щас попробую чего то склеить из Ваших ответов.


 
Song   (2002-09-11 18:01) [9]


protected
Procedure WhetherIsWindowsShutDown(Var Msg:TMessage); message WM_ENDSESSION;
...

Procedure TForm1.WhetherIsWindowsShutDown(Var Msg:TMessage);
Begin
IF Msg.wParam=1 then MainForm.Close;
inherited;
End;


Сразу предупреждаю тех, кто захочет после моего ответа сказать что WM_ENDSESSION не катит, нужен WM_QUERYENDSESSION. Дык вот много раз убеждался и сейчас могу сказать: просто для того, чтобы закрыть форму и/или выполнить действия некритичные по времени, этого события достаточно.



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

Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
3-73552
dihlos
2002-09-03 13:06
2002.09.23
Подскажите как?


1-73610
Злой!!!
2002-09-12 12:51
2002.09.23
Перевод строки


1-73722
Rule
2002-09-11 10:11
2002.09.23
Помогите


14-73823
K-Sergey
2002-08-26 20:24
2002.09.23
Как набрать номер с помощью модема


7-73913
Александр
2002-07-10 10:41
2002.09.23
Принтеры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский