Главная страница
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.018 c
1-92502
caH4o
2002-10-16 01:16
2002.10.28
Видимость ComboBox в ячейке StringGrid


1-92466
Геннадий
2002-10-16 22:23
2002.10.28
Не получается у меня с потоками...


3-92349
BigVova
2002-10-04 19:55
2002.10.28
Поддержка многоязычности на IB


14-92726
Игорь Шевченко
2002-10-08 10:10
2002.10.28
Alx2, с днем рождения!


6-92631
Руль
2002-08-27 01:41
2002.10.28
Снова вопрос по извлечению текста из сайта