![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TLabel + Paint + Align [D7]
mokmoc © (2008-08-03 17:41:00)Есть собственный наследник TLabel, в котором перекрыта процедура Paint, в которой я дополнительно делаю необходимую отрисовку. Все работает отлично, но я заметил, что как только я у своего TMyLabel изменю положение Align на любое значение кроме None, так сразу начинает весь TMyLabel и прочие контроллы на форме тоже.
В чем может быть проблема?
mokmoc (2008-08-03 18:10:00) [1]
> {RASkov} © (03.08.08 18:07) [6]
Да, это моя ошибка. Убрал это заработало все как надо.
--
Я хотел рисовать ниже по высоте (а AutoSize автоматически устанавливал размер). Поэтому я принудительно увеличивал высоту. Теперь это мне не надо.
{RASkov} (2008-08-03 18:09:00) [2]> [5] mokmoc (03.08.08 18:03)
> Height := TextHeight(Caption) + 2;
И теперь думай, что будет при Align отличном от None в методе паинт....
Anatoly Podgoretsky (2008-08-03 18:08:00) [3]Какие секунды, каждый пиксель отрисовываешь
Canvas.Pixels
{RASkov} (2008-08-03 18:07:00) [4]А зачем в методе Paint менять размеры класса/компонента(TMyLabel)?
mokmoc (2008-08-03 18:03:00) [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;
mokmoc (2008-08-03 18:01:00) [6]"Мигать" они начинают. Как будто я что-то каждую секунду отрисовываю.
Правильный$Вася (2008-08-03 17:59:00) [7]
> так сразу начинает весь TMyLabel и прочие контроллы на
> форме тоже.
так чево начинает?
> with Canvas, ClientRect do
грозит трудноуловимыми багами
mokmoc (2008-08-03 17:56:00) [8]Вот код:
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;
{RASkov} (2008-08-03 17:50:00) [9]Что начинают-то?)
> В чем может быть проблема?
В неправильном коде.