Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.09;
Скачать: CL | DM;

Вниз

Как рисовать картинки из 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
3-25983
Alexander Vasjuk
2002-04-15 12:10
2002.05.09
Как привести NULL к нулю в SQL запросе?


1-26048
Саша
2002-04-24 10:38
2002.05.09
добавить свойство к форме


1-26050
Невидимка
2002-04-25 18:43
2002.05.09
Как скрыть пункт в ComboBox?


1-26108
DikobraZ
2002-04-26 21:47
2002.05.09
Клавиатурный шпион


1-26152
SP
2002-04-24 14:05
2002.05.09
ListView в виде дерева