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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
TListBox con varias columnas y un encabezado para cada una, ¿es posible?

Quiero rellenar un TListBox con tres columnas y que cada columna tenga un encabezado.

¿Es posible hacer esto en un TListBox?

Código:
Columna1 Columna2 Columna3 
    A      1         x
    B      2         y
    C      3         z
Saludos.
Responder Con Cita
  #2  
Antiguo 29-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Por qué no mejor usas un TStringGrid?

// Saludos
Responder Con Cita
  #3  
Antiguo 29-01-2009
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Además, para eso lo mejor es que uses el TListView, que está en la pestaña "Win32". Eso si, tienes que poner su propieda "ViewStyle" con valor "vsReport"

Un saludo
Responder Con Cita
  #4  
Antiguo 29-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Estoy usando TListView y me va muy bien, gracias por las aportaciones.

Un saludo.
Responder Con Cita
  #5  
Antiguo 30-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
@ElKurgan, ¿sabes si puedo hacer que las columnas del TListView no sean sizeables?

No veo la forma.

Saludos.
Responder Con Cita
  #6  
Antiguo 30-01-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hubiera pensado que hay una forma fácil de hacer esto, pero no la encuentro. Una opción sencilla puede ser la de ajustar las propiedades MinWidth y MaxWidth de cada columna para que coincidan con Width. De esta forma evitas que se cambie el tamaño aunque no evitas el efecto de arrastrar el borde de la columna: sigue apareciendo la línea de arrastrado y cuando la sueltas vuelve a su posición original.

Otra manera, más complicada, es interceptando el mensaje WM_NOTIFY que se manda al ListView cuando se realiza alguna operación, verificar que el mensaje corresponda a la acción BEGINTRACK y anularla.

Lo malo de esto, es que para interceptar este mensaje tienes que reemplazar el procedimiento de ventana (el que maneja todos los mensajes de una ventana) del ListView.

Aquí te pongo cómo hacerlo:

Código Delphi [-]
type
  TForm1 = class(TForm)
    ListView1: TListView;
    procedure FormCreate(Sender: TObject);
  private
    OldLVWndProc: TWndMethod;
    procedure LVWndProc(var Message: TMessage);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldLVWndProc := ListView1.WindowProc;
  ListView1.WindowProc := LVWndProc;
end;

procedure TForm1.LVWndProc(var Message: TMessage);
begin
  if (Message.Msg = WM_NOTIFY) and (TWMNotify(Message).NMHdr.code = HDN_BEGINTRACKW) then
    Message.Result := 1
  else

  OldLVWndProc(Message);
end;

El campo OldLVWndProc sirve para guardar una referencia al procedimiento original, a fin de que puedas llamarlo desde tu nuevo procedimiento. Este nuevo procedimiento lo asigna en el constructor del formulario y lo único que hace es verifcar que el mensaje corresponda al cominezo de arrastrar el borde de una columna, y, en tal caso, simplemente regresa 1 (indicando que ya se procesó el mensaje) sin llamar al procedimiento original.

Aún así, queda el "problema" de que el cursor del ratón sigue cambiando al ponerlo en el borde, como si se pudiese cambiar el tamaño.

// Saludos
Responder Con Cita
  #7  
Antiguo 30-01-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Poder: 16
noob Va por buen camino
Madre mía, no pensaba que fuera tan complicado, pensaba que sería poner a False alguna propiedad pero veo que no es así, muchísimas gracias por la aportación roman.

Saludos.

Última edición por noob fecha: 04-02-2009 a las 14:43:12.
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
Varias columnas en ListBox (DELPHI) JUANRS Internet 9 11-11-2008 23:43:25
Impresion en QuickReport de Varias Columnas Alexis De la Cr Impresión 4 11-03-2008 23:04:52
Es posible tener varias bases de datos.... Carlosguiland MySQL 5 24-06-2004 21:39:10
Valor máximo de varias columnas jsf48 SQL 3 10-05-2004 01:49:37
Varias columnas en ListBox o CheckListBox __cadetill Varios 5 12-07-2003 01:57:55


La franja horaria es GMT +2. Ahora son las 01:44:32.


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