Вниз
Скачать: CL | DM;

TLabel + Paint + Align   Найти похожие ветки 

← →
mokmoc   (2008-08-03 17:41) [0]

Есть собственный наследник TLabel, в котором перекрыта процедура Paint, в которой я дополнительно делаю необходимую отрисовку. Все работает отлично, но я заметил, что как только я у своего TMyLabel изменю положение Align на любое значение кроме None, так сразу начинает весь TMyLabel и прочие контроллы на форме тоже.

В чем может быть проблема?


← →
{RASkov} ©   (2008-08-03 17:50) [1]

Что начинают-то?)

> В чем может быть проблема?

В неправильном коде.


← →
mokmoc   (2008-08-03 17:56) [2]

Вот код:
procedure TMyLabel.Paint;
var
 X, X1: Integer;
begin
 inherited;
 if FPseudoWeb then
   with Canvas, ClientRect do
   begin
     Pen.Style := psSolid;
     Pen.Color := clBlue;
     Height := TextHeight(Caption) + 2;
     X := Left + TextWidth(Caption);
     X1 := Left;
     while X >= X1 do
     begin
       Canvas.Pixels[X1, Top + TextHeight(Caption)] := $00FD407D;
       Inc(X1, 2);
     end;
   end;
end;


← →
Правильный$Вася   (2008-08-03 17:59) [3]


>  так сразу начинает весь TMyLabel и прочие контроллы на
> форме тоже.

так чево начинает?

> with Canvas, ClientRect do

грозит трудноуловимыми багами


← →
mokmoc   (2008-08-03 18:01) [4]

"Мигать" они начинают. Как будто я что-то каждую секунду отрисовываю.


← →
mokmoc   (2008-08-03 18:03) [5]

Вот код без ClientRect, ибо я забыл убрать некоторые не нужности.
procedure TMyLabel.Paint;
var
 X, X1: Integer;
begin
 inherited;
 if FPseudoWeb then
   with Canvas do
   begin
     Height := TextHeight(Caption) + 2;
     X := Left + TextWidth(Caption);
     X1 := Left;
     while X >= X1 do
     begin
       Canvas.Pixels[X1, Top + TextHeight(Caption)] := $00FD407D;
       Inc(X1, 2);
     end;
   end;
end;


← →
{RASkov} ©   (2008-08-03 18:07) [6]

А зачем в методе Paint менять размеры класса/компонента(TMyLabel)?


← →
Anatoly Podgoretsky ©   (2008-08-03 18:08) [7]

Какие секунды, каждый пиксель отрисовываешь
Canvas.Pixels


← →
{RASkov} ©   (2008-08-03 18:09) [8]

> [5] mokmoc   (03.08.08 18:03)
> Height := TextHeight(Caption) + 2;

И теперь думай, что будет при Align отличном от None в методе паинт....


← →
mokmoc   (2008-08-03 18:10) [9]


> {RASkov} ©   (03.08.08 18:07) [6]

Да, это моя ошибка. Убрал это заработало все как надо.
--
Я хотел рисовать ниже по высоте (а AutoSize автоматически устанавливал размер). Поэтому я принудительно увеличивал высоту. Теперь это мне не надо.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.019 c
15-1216718835
dle
2008-07-22 13:27
2008.09.14
DataLife Engine Free


11-1193034025
Дмитрий Пырин
2007-10-22 10:20
2008.09.14
проблема с Bitmap.LoadFromFile


2-1217571111
kate
2008-08-01 10:11
2008.09.14
Cохранение выбранного элемента ComboBox как название файла


15-1216391681
shlst
2008-07-18 18:34
2008.09.14
Вирус напал необычный или что это вообще?


3-1205932798
elserpiente
2008-03-19 16:19
2008.09.14
Malformed string




   Наверх