![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Позвольте еще немного Вас помучать...
KidMan © (2002-10-15 23:02:00)Я опять про мышку ((( Это у меня как навязчивая идея...
Простохотелось бы чтобы когда курсор над например кнопкой или лабелом...сменялся цвет шрифта и сама надпись... как в дельфях в инспекторе объектов...
Помогите плиз... Заранее благодарю!
Kibitzer (2002-10-16 10:21:00) [1]
> Rouse_
> > Kibitzer © (16.10.02 00:16)
> > Если метка будет близко к краю формы и/или резко дёрнуть
>
> > мышкой, то есть вероятость что сообщения CMMouseLeave
> небудет.
>
>
> Не хочу обидеть, но это глупость. Сообщение пройдет в ЛЮБОМ
> случае
Я тоже не хочу никого обижать, но это общеизвесная бага :-(
Только, что специально установил эту компоненту, положил на форму, сделалLeft:=0, запускаю, навожу мышкой, теперь резко влево и... метка остаётся с окантовкой, т.е. CMMouseLeave не было... :-(
ps. В Delphi6 уTLabelуже есть соответствующие события:OnMouseEnterиOnMouseLeave.
Игорь Шевченко (2002-10-16 10:03:00) [2]Кстати говоря, сообщения CM_MOUSEENTER и CM_MOUSELEAVE реализуются в обработчике Application.Idle, если Idle не будет, то не будет и этих сообщений. :-)
Song (2002-10-16 09:54:00) [3]А что такое 3D язык?
KidMan (2002-10-16 00:31:00) [4]Спасибо Роуз!
Я постраюсь что нить допедрить сам... Все жене тупой ;))
Если бум вопросы тоскорее всего - завтра...
В любом случае - спасибо! (улыбается)
Rouse_ (2002-10-16 00:27:00) [5]> KidMan © (16.10.02 00:24)
Попробуй поиграться с тем кодом который я тебе предложил, я буду на форуме до утра, если что-то не поймешь спрашивай, с удовольствием разьясню
Желаю успехов
Rouse_ (2002-10-16 00:24:00) [6]
> Kibitzer © (16.10.02 00:16)
> Если метка будет близко к краю формы и/или резко дёрнуть
> мышкой, то есть вероятость что сообщения CMMouseLeave небудет.
Не хочу обидеть, но это глупость. Сообщение пройдет в ЛЮБОМслучае
Желаю успехов
KidMan (2002-10-16 00:24:00) [7]Простите... ничего не понял... (((
Kibitzer (2002-10-16 00:16:00) [8]To Rouse_
Если метка будет близко к краю формы и/или резко дёрнуть мышкой, то есть вероятость что сообщения CMMouseLeave небудет. Ничего лучшего кроме TTimer, для решения этой проблемы я не видел. (Имеется ввиду наследники TGraphicControl)
KidMan (2002-10-16 00:15:00) [9]Спасибо тебе большое! Спасибо... но я ничего не понял...(( извини... наверно кто то сходу схватил... но это не для меня...
Не утруждай себя больше.... потому что я не пойму язык профи...
Может кто из таких "как я" мне более доходчиво сможет объяснить?
Спасибо тебе Роза еще раз за твое внимание!
Rouse_ (2002-10-16 00:11:00) [10]procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
Вот эти сообщения тебе и нужно перехватывать и в их обработчиках и писать отрисовку обьекта
Желаю успехов
KidMan (2002-10-16 00:07:00) [11]Господи! Я не умею писать компоненты... Я всего лишь... (млин) начинаю 3D языки изучать! (((
Rouse_ (2002-10-15 23:55:00) [12]Вот пожалуйста тебе простенький примерчик. Этот компонент пишется от силы за 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-15 23:50:00) [13]Плиззззззззззззз!