Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Poder: 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
  #2  
Antiguo 21-03-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No estoy seguro, pero, tal vez podrías darle a la pestaña el ancho del texto en cuestión. Podrías usar el método "TextWidth" de "TCanvas"...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-03-2008
Avatar de lag_0
lag_0 lag_0 is offline
Miembro
 
Registrado: jul 2006
Posts: 131
Poder: 18
lag_0 Va por buen camino
Si, si no indico tamaño las pestañas se ponen en el tamño del texo más largo pero... lo que quiero es que las pestañas tengan el tamaño que yo especifico y el texto se vea solo dentro de esta, entonces al llegar al final poner unos puntos suspendidos "Titulo de la pe...", o bien cortar en seco, pero que solo se vea el principio pues como digo es como una barra de inicio de windows para ventanas MDI.

Muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TTabControl llauraff Varios 4 27-01-2008 17:01:24
[URGENTE] Problema con Ttabcontrol noukeys Varios 1 12-12-2007 21:36:05
Como Transormar un string largo a Integer largo RodoRodo Varios 1 27-06-2007 02:26:29
Proceso muy largo ? Coco_jac Varios 5 22-12-2005 21:54:59
componenetes en un TTabControl lucasarts_18 OOP 2 27-09-2005 23:44:43


La franja horaria es GMT +2. Ahora son las 03:29:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi