Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помощь [D6, WinME]


котел ©   (2002-11-20 13:26:00) 

Как сделать чтобы при нахождении курсора мыши над визуальным компонентом прорисовывалась рамка


40º   (2002-11-20 15:53:00) [1]

Для компонентов с парент = форма можно так:

type
TCMMouseXXX = record
Msg: Cardinal;
Unused: Cardinal;
Sender: TControl;
Result: Integer;
end;

TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure FormPaint(Sender: TObject);
private
FContouredControl: TControl;
procedure SetContouredControl(const Value: TControl);
public
property ContouredControl: TControl read FContouredControl write SetContouredControl;

procedure CMMouseEnter(var Msg: TCMMouseXXX); message CM_MOUSEENTER;
procedure CMMouseLeave(var Msg: TCMMouseXXX); message CM_MOUSELEAVE;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.CMMouseEnter(var Msg: TCMMouseXXX);
begin
ContouredControl := Msg.Sender;
end;

procedure TForm1.CMMouseLeave(var Msg: TCMMouseXXX);
begin
ContouredControl := nil;
end;

procedure TForm1.SetContouredControl(const Value: TControl);
begin
if FContouredControl <> Value then
begin
FContouredControl := Value;
Invalidate;
end;
end;

procedure TForm1.FormPaint(Sender: TObject);
var R: TRect;
begin
if FContouredControl <> nil then
begin
R := ContouredControl.BoundsRect;
InflateRect(R, 2, 2);
Canvas.Brush.Color := clRed;
Canvas.FrameRect(R);
end;
end;

end.


Comp   (2002-11-20 15:21:00) [2]

Если этот компонент имеет свою рамку, у которой можно менять тип, то обработай событие OnMouseMove...


OlegMsc   (2002-11-20 14:47:00) [3]

а если отрисовать свою собственную рамку, то посмотри FrameRgn


roadster   (2002-11-20 14:39:00) [4]

какая рамка? Если нужно этот контроль делать активным, то на OnMouseMove повесить SetFocus


Наверх

Титульная страница Поиск, карта сайта Написать письмо