Главная страница
    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.042 c
3-1204532945
Ega23
2008-03-03 11:29
2008.09.14
Добавить разом много записей.


2-1217453505
Alex_Storm
2008-07-31 01:31
2008.09.14
Добавить строки в ListViev


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


15-1216731998
No_Dead
2008-07-22 17:06
2008.09.14
тоже от скуки интересно стало («всё пожать»)


15-1216058333
GrayFace
2008-07-14 21:58
2008.09.14
Система контроля версий кода для VS2005 для удаленной работы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский