Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.59 MB
Время: 0.039 c
14-92704
bassa
2002-10-08 14:30
2002.10.28
IBM


14-92729
AL2002
2002-10-08 13:49
2002.10.28
Люди, вы не могли бы подсказать


14-92738
Sergey13
2002-10-09 11:00
2002.10.28
Качество обучения в ВУЗах.


8-92612
Deadlock
2002-06-30 05:30
2002.10.28
Тормоза DelphiX


3-92346
PavelOKES
2002-10-07 09:42
2002.10.28
Ошибка с PReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский