Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-02-2008
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
¿Cómo puedo saber el tamaño que debo asignar al buffer?

Para saber el tamaño que debo asignar al "buffer" para obtener los valores de un TLISTBOX (mediante GetText) empleo:
Código:
int x;
x = SendMessage(ListBox1->Handle, WM_GETTEXTLEGHT, 0, 0);
Pero la función me devuelve 0.
¿Dónde tengo el error?
Responder Con Cita
  #2  
Antiguo 02-02-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hola, es que para preguntar la longitud de un ítem en un TListBox, debes usar la constante LB_GETTEXTLEN.

WM_GETTEXTLEGHT es para obtener los captions de los controles o el texto de los Edits, etc...

Así pues:

Código:
int x = SendMessage(ListBox1->Handle, LB_GETTEXTLEN, 0, 0);
El tercer parámetro (WPARAM) es el item index dentro del TListBox.

Saludos.
Responder Con Cita
  #3  
Antiguo 02-02-2008
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
Gracias, esk. Tienes razón, pero lo que pretendo no es obtener el tamaño de un item, sino de todos los que componen en objeto TListBox.
Responder Con Cita
  #4  
Antiguo 02-02-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,

Cita:
Empezado por MON___
Gracias, esk. Tienes razón, pero lo que pretendo no es obtener el tamaño de un item, sino de todos los que componen en objeto TListBox.
Cita:
Empezado por xEsk
El tercer parámetro (WPARAM) es el item index dentro del TListBox.
Con lo que, digo yo, en todo caso podrían "recorrerse" los elementos de la lista e ir sumando. ¿No?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 02-02-2008
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
Tienes razón, DEC... un bucle e ir recorriendo (y sumando) cada uno de los elementos del control. Ahora bien: me extraña que si mediante "p = ListBox1->GetText" o "p := ListBox.GetText" obtenemos todos los valores ("Enero/nFebrero/Marzo/n...") debe existir una función que nos devuelva el tamaño que debemos previamente asignar al "buffer".
Un saludo
Responder Con Cita
  #6  
Antiguo 02-02-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Si te refieres a que el TListBox tiene la propiedad text y te devuelve todos los ítems como un String, esto es porque internamente usa un TStringList, que sí tiene esta propiedad text.

Y el Delphi/C++ Builder no usa este tipo de llamadas (SendMessage) para trabajar, sino que usa sus métodos, etc... evidentemente que su forma mas baja si usa cosas por el estilo, pero no las clases de alto nivel, hehe, no se si se me ha entendido.

Saludos.
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
Como asignar el tamaño de papel en QuickRep?? AndGaG Impresión 2 02-07-2006 21:51:12
Quisiera saber como capturo el tamaño de un directorio. JOSE NARANJO API de Windows 1 25-11-2005 23:26:04
HELP!!!COmo puedo saber el path de un file!!! rob1 Varios 10 21-09-2005 17:21:49
Como puedo saber si existe un archivo maravert Varios 3 23-10-2004 00:12:25
Como puedo asignar un ip a un equipo yayita Internet 3 12-03-2004 22:09:52


La franja horaria es GMT +2. Ahora son las 09:12:28.


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