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

Вниз

Позвольте еще немного Вас помучать...   Найти похожие ветки 

 
KidMan ©   (2002-10-15 23:02) [0]

Я опять про мышку ((( Это у меня как навязчивая идея...
Простохотелось бы чтобы когда курсор над например кнопкой или лабелом...сменялся цвет шрифта и сама надпись... как в дельфях в инспекторе объектов...

Помогите плиз... Заранее благодарю!


 
KidMan ©   (2002-10-15 23:50) [1]

Плиззззззззззззз!


 
Rouse_ ©   (2002-10-15 23:55) [2]

Вот пожалуйста тебе простенький примерчик. Этот компонент пишется от силы за 2-3 минуты

{*******************************************************}
{ }
{ Borland Delphi Visual Component Library }
{ }
{ Copyright (c) 1998-2002 Fangorn Wizards Lab }
{ }
{*******************************************************}

unit FWLabel;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics;

type
TFWLabel = class(TLabel)
private
FOnComponent: Boolean;
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
public
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("Fangorn Wizards Lab", [TFWLabel]);
end;

{ TFWLabel }

procedure TFWLabel.CMMouseEnter(var Message: TMessage);
var
Rect: TRect;
begin
Rect := ClientRect;
Canvas.Font := Font;
Canvas.Brush.Color := Color;
Canvas.Font.Color := clWhite;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, PChar(Caption), Length(Caption), Rect,
DT_EXPANDTABS or DT_WORDBREAK or DT_LEFT);
Canvas.Brush.Style := bsClear;
Canvas.Font.Color := Font.Color;
Rect.Left := Rect.Left+1;
Rect.Top := Rect.Top +1;
DrawText(Canvas.Handle, PChar(Caption), Length(Caption), Rect,
DT_EXPANDTABS or DT_WORDBREAK or DT_LEFT);
end;

procedure TFWLabel.CMMouseLeave(var Message: TMessage);
var
Rect: TRect;
begin
Rect := ClientRect;
Canvas.Font := Font;
Canvas.Brush.Color := Color;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, PChar(Caption), Length(Caption), Rect,
DT_EXPANDTABS or DT_WORDBREAK or DT_LEFT);
end;


end.


Желаю успехов


 
KidMan ©   (2002-10-16 00:07) [3]

Господи! Я не умею писать компоненты... Я всего лишь... (млин) начинаю 3D языки изучать! (((


 
Rouse_ ©   (2002-10-16 00:11) [4]

procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;


Вот эти сообщения тебе и нужно перехватывать и в их обработчиках и писать отрисовку обьекта

Желаю успехов


 
KidMan ©   (2002-10-16 00:15) [5]

Спасибо тебе большое! Спасибо... но я ничего не понял...(( извини... наверно кто то сходу схватил... но это не для меня...
Не утруждай себя больше.... потому что я не пойму язык профи...
Может кто из таких "как я" мне более доходчиво сможет объяснить?

Спасибо тебе Роза еще раз за твое внимание!


 
Kibitzer ©   (2002-10-16 00:16) [6]

To Rouse_
Если метка будет близко к краю формы и/или резко дёрнуть мышкой, то есть вероятость что сообщения CMMouseLeave небудет. Ничего лучшего кроме TTimer, для решения этой проблемы я не видел. (Имеется ввиду наследники TGraphicControl)


 
Rouse_ ©   (2002-10-16 00:24) [7]


> Kibitzer © (16.10.02 00:16)
> Если метка будет близко к краю формы и/или резко дёрнуть
> мышкой, то есть вероятость что сообщения CMMouseLeave небудет.


Не хочу обидеть, но это глупость. Сообщение пройдет в ЛЮБОМ случае


Желаю успехов


 
KidMan ©   (2002-10-16 00:24) [8]

Простите... ничего не понял... (((


 
Rouse_ ©   (2002-10-16 00:27) [9]

> KidMan © (16.10.02 00:24)
Попробуй поиграться с тем кодом который я тебе предложил, я буду на форуме до утра, если что-то не поймешь спрашивай, с удовольствием разьясню

Желаю успехов


 
KidMan ©   (2002-10-16 00:31) [10]

Спасибо Роуз!
Я постраюсь что нить допедрить сам... Все жене тупой ;))

Если бум вопросы тоскорее всего - завтра...

В любом случае - спасибо! (улыбается)


 
Song ©   (2002-10-16 09:54) [11]

А что такое 3D язык?


 
Игорь Шевченко ©   (2002-10-16 10:03) [12]

Кстати говоря, сообщения CM_MOUSEENTER и CM_MOUSELEAVE реализуются в обработчике Application.Idle, если Idle не будет, то не будет и этих сообщений. :-)


 
Kibitzer ©   (2002-10-16 10:21) [13]


> Rouse_


> > Kibitzer © (16.10.02 00:16)
> > Если метка будет близко к краю формы и/или резко дёрнуть
>
> > мышкой, то есть вероятость что сообщения CMMouseLeave
> небудет.
>
>
> Не хочу обидеть, но это глупость. Сообщение пройдет в ЛЮБОМ
> случае
Я тоже не хочу никого обижать, но это общеизвесная бага :-(
Только, что специально установил эту компоненту, положил на форму, сделал Left:=0, запускаю, навожу мышкой, теперь резко влево и... метка остаётся с окантовкой, т.е. CMMouseLeave не было... :-(

ps. В Delphi6 у TLabel уже есть соответствующие события: OnMouseEnter и OnMouseLeave.



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

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.017 c
3-92394
PeteDm
2002-10-01 20:57
2002.10.28
MSSQL


4-92778
BFG-2000
2002-09-13 11:52
2002.10.28
Как реализовать ButtonClick ?


4-92788
dumb
2002-09-04 22:56
2002.10.28
Как изменить цвет имен файлов


1-92422
Magic
2002-10-17 15:19
2002.10.28
Кодировки текса


1-92595
Slexx
2002-10-17 08:20
2002.10.28
интерфейс