![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помощь [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