Buenas!!
Teno unas TTabcontrol con un OwnerDraw que modifica el texto que enseñan las tabs, este punto es inevitable y no puedo cambiarlo lo único que necesito es una solución a lo siguiente:
La tab tiene 120 de Width, y si el texto que dibujo es: "Esto es un texto muy largo" la mitad queda por fuera del "botón" tab... me gustaría saber si hay alguna forma de que esto no pase, algo así como poner unos margenes al Rect... la verdad no tengo mucha idea de Draws... pero con paciencia conseguí unas tab como las de la barra de tareas de windows con sus iconitos y todo... muesto codigo para ver que me decis:
Código Delphi
[-]
procedure TfPrincipal.TabsDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
TempI,TempIX:integer;
IconT:TIcon;
TempS:string;
begin
if TabIndex > -1 then begin
TempI := 0;
IconT := nil;
TempIX := strtoint(copy(tabs.tabs[TabIndex],pos('$$',tabs.tabs[TabIndex])+2,10));
while TempI < Self.MDIChildCount do begin
if TfChildBase(Self.MDIChildren[TempI]).fCID = TempIX then begin
IconT := Self.MDIChildren[TempI].Icon;
TempS := Self.MDIChildren[TempI].Caption;
TempI := Self.MDIChildCount;
end;
TempI := TempI+1;
end;
tabs.Canvas.FillRect(Rect);
tabs.Canvas.Draw(Rect.Left+2,Rect.Top,IconT);
tabs.Canvas.TextOut(Rect.Left+22,Rect.Top+2,TempS);
end;
end;
Un saludo y muchas gracias.