Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизПозвольте еще немного Вас помучать... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c