Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
1-26084
kull
2002-04-26 12:48
2002.05.09
WARNINGS!


14-26250
vopros
2002-03-29 15:43
2002.05.09
Гибнет форум (этот).IronHawk задай еще пару вопросов а?


1-26163
Lord BDV
2002-04-24 19:51
2002.05.09
Разработчики Delphi схалтурили


1-26109
Дельфятник
2002-04-26 12:01
2002.05.09
Вопрос по TCheckBox.


3-26012
Voldemar
2002-04-14 23:24
2002.05.09
Количество файлов в DataBase




   Наверх