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 

Cambiar glyphs en un TFileListBox

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Cambiar glyphs en un TFileListBox Responder citando

Hola quisiera saber si se pueden cambiar las imagenes o glyphs en un TFileListBox...gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Por ejemplo, para cambiar la imagen del primer elemento:
Código:
// Teniendo un BMP cargado en un TImage (Image1)
FileListBox1->Items->Objects[0] = Image1->Picture->Bitmap;
FileListBox1->Invalidate();

Aunque después de que se vuelva a actualizar el TFileListBox se pierde la imagen... así que lo mejor sería usar el evento OnChange del mismo que se dispara cada vez que se actualiza la lista. Por ejemplo, para cambiar el bitmap de todos los archivos .EXE:
Código:
// Ponemos lo siguiente en el evento OnChange del TFileListBox
for (int i = 0; i < FileListBox1->Items->Count; i++)
    if (!CompareText(ExtractFileExt(FileListBox1->Items->Strings[i]), ".exe"))
        FileListBox1->Items->Objects[i] = Image1->Picture->Bitmap;
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

GRACIAS LEO... y disculpa pero tengo otra duda sabes como detectar un clic en culquier parte de la interfas del programa sin importar donde se de el clic

Y te vuelvo a agradeser
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Usando del codigo de este enlace puedes detectar la actividad e inactividad con el Mouse dentro de tu Aplicación.

https://cppbuilder.es/viewtopic.php?t=9338&highlight=inactividad

O bien puedes usar un componente ApplicationEvents y establecer lo siguiente
Código:

void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,
      bool &Handled)
{

 if(Msg.message == WM_KEYDOWN )
    Caption = "Actividad de mouse o teclado";
}

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias creo que eso fue todo
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Disculpa tengo otra duda sobre como hacer para obtener el nombre de la carpeta que esta abriendo el TFileListBox, solo el nombre de la carpeta no el directorio...gracias y disculpen las molestias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Suponiendo que el contenido de "FileListBox1->Directory" es "C:\Borland\CBuilder6\Project", lo siguiente devolvería "Project". No se si es eso lo que quieres ?
Código:
String carpeta = ExtractFileName(FileListBox1->Directory);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ahondando en el tema y para aportar otra forma útil de conseguir la respuesta de mansajes a nuestra aplicación, también se pueden interceptar y responder mensages sobrecargando la función virtual:
Código:

virtual void __fastcall WndProc(Messages::TMessage &Message);


La ventaja de este método con respecto al TApplicationEvents es que este último solo captura mensajes enviados con PostMessage y no con SendMessage, siendo ambos capturados con WndProc.

Ejemplo:
Código:
// En la definición de la clase Form1 o la que sea....
virtual void __fastcall WndProc(Messages::TMessage &Message);

// En la implementación de la clase Form1 o la que sea...
void __fastcall
TForm1::WndProc(Messages::TMessage &Message)
{
   // Respuesta a cada mensaje con una función de usuario...
   if (Message.Msg == WM_CREATE)      EvCreate();
   if (Message.Msg == WM_PASTE)       EvPaste();
   ......
   ......
   // Y para permitir la respuesta respondiente a los mensages por   
   // defecto en la clase madre continuamos con
   TForm::WndProc(Message); // o la clase madre que corresponda...
}

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

Código:
Suponiendo que el contenido de "FileListBox1->Directory" es "C:\Borland\CBuilder6\Project", lo siguiente devolvería "Project". No se si es eso lo que quieres ?
Código:
String carpeta = ExtractFileName(FileListBox1->Directory);

Si a esto me referia gracias Leo...gracias a todos por sus respuestas
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
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.