Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ayuda ComboBoxEx (https://www.clubdelphi.com/foros/showthread.php?t=40772)

Ge0Ks 26-02-2007 19:50:44

Ayuda ComboBoxEx
 
Hola a todos, primero que nada quiero agradecer a los usuarios por haberme contestado en el thread anterior, ahora me surgio otra duda....
quisiera saber como se puede asociar una imagen al texto que aparece en el comboboxex, por ej, tengo un "hola" y un "chau" y quiero que al lado del "hola" aparesca una imagen de una mano saludando y al lado del "chau" otra mano saludando :D ....

desde ya muchas gracias

dec 27-02-2007 01:30:38

Hola,

Cuando dices que quieres que aparezca una imagen al lado del "hola", ¿quieres decir que la imagen aparezca al lado del "Combo" o dentro del mismo? Piensa que dilucidar qué imagen mostrar (al lado del "Combo", por ejemplo) puede ser tan sencillo como realizar una comprobación en una condición, o sea, en Delphi:

Código Delphi [-]
if Combo.Text = 'Hola' then
  // Mostramos la imagen A
else if Combo.Text = 'Chau' then
  // Mostramos la imagen B

Marian0 27-02-2007 04:29:42

la cosa es cómo mostrar la imágen xD

Ge0Ks 27-02-2007 04:30:20

gracias por contestar pero a lo que yo venia era que queria saber como hacer eso que esta en comentarios o sea como hacer para mostrar la imagen con que metodo se puede realizar esto :D

dec 27-02-2007 04:34:22

Hola,

Bueno. Pero acuérdate de lo que dije antes:

Cita:

Empezado por dec
Cuando dices que quieres que aparezca una imagen al lado del "hola", ¿quieres decir que la imagen aparezca al lado del "Combo" o dentro del mismo?

Porque mostrar una imagen al lado del combo consiste en añadir un componente "TImage" y cargar en el mismo la imagen que sea menester...

Ge0Ks 27-02-2007 04:37:22

si lo que queremos hacer es que al lado de por ejemplo "hola" aparesca una imagen pequeña para facilitar la vista del programa, pero lo que no sabemos es como generar el TImage e insertarlo en el ComboboxEx xD desde ya muchas gracias

roman 27-02-2007 04:44:52

A ver, el ComboBoxEx tiene, entre sus particularidades, precisamente la de poder colocar imágenes a lado de cada ítem, que es- imagino -a lo que te refieres. Lo único que hay que hacer es poner las imágenes deseadas dentro de una componente ImageList, asociar ésta a la propiedad Images del ComboBoxEx y en el editor de ítemes del combo (propiedad ItemsEx), indicas el índice de la imagen en el ImageList que quieras opupar para cada ítem.

// Saludos

dec 27-02-2007 04:52:44

Hola,

Ignoro si en C++ Builder cuentas con el componente "ComboBoxEx" (en la pestaña "Win32" de la paleta de componentes), digo, que si cuentas con este componente tal vez te interese usarlo. Es un "ComboBox" con esteroides que entre otras cosas permite asignarle una lista de imágenes ("TImageList") y que cada "item" tenga asociada una por lo menos.

Si no cuentas con el componente "TComboBoxEx"... el caso es que creo que sí que era posible implementar lo que se necesita partiendo de un sencillo "TComboBox", empero, ahora mismo no sabría decirte... creo que en estos mismos Foros Román alguna vez solucionó algo así.

roman 27-02-2007 04:58:50

Cita:

Empezado por dec
Si no cuentas con el componente "TComboBoxEx"

Pero, ¡desde un principio preguntó por este componente!

Cita:

Empezado por título original del hilo
Ayuda ComboBoxEx

// Saludos

dec 27-02-2007 05:01:28

Hola,

¡Pues ni me dí cuenta! :D :D

Ahora mismo estaba yo liado con el evento "OnDrawItem" del humilde "ComboBox" (no "Ex") puesto que como se dice en la ayuda:

Cita:

Write an OnDrawItem event handler to draw the items in the drop-down list of an owner-draw combo box. An OnDrawItem event handler can add graphic elements to the list items, or replace the list item text by graphics.
Je, je, je... ¡A ver si me pongo unas buenas gafas! :)

dec 27-02-2007 05:10:38

Hola,

Bueno. Pues utilizando un "ComboBox" normal, corriente y moliente, poniendo su estilo a "csOwnerDrawFixed", podemos utilizar su evento "OnDrawItem" más o menos como sigue:

Código Delphi [-]
procedure TForm1.ComboBox1DrawItem(Control: TWinControl;
 Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
   with (Control as TComboBox) do
   begin
     Canvas.FillRect(Rect);

     { Los Items impares tendrán la imagen con index 0 que
       se encuentre en el componente "TImageList" que asumimos
     }
     if Odd(Index) then
       ImageList1.Draw(Canvas, 0, Rect.Top, 0)
     else
       // Los Items pares tendrán la imagen con index 1
       ImageList1.Draw(Canvas, 0, Rect.Top, 1);

     Canvas.TextOut(Rect.Left+18,Rect.Top,Items[Index]);
   end;
end;

Todavía quedaría por retocar algunos detallitos, pero, básicamente eso es. :)

Ge0Ks 27-02-2007 05:13:46

muchisimas gracias por la respuesta :D :D


La franja horaria es GMT +2. Ahora son las 15:56:21.

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