Конференция "Компоненты" » Ккак правильно перекрыть OnPaint наследника TLabel?
 
  • Константинов © (05.02.07 01:27) [0]
    Пывтаюсь примерно так:
    TMapLabel = class(TLabel)
     private
       procedure Paint;override;
      ...
     end;

    implementation

    procedure TMapLabel.Paint;
     var Text : string;
    begin
     inherited Paint;
     //  Нужно, чтобы лейбл был прозрачным, но в рамочке
     if FShowBorder then
     begin
       Canvas.Brush.Style := bsClear;
       Canvas.Rectangle(Canvas.ClipRect);
     end;
    end;

    Все вроде бы работает, но до того времени пока компонент не частично перекыт другими окнами. ( появляются ченые полосы )
    Все приходит в норму при вызове TMyLabel.invalidate.
  • RASkov (05.02.07 02:16) [1]
    > Canvas.Rectangle(Canvas.ClipRect);

    Замени на

    if FShowBorder then
    begin
      Canvas.Brush.Style := bsClear;
      Canvas.Rectangle(ClientRect);
    end;

  • TStas © (15.02.07 23:11) [2]
    >Константинов procedure Paint;override; //А у Вас компилятор не ругается, что Вы область видимости сузили? Protected, вообще-то
 
Конференция "Компоненты" » Ккак правильно перекрыть OnPaint наследника TLabel?
Есть новые Нет новых   [119213   +30][b:0][p:0.001]