Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Самопальные компоненты на стеклянной форме


Автор: Cumshot 7.4.2010, 14:36
Имеется компонент, например, наследник TCustomControl:
Как только наводим на контрол мышу, он должен поменять свой цвет на красный, как убираем - обратно на белый.
Примерно такой способ работает если форма не прозрачная, я имею в виду прозрачность Aero а не AlphaBlend.
Код

type
  TMyControl = class(TGraphicControl)
  private
    pCursorInControl:boolean;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  protected
    procedure Paint; override;
  public
    constructor Create(AOwner: TComponent);reintroduce;
    destructor Destroy; override;
  published
end;

Код

procedure TMyControl.CMMouseEnter(var Message: TMessage);
begin
  pCursorInControl:=true;
  Paint;
end;
//------------------------------------------------------------------------------
procedure TMyControl.CMMouseLeave(var Message: TMessage);
begin
  pCursorInControl:=false;
  Paint;
end;
//------------------------------------------------------------------------------
procedure TMyControl.Paint;
begin
  inherited;
  if pCursorInControl then Canvas.Brush.Color:=clRed
  else Canvas.Brush.Color:=clWhite;
  Canvas.Rectangle(0,0,Width,Height);
end;

Но если у формы установить свойства:
GlassFrame.Enabled:=true;
GlassFrame.SheetOfGlass:=true;
То мой контрол тоже становится полупрозрачным. Как это побороть, да и вообще как грамотно рисовать на таком стекле?

Автор: otRock 7.4.2010, 21:37
Тоже интерисует..

Автор: Torbins 18.4.2010, 13:49
Сам долго возился с этим вопросом после перезхода на висту. Но в результате победил smile http://www.delphikingdom.com/asp/answer.asp?IDAnswer=63111

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)