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 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Agregar texto en primera fila de TStringrid

Hola amigos,

Como puedo agregar texto a cada celda de la primera linea de un TStringgrid ?

Uso Delphi 7

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por compuin Ver Mensaje
Hola amigos,

Como puedo agregar texto a cada celda de la primera linea de un TStringgrid ?

Uso Delphi 7

Gracias de antemano
Ya logre hacerlo,

Código Delphi [-]
StringGrid1.Cells[1,0] := 'Longitud';

ahora me gustaria centrarlos dentro del campo o ajustarlo a la derecha

Alguna sugerencia ?
Responder Con Cita
  #3  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Para eso tienes que pintar tú mismo las celdas. Te pongo un ejemplo:


Código Delphi [-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with Sender as TStringGrid do
  begin
    // Dibujar texto centrado horizontal y verticalmente o a la derecha
    InflateRect(Rect, -1, -1);
    Canvas.FillRect(Rect);
    InflateRect(Rect, -3, -3);
    DrawText(Canvas.Handle, PAnsiChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Rect,
      DT_CENTER or DT_VCENTER or DT_SINGLELINE);   // Texto centrado en la celda
//      DT_RIGHT or DT_VCENTER or DT_SINGLELINE);   // Texto alineado a la derecha en la celda
  end;
end;




Saludos.
Responder Con Cita
  #4  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Para eso tienes que pintar tú mismo las celdas. Te pongo un ejemplo:


Código Delphi [-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with Sender as TStringGrid do
  begin
    // Dibujar texto centrado horizontal y verticalmente o a la derecha
    InflateRect(Rect, -1, -1);
    Canvas.FillRect(Rect);
    InflateRect(Rect, -3, -3);
    DrawText(Canvas.Handle, PAnsiChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Rect,
      DT_CENTER or DT_VCENTER or DT_SINGLELINE);   // Texto centrado en la celda
//      DT_RIGHT or DT_VCENTER or DT_SINGLELINE);   // Texto alineado a la derecha en la celda
  end;
end;




Saludos.

Me sale el error Expected '='('found. en una pequena ventana
Responder Con Cita
  #5  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Revisa lo que has escrito. En algún sitio metiste la gamba.















Saludos.
Responder Con Cita
  #6  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Aqui la declare

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

private
{ Private declarations }
Responder Con Cita
  #7  
Antiguo 26-01-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No olvides las etiquetas para código, gracias:


Responder Con Cita
  #8  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por compuin Ver Mensaje
Aqui la declare

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

private
{ Private declarations }
En el IDE debes ir a Eventos del TSringGrid y buscar OnDrawCell Haces dobleclick y se abrirá en el editor de código con la función preparada para escribir. Allí pega el código que puse. Si lo haces "a mano" No debes poner Form1.

Código Delphi [-]
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


Pero luego tienes que is al editor de eventos igualmente para que quede asignado dicho evento.




Saludos.
Responder Con Cita
  #9  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Ya lo intente

Coloco el procedure y se ejecuta el formulario pero no hace el arreglo en el grid
Responder Con Cita
  #10  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por compuin Ver Mensaje
Ya lo intente

Coloco el procedure y se ejecuta el formulario pero no hace el arreglo en el grid
No has asignado el evento


Saludos.
Responder Con Cita
  #11  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Cuando trato de asignarlo me da error apuntando al nombre de la procedure

Sera que no lo estoy haciendo bien ??
Responder Con Cita
  #12  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Borra todo y deja que delphi lo haga. Cuando se muestre el editor de código, escribes el código que te puse.


Saludos.
Responder Con Cita
  #13  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
El evento OnDrawCell queda vacio luego que borro el codigo y ejecuto

Es normal ?
Responder Con Cita
  #14  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cuando un evento que ha asignado delphi no tiene código, directamente se borra por completo al ejecutar o guardar. Si el evento tiene código, delphi no borra nada.




Saludos.
Responder Con Cita
  #15  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Esto es lo que te debe aparecer en el editor de eventos:








Saludos.
Responder Con Cita
  #16  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Ahora si, era eso

Mil gracias mi estimado
Responder Con Cita
  #17  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Aunque el ejemplo lo hace con todas las celdas

Yo necesito que las celdas de escabezado queden centradas y el resto alineadas a la derecha

Como logro ajustarlo

Adicional, el color azul de la celda activa me gustaria quitarlo tambien

Te muestro como esta

Responder Con Cita
  #18  
Antiguo 26-01-2020
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por compuin Ver Mensaje
Aunque el ejemplo lo hace con todas las celdas

Yo necesito que las celdas de escabezado queden centradas y el resto alineadas a la derecha
Código Delphi [-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Alin: integer;
begin
  with Sender as TStringGrid do
  begin
    if ARow = 0 then
       Alin:= DT_CENTER
    else
       Alin:= DT_RIGHT;

    // Dibujar texto centrado horizontal y verticalmente o a la derecha
    InflateRect(Rect, -1, -1);
    Canvas.FillRect(Rect);
    InflateRect(Rect, -3, -3);
    DrawText(Canvas.Handle, PAnsiChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Rect,
      Alin or DT_VCENTER or DT_SINGLELINE);
  end;
end;


Cita:
Empezado por compuin Ver Mensaje
Adicional, el color azul de la celda activa me gustaria quitarlo tambien
Código Delphi [-]
DefaultDrawing:= false;


Saludos.
Responder Con Cita
  #19  
Antiguo 26-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Muchisimas gracias

Responder Con Cita
  #20  
Antiguo 28-01-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 210
Poder: 14
compuin Va por buen camino
Amigos,

Tengo el stringgrid funcionando correctamente pero ahora necesito agregar un tipo de font diferente entre textos sin que me cambie el font a todo el grid. Necesito algo asi como esta imagen

[IMG][/IMG]

Agradezco sus aportes
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
Foco en primera fila cxgrid dardusso23 Varios 1 17-10-2016 18:15:52
Obtener la primera fila por grupos de una consulta anidada gluglu SQL 5 11-04-2012 12:36:20
agregar una linea en la primera fila de un memo ingabraham Varios 1 08-07-2010 16:45:56
Primera columna y fila de un StringGrid gironella OOP 3 01-10-2008 09:42:30
Primera fila visible de un grid RONPABLO Conexión con bases de datos 9 08-11-2004 07:15:44


La franja horaria es GMT +2. Ahora son las 16:18:41.


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