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

Вниз

Создание компонент в Delphi !?   Найти похожие ветки 

 
Ig ©   (2004-04-13 21:46) [0]

Попробовал тут компонент сделать - кнопочка на основе TImage, и запарился с сообщением, точнее с обработкой сообщения : "message CM_MOUSEENTER" и "message CM_MOUSELEAVE", когда мышь входит в область компонента и выходит за его пределы.

Пишу так :

uses
  SysUtils, Classes, Controls, ExtCtrls, Messages;

type
  TImageBtn = class(TImage)
 private
    { Private declarations }

...
FImageNormal: String;
    FImageMove: String;
    FImageClick: String;
    Procedure SetImageNormal(const Value : String);
    Procedure SetImageMove(const Value : String);
    Procedure SetImageClick(const Value : String);
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;

...

 published
    { Published declarations }
...

property ImageNormal: String read FImageNormal write SetImageNormal;
    property ImageMove: String read FImageMove write SetImageMove;
    property ImageClick: String read FImageClick write SetImageClick;
    constructor create(AOwner : TComponent); override;

...

procedure Register;

implementation

procedure Register;
begin

...

end;

constructor TImageBtn.create(AOwner : TComponent);
begin
inherited create(AOwner);
end;

Procedure TImageBtn.SetImageNormal(const Value : String);
begin
  If value<>"" then FImageNormal:=value;
end;

Procedure TImageBtn.SetImageMove(const Value : String);
begin
If value<>"" then FImageMove:=value;
end;

Procedure TImageBtn.SetImageClick(const Value : String);
begin
  If value<>"" then FImageClick:=value;
end;

procedure TImageBtn.MouseDown(Button: TMouseButton; Shift: TShiftState;
   X, Y: Integer);
begin
  if ImageClick<>"" then
     picture.Bitmap.LoadFromFile(ImageClick);
end;

procedure TImageBtn.MouseUp(Button: TMouseButton; Shift: TShiftState;
   X, Y: Integer);
begin
  if ImageMove<>"" then
   picture.Bitmap.LoadFromFile(ImageMove);
end;

procedure TImageBtn.CMMouseEnter(var msg:TMessage);
var
shift: TShiftState;
begin
  if ImageMove<>"" then
     begin
        if ssleft in shift then
           picture.Bitmap.LoadFromFile(ImageMove)
        else
           picture.Bitmap.LoadFromFile(ImageClick);
     end;
end;

procedure TImageBtn.CMMouseLeave(var msg: TMessage);
begin
  if ImageNormal<>"" then
      picture.Bitmap.LoadFromFile(ImageNormal);

end;


end
.


Когда пытаюсь установить этот компонент пишет:

[Error] ImageBtn.pas(95): Declaration of "CMMouseEnter" differs from previous declaration
[Error] ImageBtn.pas(104): Declaration of "CMMouseLeave" differs from previous declaration
[Fatal Error] dclusr.dpk(36): Could not compile used unit "..\..\..\..\Documents and Settings\Мои документы\ImageBtn.pas"


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

Заранее спасибо :)


 
Gero ©   (2004-04-13 21:59) [1]

uses Messages;


 
Семен Сорокин ©   (2004-04-13 22:03) [2]

inherited;


 
Gero ©   (2004-04-13 22:03) [3]

Ошибся, не то.

> procedure CMMouseLeave(var Message: TMessage);
> procedure CMMouseLeave(var msg: TMessage);

Не идентично, правда?


 
Ig ©   (2004-04-13 22:16) [4]

inherited; <-это у меня есть просто здесь не писал.

to Gero ©
:)
Одного не пойму, всегда пишу Message, а тут, с какого то написал msg, наверно пора спать идти :)
А, что насчет книжки, можно найти в электронном виде?


 
Knight ©   (2004-04-13 22:19) [5]

Есть классная книга по созданию компонентов, просто бестселлер, которая, кстати, поставляется вместе с Delphi и лежит в папке $(DELPHI)\source :)

Кстати, чтоб при нажатии одной кнопки остальные отжимались, можешь ещё заглянуть в TSpeedButton, оттуда можно взять обмен данными между кнопками в одной группе.


 
Rouse_ ©   (2004-04-13 22:22) [6]

Есть такое издание...
http://www.delphimaster.ru/books/1656145/


 
Ig ©   (2004-04-13 22:33) [7]

to Knight ©
Спасибо там смотрел.
Как понять : "обмен данными между кнопками в одной группе";

to Rouse_ ©
Этой книжки у нас в городе нет, заказал, сказали, что привезут через 4 дня, жду.. Только почему-то, автор там один указан, хотя все остальное тоже самое..

А в электронном виде есть, что-нибудь?


 
Knight ©   (2004-04-13 23:29) [8]


> Как понять : "обмен данными между кнопками в одной группе";

В смысле если захочешь сделать, чтобы кнопки были не только на клик, но и с фиксацией типа TSpeedButton, то при нажатии надо будет делать посыл бродкастом сообщения об этом нажатии другим кнопкам, чтобы те, если они в той же группе и GroupIndex>0 сделали Down:=False; сам такое делал :)



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

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

Наверх





Память: 0.47 MB
Время: 0.033 c
1-1081912401
i2e
2004-04-14 07:13
2004.05.02
Выбор папки - есть аналоги функции SelectDirectory(..) ?


6-1078770487
Iks
2004-03-08 21:28
2004.05.02
Приветствую всех!!! Я создаю что-то типа сканер компов


1-1082180972
oleg_v
2004-04-17 09:49
2004.05.02
Фокус


6-1078848315
SH
2004-03-09 19:05
2004.05.02
Сокеты в Delphi 7


3-1081333615
Kein
2004-04-07 14:26
2004.05.02
разрушение структуры таблицы





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