TabIndex X TCustomTabControl ?
Olá Pessoal, boa tarde !
Alguém aí pode me dar uma ajuda com isso ?
Olha só, tenho um componente derivado de TCustomTabControl
eu uso a propriedades Tabs para criar abas com registro de um Dataset,
até aí tudo bem, eu preciso fazer ao equivalente ao q faço com o PageControl, pintar as abas criadas:
[color=green:97db81eeee]Com PageControl[/color:97db81eeee]
[color=blue:97db81eeee]Não achei uma maneira de pintar as abas da Tabs do TCustomTabControl[/color:97db81eeee]
Obrigada.
Alguém aí pode me dar uma ajuda com isso ?
Olha só, tenho um componente derivado de TCustomTabControl
eu uso a propriedades Tabs para criar abas com registro de um Dataset,
até aí tudo bem, eu preciso fazer ao equivalente ao q faço com o PageControl, pintar as abas criadas:
[color=green:97db81eeee]Com PageControl[/color:97db81eeee]
var nAux: Integer; begin for nAux := 0 to Self.TabIndex-1 do begin if Self.TabIndex <> nAux then begin PaintTab(nAux); Self.Pages[nAux].Brush.Color := clWhite; Self.Pages[nAux].Repaint; end; end;
[color=blue:97db81eeee]Não achei uma maneira de pintar as abas da Tabs do TCustomTabControl[/color:97db81eeee]
Obrigada.
Renatacoimbra
Curtidas 0
Respostas
Marcelo.l
12/10/2005
Use a propriedade images (se foi herdado do TCustomTabControl).
Inclua em seu form um TImageList (aba Win32), adicione as imagens na ordem em que aparecem os Tabs.
Inclua em seu form um TImageList (aba Win32), adicione as imagens na ordem em que aparecem os Tabs.
GOSTEI 0
Renatacoimbra
12/10/2005
Obrgada marcelo.l !
Mais não é isso, não quero colocar uma imagem, e sim pintar a aba com canvas.
Algo do tipo:
só que ao invés de usar Pages:
Gostaria de usar algo como:
Brigada !
Mais não é isso, não quero colocar uma imagem, e sim pintar a aba com canvas.
Algo do tipo:
var nAux: Integer; begin for nAux := 0 to Self.TabIndex-1 do begin if Self.TabIndex <> nAux then begin PintarTab(nAux); Self.Pages[nAux].Brush.Color := clWhite; Self.Pages[nAux].Repaint; end; end;
só que ao invés de usar Pages:
Self.Pages[nAux].Brush.Color := clWhite;
Gostaria de usar algo como:
Self.Tabs[nAux].Brush.Color := clWhite;
Brigada !
GOSTEI 0
Renatacoimbra
12/10/2005
Ajuda aí gente !
...
...
GOSTEI 0
Marcelo.l
12/10/2005
Olá, Renata
Desculpe, n~´ao estava prestando atenção e não vi o que vc realamente queria.
Para ´desenhar´ na aba do TCustomTabControl vc terá que setar a propriedade ´OwnerDraw´ para TRUE.
Aí, evento ´OnDrawTab´ vc pode fazer o que quiser usando o CANVAS do componente. Ex:
A desvantagem é que vc também terá que ´desenhar´ o texto da aba, selecionando fonte, tamanho,etc.
Espero ter ajudado.
Desculpe, n~´ao estava prestando atenção e não vi o que vc realamente queria.
Para ´desenhar´ na aba do TCustomTabControl vc terá que setar a propriedade ´OwnerDraw´ para TRUE.
Aí, evento ´OnDrawTab´ vc pode fazer o que quiser usando o CANVAS do componente. Ex:
procedure TForm1.TabControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var s : string; begin s := TabControl1.Tabs[TabIndex]; case TabIndex of 0: TabControl1.Canvas.Brush.Color := clGreen; 1: TabControl1.Canvas.Brush.Color := clYellow; 2: TabControl1.Canvas.Brush.Color := clRed; end; TabControl1.Canvas.FillRect(Rect); TabControl1.Canvas.Brush.Style := bsClear; TabControl1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, s ); end;
A desvantagem é que vc também terá que ´desenhar´ o texto da aba, selecionando fonte, tamanho,etc.
Espero ter ajudado.
GOSTEI 0
Renatacoimbra
12/10/2005
Obrigada Marcelo mais uma vez pela dica,
Eu não estou escrevendo o código no evento do componente, criei um componente herdando do TCustomTabControl e costaria de implementar esse código para mudar seu visual, só que esse código se refere a propriedades Pages do PageControl, no meu caso é a Tabs.
[color=blue:d408dd4365]OBS: Rotina retirada do componente TXPPageControl[/color:d408dd4365]
[]´s
Eu não estou escrevendo o código no evento do componente, criei um componente herdando do TCustomTabControl e costaria de implementar esse código para mudar seu visual, só que esse código se refere a propriedades Pages do PageControl, no meu caso é a Tabs.
[color=blue:d408dd4365]OBS: Rotina retirada do componente TXPPageControl[/color:d408dd4365]
procedure TPageControl.hookPaint(var Msg: TMessage); var p: TPaintStruct; nAux: Integer; rAux, rLin: TRect; begin BeginPaint(Self.Handle, p); EndPaint(Self.Handle, p); // Pinta as tabulações Canvas.Brush.Color := TPanel(Parent).Color; Canvas.FillRect(Rect(0, 0, Self.Width, 21)); Canvas.Pen.Width := 1; for nAux := 0 to Self.PageCount-1 do begin if Self.ActivePageIndex <> nAux then begin PaintTab(nAux); Self.Pages[nAux].Brush.Color := clWhite; Self.Pages[nAux].Repaint; end; end; if Self.ActivePageIndex <> -1 then begin nAux := Self.ActivePageIndex; PaintTab(nAux); Self.Pages[nAux].Brush.Color := clWhite; Self.Pages[nAux].Repaint; end; rLin := tabRect(nAux); Self.Color := TForm(Parent).Color; // Pinta o corpo Self.Canvas.Brush.Color := $00B4A791; rAux := Self.DisplayRect; InflateRect(rAux, 4, 4); Self.Canvas.FrameRect(rAux); Self.Canvas.Brush.Color := clWhite; if Self.PageCount <> 0 then begin InflateRect(rAux, -1, -1); Self.Canvas.FrameRect(rAux); InflateRect(rAux, -1, -1); Self.Canvas.FrameRect(rAux); InflateRect(rAux, -1, -1); Self.Canvas.FrameRect(rAux); InflateRect(rAux, -1, -1); Self.Canvas.FrameRect(rAux); end else begin InflateRect(rAux, -1, -1); Self.Canvas.FillRect(rAux); end; Self.Canvas.Pen.Width := 1; Self.Canvas.Pen.Color := clWhite; Self.Canvas.MoveTo(rLin.Left-1, rLin.Bottom); Self.Canvas.LineTo(rLin.Right+1, rLin.Bottom); Msg.Result := 0; if Self.ActivePageIndex <> -1 then Self.Pages[Self.ActivePageIndex].Brush.Color := clWhite; end;
[]´s
GOSTEI 0
Renatacoimbra
12/10/2005
...
GOSTEI 0