Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1216979977
Jolik
2008-07-25 13:59
2008.09.14
Есть работа...


2-1217659794
гость
2008-08-02 10:49
2008.09.14
Что такое файл в формате CSV? %)


2-1217575300
DeeNamid
2008-08-01 11:21
2008.09.14
Пинг


15-1216941163
wl
2008-07-25 03:12
2008.09.14
Лолита. Набоков, Кубрик и д.р.


6-1193251938
Leron
2007-10-24 22:52
2008.09.14
Домашняя сеть + инет + локалка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский