Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: 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 вся ветка

Текущий архив: 2008.09.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
2-1217484390
a.a.j.
2008-07-31 10:06
2008.09.14
inifiles vs xml


4-1196163825
delpher_g
2007-11-27 14:43
2008.09.14
Как программно замедлить скорость вращения CD-ROMа


4-1195550970
guav
2007-11-20 12:29
2008.09.14
Список всех дисков (не томов, именно физических дисков).


2-1217390260
apic
2008-07-30 07:57
2008.09.14
сокрытие файлов и папок


2-1217517743
altatr
2008-07-31 19:22
2008.09.14
Использование процедур