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

Вниз

Как рисовать картинки из PageControl.Images по событию OnDrawTab?   Найти похожие ветки 

 
Andrey007   (2002-04-25 13:30) [0]

procedure TForm1.PageControlDrawTab(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean);
var lpRect: TRect;
begin
lpRect:=Rect;
Control.Canvas.FillRect(Rect);
DrawText(Control.Canvas.Handle,PChar(TPageControl(Control).Pages[TabIndex].Caption),
-1,lpRect,DT_CENTER or DT_VCENTER or DT_SINGLELINE);
А как рисовать картинки?
end;


 
Song   (2002-04-25 13:35) [1]

Control.Canvas.Draw(..);


 
Andrey007   (2002-04-25 13:40) [2]

А в скобках что? Что за Graphic: TGraphic туда надо засовывать?


 
Song   (2002-04-25 13:49) [3]

procedure TForm1.PageControlDrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
var lpRect: TRect;
BitMap:TBitMap;
begin
With Control.Canvas Do
Begin
FillRect(Rect);
BitMap:=TBitMap.Create;
try
PageControl1.Images.GetBitMap(TabIndex,BitMap);
Draw(Rect.Left+2,Rect.Top+2,BitMap);
finally
BitMap.Free;
end;
End;
end;

То же самое делается в TPageControl автоматически


 
Andrey007   (2002-04-25 13:59) [4]

Во-первых, спасибо.
Во-вторых после try надо писать иначе: PageControl.Images.GetBitMap(TPageControl(Control).Pages[TabIndex].ImageIndex,BitMap);
и проверку if TPageControl(Control).Pages[TabIndex].ImageIndex>-1 then ...
В-третьих, появляется проблема выравнивания текста так, чтобы он не наползал на картинку.


 
Song   (2002-04-25 14:06) [5]

Какой Вы умный, только почему-то сами ничего сделать не можете.

Во-первых, что такое PageControl? Я так думаю, что PageControl1
Во-вторых, TabIndex я привёл потому, что хотел уточнить, что первый параметр в GetBitMap - Integer, если Вы скажете, что мой вариант - не рабочий, можете пойти на улицу, поискать камень
В-третьих, если хотите помощи, не нужно делать такой тон.


 
Andrey007   (2002-04-25 14:13) [6]

Я приношу Вам свои извинения за то, что у меня так неуклюже получилось Вас отблагодарить.
Насчёт TabIndex"а это было просто замечание.
А PageControl вместо PageControl1 я написал просто потому что у меня в программе он так называется. Ещё раз извиняюсь.


 
Song   (2002-04-25 14:18) [7]

Чтобы текст не наползал на картинку нужно:
если испоьзовать DrawText, нужно модифицировать lpRect (состовляющую lpRect.Left)
либо выводить текст через TextOut:
Control.Canvas.TextOut(Rect.Left+20,Rect.Top+2,TPageControl(Control).Pages[TabIndex].Caption);


 
Andrey007   (2002-04-25 14:39) [8]

Спасибо.


 
Andrey007   (2002-04-25 16:40) [9]

Проблему наезда текста на картинку я решил так:

Control.Canvas.FillRect(Rect);
if TPageControl(Control).Pages[TabIndex].ImageIndex>-1 then
begin
BitMap:=TBitMap.Create;
try
BitMap.Canvas.Brush.Color:=Control.Canvas.Brush.Color;
TPageControl(Control).Images.GetBitMap(TPageControl(Control).Pages[TabIndex].ImageIndex,BitMap);
if TPageControl(Control).ActivePageIndex=TabIndex then
Control.Canvas.Draw(Rect.Left+8,Rect.Top+2,BitMap)
else Control.Canvas.Draw(Rect.Left+4,Rect.Top+2,BitMap)
finally
BitMap.Free
end;
if TPageControl(Control).ActivePageIndex=TabIndex then
Control.Canvas.TextOut(Rect.Left+30,Rect.Top+4,TPageControl(Control).Pages[TabIndex].Caption)
else Control.Canvas.TextOut(Rect.Left+26,Rect.Top+4,TPageControl(Control).Pages[TabIndex].Caption)
end
else DrawText(Control.Canvas.Handle,PChar(TPageControl(Control).Pages[TabIndex].Caption),
-1,lpRect,DT_CENTER or DT_VCENTER or DT_SINGLELINE);


 
Song   (2002-04-25 16:44) [10]

Не вижу инициализацию/пересчёт параметра lpRect


 
Andrey007   (2002-04-25 18:05) [11]

Я её просто пропустил при копировании lpRect:=Rect;



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

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

Наверх




Память: 0.46 MB
Время: 0.004 c
14-26235
cok
2002-03-30 19:38
2002.05.09
Помогите, пожалуйста (срочно!).


3-26029
a_k
2002-04-16 16:31
2002.05.09
Проблемы с фильтром.


1-26067
DenNNis
2002-04-26 08:38
2002.05.09
Уважаемые Мастера!


4-26295
SergeySA
2002-03-04 19:15
2002.05.09
Как можно получить handle listbox-а который в чужом окне


3-26027
bas1
2002-04-16 10:36
2002.05.09
RANDOM в ORACLE





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