Fórum Determinar PageControl.TabWidth conforme tamanho do caption #295002
09/09/2005
0
eu realizo a criação de tabsheets dinamicamente.
o camptio desse tabscheet é o nome do cliente.
só que eu gostaria de definir um pagecontrol1.tabwidth = 150 e fazer com que o nome do caption se for maior que esse width de 150 receba 3 pontos.
por exemplo:
Maria Silva (é um nome que entra nesse width)
Joaquim Pereira Santos da Silva (não entra) gostaria que o caption então ficasse Joaquim Pereira San...
como faço ?
e ao selecionar um dos tabsheets eu gostaria que o tabwidth desse selecionado ficasse autosize, então ao selecionar o tab do joaquim iria aparecer o nome completo dele.
obrigado
Diogo
Diogoalles
Curtir tópico
+ 0Posts
09/09/2005
Massuda
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var R: TRect; S: string; begin with Control.Canvas do begin if Active then Brush.Color := clHighlight else Brush.Color := clBtnFace; Brush.Style := bsSolid; FillRect(Rect); if TabIndex >= 0 then begin if Active then Font.Color := clHighlightText else Font.Color := clBtnText; Brush.Style := bsClear; R := Rect; S := (Control as TPageControl).Pages[TabIndex].Caption; DrawText(Handle, PChar(@S[1]), Length(S), R, DT_NOPREFIX or DT_LEFT or DT_BOTTOM or DT_END_ELLIPSIS); end; end; end;
Gostei + 0
14/09/2005
Diogoalles
estou tentando o código q vc passou, mas inclusive coloquei um ´brake point´ e em nenhum momento passa pelo código. A propriedade OwnerDraw está True.
procedure TFrm550F.PgCtrlClienteDrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var R: TRect; S: string; begin with Control.Canvas do begin if Active then Brush.Color := clHighlight else Brush.Color := clBtnFace; Brush.Style := bsSolid; FillRect(Rect); if TabIndex >= 0 then begin if Active then Font.Color := clHighlightText else Font.Color := clBtnText; Brush.Style := bsClear; R := Rect; S := (Control as TPageControl).Pages[TabIndex].Caption; DrawText(Handle, PChar(@S[1]), Length(S), R, DT_NOPREFIX or DT_LEFT or DT_BOTTOM or DT_END_ELLIPSIS); end; end; end;
O que tenho de diferente é que só tenho o componente PageControl no form sem nenhum Tabsheet que são criados dinamicamente da seguinte forma:
if Tab = nil then begin Tab := TTabSheet.Create(PgCtrlCliente); Tab.Caption := NmPac; Tab.PageControl := PgCtrlCliente; end;
obrigado
Diogo
Gostei + 0
14/09/2005
Massuda
Você definiu o evento TPageControl.OnDrawTab no Object Inspector?
A propriedade TPageControl.TabWidth está com um valor não nulo?
Gostei + 0
14/09/2005
Diogoalles
isso mesmo
tenho um valor de 180
obrigado
Gostei + 0
14/09/2005
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)