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

Вниз

Создание компонент в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
1-1082103142
Dysan
2004-04-16 12:12
2004.05.02
как перевернуть Tlabel ?


14-1081579363
Алхимик
2004-04-10 10:42
2004.05.02
Профессиональная деформация


6-1076015637
DDS
2004-02-06 00:13
2004.05.02
О том как добавить свой пункт в меню IE?


14-1081661067
RealRascal
2004-04-11 09:24
2004.05.02
LIST of TMyType


14-1081322647
Игорь Шевченко
2004-04-07 11:24
2004.05.02
:)