Форум: "Основная";
Текущий архив: 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