Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2024
Badillo Badillo is offline
Miembro
 
Registrado: jun 2021
Posts: 45
Poder: 0
Badillo Va por buen camino
Disculpen, faltó algo por explicar que no había visto

Saludos y disculpen, faltó algo por explicar que no había visto:

El PageControl que les comento es uno modificado, por lo que estoy viendo el problema debe estar en el método CNDrawItem.

Código Delphi [-]
procedure TMdPageControl.CNDrawItem(var Message: TWMDrawItem);
var
  SaveIndex:  Integer;
  Caption:    string;
  Size:       TSize;
  x,y:        integer;
  Rgn:        HRGN;
  Color:      TColor;
  Rect:       TRect;
begin
  with Message.DrawItemStruct^ do
  begin
    SelectClipRgn(hDC, 0);  // don't get clipped in the original rectangle
    SaveIndex := SaveDC(hDC);
    Canvas.Lock;
    try
      Canvas.Handle := hDC;

      Canvas.Brush.Color := TabColor;
      Caption := MdThemeConstants.GetTranslation(Self.Tabs.Strings[ItemID]);
      Canvas.Font := Font;
      Rect := rcItem;
      Size := Canvas.TextExtent(Caption);

      case TabPosition of
        tpTop:
          begin
            Dec(Rect.Left, 3);
            Inc(Rect.Right, 5);
            Dec(Rect.Top, 4);
            Canvas.Font.Orientation := 0;
            x := Rect.Left + (Rect.Right - Rect.Left - Size.Width) div 2;
            y := Rect.Top + (Rect.Bottom - Rect.Top - Size.Height) div 2 + 1;
          end;
        tpBottom:
          begin
            if Bool(Message.DrawItemStruct.itemState and ODS_SELECTED) then
            begin
              Dec(Rect.Top, 2);
              Dec(Rect.Right, 8);
              Inc(Rect.Bottom, 2);
            end
            else
            begin
              Dec(Rect.Top, 6);
              Dec(Rect.Left, 4);
              Dec(Rect.Right, 4);
              Inc(Rect.Bottom, 4);
            end;
            Canvas.Font.Orientation := 0;
            x := Rect.Left + (Rect.Width div 2 - Size.Width div 2);
            y := Rect.Top + (Rect.Height div 2 - Size.Height div 2);
          end;
        tpLeft:
          begin
            if Bool(Message.DrawItemStruct.itemState and ODS_SELECTED) then
            begin
              Dec(Rect.Left, 2);
              Dec(Rect.Bottom, 8);
              Dec(Rect.Right, 6);
            end
            else
            begin
              Dec(Rect.Left, 4);
              Dec(Rect.Top, 4);
              Dec(Rect.Bottom, 4);
              Dec(Rect.Right, 2);
            end;
            Canvas.Font.Orientation := 900;
            x := Rect.Left + (Rect.Width div 2) - (Size.Height div 2);
            y := Rect.Top + (Rect.Height div 2) + (Size.Width div 2);
          end;
        tpRight:
          begin
            if Bool(Message.DrawItemStruct.itemState and ODS_SELECTED) then
            begin
              Inc(Rect.Left, 2);
              Dec(Rect.Bottom, 8);
              Dec(Rect.Right, 0);
            end
            else
            begin
              Dec(Rect.Left, 2);
              Dec(Rect.Top, 4);
              Dec(Rect.Bottom, 4);
              Inc(Rect.Right, 2);
            end;
            Canvas.Font.Orientation := -900;
            x := Rect.Left + (Rect.Width div 2) + (Size.Height div 2);
            y := Rect.Bottom - (Rect.Height div 2) - (Size.Width div 2);
          end;
      end;
      if Bool(Message.DrawItemStruct.itemState and ODS_SELECTED) then Canvas.Font.Color := TabHighlightedColor;
      Canvas.TextRect(Rect, x, y, Caption);

    finally
      Canvas.Handle := 0;
      Canvas.Unlock;
      RestoreDC(hDC, SaveIndex);
    end;

    // Erase Outer border

    Rgn := CreateRectRgn(0, 0, 0, 0);
    SelectClipRgn(hDC, Rgn);
    DeleteObject(Rgn);
  end;

  Message.Result := 1;
end;

Les adjunto la clase completa y un ejemplo de su funcionamiento.

Gracias una vez más por cualquier ayuda, pero creo que la cosa debe estar en las dimensiones del Rect que la utilizan con el texto viejo y no con el nuevo.
Archivos Adjuntos
Tipo de Archivo: zip MdPageControl.zip (4,7 KB, 1 visitas)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
PageControl del IDE de XE3 LIGERO Varios 26 12-07-2016 03:58:50
Ayuda con PageControl y TabSheet rruffino Varios 15 21-10-2015 22:06:18
Ayuda con PageControl BuenaOnda Varios 3 19-06-2012 22:03:34
ayuda PageControl tebre Varios 2 04-02-2009 23:07:35
Ayuda con PageControl elbilla Varios 3 19-07-2004 19:57:37


La franja horaria es GMT +2. Ahora son las 19:40:11.


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