Ver Mensaje Individual
  #1  
Antiguo 21-03-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Reputación: 18
lag_0 Va por buen camino
TTabcontrol con OwnerDraw y texto largo

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
  //En el draw evitamos que se vea el fCID
    if TabIndex > -1 then begin
      //busccamos el mdi child correspondiente a la tab y sacamos los datos
        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;
      //Pintamos
        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.

Última edición por lag_0 fecha: 21-03-2008 a las 17:27:55.
Responder Con Cita