Форум: "Потрепаться";
Текущий архив: 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.038 c