| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Dom 28 Dic, 2008 4:19 am Asunto: Cambiar glyphs en un TFileListBox |
|
|
| Hola quisiera saber si se pueden cambiar las imagenes o glyphs en un TFileListBox...gracias |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 04 Ene, 2009 5:25 pm Asunto: |
|
|
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 |
|
 |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Mar 06 Ene, 2009 9:04 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mar 06 Ene, 2009 10:16 am Asunto: |
|
|
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";
} |
_________________
 |
|
| Volver arriba |
|
 |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Jue 08 Ene, 2009 8:07 am Asunto: |
|
|
| Gracias creo que eso fue todo |
|
| Volver arriba |
|
 |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Sab 31 Ene, 2009 7:40 pm Asunto: |
|
|
| 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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 31 Ene, 2009 11:14 pm Asunto: |
|
|
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 |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 01 Feb, 2009 5:35 pm Asunto: |
|
|
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 |
|
 |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Mie 04 Feb, 2009 11:42 pm Asunto: |
|
|
| 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 |
|
 |
|