Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];

Вниз

TPageControl не получается сделать OwnerDraw   Найти похожие ветки 

 
@!!ex ©   (2011-06-16 17:41) [0]

Когда контрол рисует все сам - получается все корректно:
http://develop.sol-online.org/deutch_1.png

Стоит мне включить свойство OwnerDraw и назначит обработчик OnDrawTab вида:
var
 r:TRect;
 s:string;
begin
 r:=Rect;
 s:=TPageControl(Control).Pages[TabIndex].Caption;
 Control.Canvas.TextRect(r,s,[tfCenter,tfVerticalCenter]);
end;


И в середину вклинивается текст не относящийся к этому PageControl"у:
http://develop.sol-online.org/deutch_2.png

Что я делаю не так????


 
KilkennyCat ©   (2011-06-16 17:56) [1]

TPageControl(Control).Pages[TabIndex].Caption; куда-нить в мемо выведи и погляди, какие они есть.


 
@!!ex ©   (2011-06-16 18:10) [2]

> [1] KilkennyCat ©   (16.06.11 17:56)
> TPageControl(Control).Pages[TabIndex].Caption; куда-нить
> в мемо выведи и погляди, какие они есть.

Ага. Как раз этим занимался. В консольку вывел.

Вобщем это невидимый TabSheet.
Судя по всему индексы хранятся в соответствии со всеми табами.
А при рендере TabIndex - это индекс только видимого таба.
Как TabIndex перевести из индекса видимых табов в индекс всех табов?


 
KilkennyCat ©   (2011-06-16 18:41) [3]

наверно, просто проверять, видимый пэйдж или нет...


 
@!!ex ©   (2011-06-16 19:08) [4]

да не!
Приходит сообщение на отрисовку с неверным индексом!
Например:
Таб0 Таб1 Таб2 Таб4

Таб3 - не видим.
Когда нужно отрисовывать Таб4, приходит индекс Таб3, при этом rect содержит зону для рисования именно в Таб4.


 
@!!ex ©   (2011-06-16 19:26) [5]

Сделал вот так:
 if TPageControl(Control).Pages[TabIndex].TabVisible then begin
   r:=Rect;
   s:=TPageControl(Control).Pages[TabIndex].Caption;
   Control.Canvas.TextRect(r,s,[tfCenter,tfVerticalCenter]);

   writeln(Control.Name," ",TabIndex," ",s);
 end;

И получил контрол без текста. :(


 
KilkennyCat ©   (2011-06-16 22:40) [6]


> Когда нужно отрисовывать Таб4, приходит индекс Таб3, при
> этом rect содержит зону для рисования именно в Таб4.

странно. все проверил? как в генофонде реализовано глядел? Я б глянул, да ща в командировке, нет делфей.


 
icWasya ©   (2011-06-17 09:40) [7]

Windows - PageControl неумеет делать невидимые табы.
А в генофонде для этого сделан трюк - когда делаете tabvisible:=false, то соответствующий tabsheet исключается из Windows-PageControl.
Может быть из за этого и происходят упомянутые глюки.


 
@!!ex ©   (2011-06-17 10:37) [8]

В генофонде есть вот такая функция:
function TPageControl.PageIndexFromTabIndex(TabIndex: Integer): Integer;
var
 I: Integer;
begin
 // Tabs doesn"t contain hidden TabSheets so the index
 // needs to be adjusted to account for any hidden pages.
 Result := TabIndex;
 for I := 0 to TabIndex do
   if not Pages[I].TabVisible then
     Inc(Result);
end;

Она protected, сделал такую же в своем коде и соответственно получил то что нужно.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.10.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
1-1267696444
Вася
2010-03-04 12:54
2011.10.02
AnimateWindow и чужие окна


2-1307976499
Push
2011-06-13 18:48
2011.10.02
ПРоверака логина и пароля


15-1307987145
Andrey K
2011-06-13 21:45
2011.10.02
Караул. Не запустить Delphi


2-1308002107
And7
2011-06-14 01:55
2011.10.02
Edit и Skrollbar


15-1307584738
brother
2011-06-09 05:58
2011.10.02
Обновление прошивки в DI-804HV сбросятся ли настройки?





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