Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

listview: como poner "los botones"

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: listview: como poner "los botones" Responder citando

Hola
Llevo muchos años sin programar nada. He tenido la necesidad de hacerme una pequeña aplicación para uso personal, pero me he encontrado con un problema en el que llevo varios días y no puedo con él.
Necesito un listview con "botones" en las columnas (necesito la de arriba. Como no sé subir imágenes, paso enlace de la imagen en mi drive)
https://drive.google.com/file/d/19XGa8Zhu9huB8lm3pZhuvy2UihgYj1lb/view?usp=sharing

Haciendo pruebas, veo que creando un form (file->new->Form - C++Builder), y pasando el listview a vsReport aparecen ya los "botones". Pero si creo un VCL Forms Application y añades el listview con vsReport, los botones no salen. Ni haciendo copia/pega del objeto. Uso Rad Studio 2007 sobre win10.

Lo que necesito es una aplicación, ya que tengo que adjuntar varios forms con funciones ya hechas, y no consigo hacer que aparezcan los dichosos botones. Será la edad. Y seguro que es una tontería.

Saludos y gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Tienes que elegir el estilo vsReport y luego ir a "Colums" y añadir alguna columna asignándole un Caption.

Te subo un vídeo de ejemplo:





Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Escafandra.
Yo lo que quiero es que me aparezcan tipo "botones"
https://drive.google.com/file/d/1aFSxYWkTR2fo4jdkHDKg5G0TtJFijzNr/view?usp=sharing
Ahora me salen como los tuyos, en blanco. Yo quiero que aparezcan los "botones". Si creas un form nuevo, si lo hace. En creando una aplicación VCL salen como los tuyos

Gracias y Saludos

PD: sigo sin saber como subir imágenes: en vista preliminar, con img pongo enlace a mi drive y no sale nada, con url al menos sale el enlace
[img]https://drive.google.com/file/d/1aFSxYWkTR2fo4jdkHDKg5G0TtJFijzNr/view?usp=sharing[/img]
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola, si te refieres a quitar la estética "moderna", ya que aunque no luzcan como botones ya lo son y aceptan pulsaciones. Prueba con lo siguiente en el constructor del Form que contenga el ListView:
Código:
// Quitamos el tema "moderno" a la cabecera del ListView
HWND h = ListView_GetHeader(ListView1->Handle);
SetWindowTheme(h, L"", L"");

// Opcionalmente se lo quitamos también al resto del ListView
//SetWindowTheme(ListView1->Handle, L"", L"");

// Desactivamos opcionalmente el doble click en la cabecera
//SetClassLongPtr(h, GCL_STYLE, GetClassLongPtr(h, GCL_STYLE) & ~CS_DBLCLKS);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias _Leo.
Lo he probado y no compila. Me salta error
Código:
[C++ Error] E2268 Call to undefined function 'SetWindowTheme'

Mirando por inet, he visto que faltaba el #include "uxtheme.h". Entonces salta el error
Código:
[Linker Error] Unresolved external 'SetWindowTheme' referenced from D:\APLI.OBJ


He seguido buscando y no he encontrado la solución. Te recuerdo que uso Rad Studio 2007 sobre windows 10. Seguiré buscando.

Gracias y saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

A veces es difícil recordar a partir de que versión se cambió algo. Lo he probado en la versión 2007 y añadiendo la siguiente cabecera y librería me funciona:

Código:
#include <uxtheme.h>
#pragma comment (lib, "UxTheme.lib")
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Puedes Eliminar el XPManifest del proyecto o importar SetWindowTheme de forma dinámica de esta forma:


Código:
typedef HRESULT  (__stdcall *PSetWindowTheme) (HWND, LPCWSTR, LPCWSTR);

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  PSetWindowTheme _SetWindowTheme;
  _SetWindowTheme = (PSetWindowTheme)GetProcAddress(GetModuleHandle("UxTheme.dll"), "SetWindowTheme");
  HWND h = ListView_GetHeader(ListView1->Handle);
  _SetWindowTheme(h, L"", L"");

}
//---------------------------------------------------------------------------



Te muestro el resultado importando la función SetWindowTheme en BCB5 con XP Manifest.



Saludos.


Ultima edición por escafandra el Jue 01 May, 2025 10:14 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

bufff, qué fieras sois.
No sé cómo agradeceros la molestia.

Millones de gracias. Saludos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.