Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.064 c