Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2010
emme_juegos emme_juegos is offline
Registrado
NULL
 
Registrado: dic 2010
Posts: 3
Poder: 0
emme_juegos Va por buen camino
ComboBoxEx y ImageList

hola de nuevo!

necesito, si es que hay, un codigo para que cada item del comboboxex obtenga una imagen de un imagelist

yo he intentado con esto:

Código Delphi [-]
ComboBoxEx1.ItemsEx.ComboItems.ImageIndex:=FormBaseDeDatos.ImageList1. (y ahora no se como seguir)



quiero saber si se puede asi es mas facil y te ahorras mucho trabajo... necesito 193 items!!

chau y gracias!!
Responder Con Cita
  #2  
Antiguo 17-12-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Te pongo un ejemplo para cargar un TComboBoxEx desde un TImageList, y también un TComboBox como alternativa:
Código Delphi [-]
...
{ Cargar ComboBoxEx y ComboBox }
procedure TForm1.FormShow(Sender: TObject);
var
  i: Integer;
begin
  for i:= 0 to ImageList1.Count -1 do
  begin
    // Cargar TComboBoxEx 
    ComboBoxEx1.ItemsEx.AddItem('Item '+IntToStr(i), i, i, 0, 0, nil)
   // Cargar TComboBox 
    ComboBox1.Items.Add('Item '+IntToStr(i));
  end;
end;

{ Mostrar imágen + Item en el TComboBox }
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; 
                                   Rect: TRect; State: TOwnerDrawState);
begin
  // Rellenar el area
  ComboBox1.Canvas.FillRect(Rect);
  // Dibujar la imágen actual
  ImageList1.Draw(ComboBox1.Canvas, Rect.Left, Rect.top,Index);
  // Dibujar imágen y texto
  ComboBox1.Canvas.TextOut(Rect.left + ImageList1.Width+2, Rect.top, ComboBox1.Items[Index]);
end;
...

Saludos.

Última edición por ecfisa fecha: 17-12-2010 a las 08:52:21.
Responder Con Cita
  #3  
Antiguo 17-12-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por emme_juegos Ver Mensaje
necesito, si es que hay, un codigo para que cada item del comboboxex obtenga una imagen de un imagelist
...
Si te estoy entendiendo bien lo que pretendes hacer, pues para tener los item del ComboBoxEx con las imagenes de un ImageList, no necesitas codificar nada, simplemente debes enganchar la propiedad Images del ComboBoxEx con tu componente ImageList y posteriormente ir a la propiedad ItemEx del ComboBoxEx y crear todos los item (TComboExItems) que veas necesario mostrar, por supuesto cada Item (TComboExItems) que crees debes engancharle su respectiva imagen atravez de su propiedad ImageIndex
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #4  
Antiguo 08-05-2011
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 14
FENIXadr Va por buen camino
Hola ecfisa...
Probé el código que publicaste pero he tenido algunos prblemas...

en primer lugar quiero comentarte que estoy haciendo una lista desplegable con los drives de la PC y quiería colocarle el dibujito del drive para que estéticamente quedara mejor, opté por un ComboBoxEx, pero la función AddItem me agrega un renglón en balnco, o sea que se despliega una lista con la cantidad de renglones acorde a la cantidad de drives, pero sin mostrar ningun nombre ni imagen, lo mismo sucede si quiero agregar un nombre sin imagen con la funcion Add.
Éstas funciones son muy transparentes y se supone que deberían funcionar sin tener que activar ninguna bandera o algo asi antes de usarlas.. no se.. no le encuentro lógica a este problema.

Después de renegar un rato me decidí por el ComboBox común y he aquí que surge otro problema... NUNCA y no se porque pero NUNCA entra al evento OnDrawItem, por lo tanto me muestra los drives, pero no las imagenes, acá la funcion Add (que la uso igual que en el ComboBoxEx) si funciona correctamente..


Que es lo que puede estar pasndo???

desde ya muchas gracias...
Responder Con Cita
  #5  
Antiguo 08-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
NUNCA y no se porque pero NUNCA entra al evento OnDrawItem, por lo tanto me muestra los drives, pero no las imagenes

Que es lo que puede estar pasndo???
Hola FENIXadr.

El evento OnDrawItem sólo funciona si el ComboBox tiene la propiedad Style en csOwnerDrawFixed o en csOwnerDrawVariable.

.csOwnerDrawFixed: Cada item tendrá la altura especificada en la propiedad ItemHeight.
.csOwnerDrawVariable: Cada item puede tener alturas diferentes.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 09-05-2011
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Poder: 14
FENIXadr Va por buen camino
ok.. gracias...

pregunto... si yo tengo asignado en el evento OnClick de un TTreeView un procedimiento del Form1 (definido por el usuario) y en tiempo de ejecucion cambio este procedimiento (en el constructor del componente), como hago para no perder el anterior?? o sea yo quiero recalcular las carpetas al presionar el boton sobre el TTreeView pero quiero que el usuario no pierda el procedimiento que definió en el IDE.. me explico??...

he probado definiendo una variable del tipo procedure pero cuando la llamo me da una excepción.. seguramente le asigno mal la direccion de memoria..

desde ya muchas gracias

(perdón si no está totalmente dentro del hilo la pregunta...)
Responder Con Cita
  #7  
Antiguo 09-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
(perdón si no está totalmente dentro del hilo la pregunta...)
En realidad lo que corresponde es que habras un nuevo hilo para una nueva pregunta, está claramente expuesto en el punto 8 de la guía de estilo .



No entiendo muy bién la situación, pero una posible solución es crear una variable privada al form de tipo TNotifyEvent, a la que asígnes el evento que querés recuperar luego, asignes el nuevo envento y luego al salir del form lo restaures:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormShow(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
  private
    FNotifyEvent: TNotifyEvent;
  public
  end;
...
implementation
...
procedure TForm1.FormShow(Sender: TObject);
begin
  FNotifyEvent:= TreeView1Click;  // guarda el evento
end;

procedure TForm1.TreeView1Click(Sender: TObject);
begin
   // Evento definido en el form
end;

...
// Creación del objeto que cambia el evento
...

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TreeView1.OnClick:= FNotifyEvent; // restaura el evento
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 09-05-2011 a las 13:59:27.
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
imagelist con Timage??? manueles OOP 3 28-02-2012 13:58:14
Abrir un ComboBoxEx automáticamente afxe Gráficos 4 03-03-2010 20:59:04
Ayuda ComboBoxEx Ge0Ks C++ Builder 11 27-02-2007 05:13:46
Gif con imagelist Ivan_25 .NET 0 24-10-2006 12:44:44
jpg con ImageList??? Patricio Varios 3 06-02-2006 16:51:27


La franja horaria es GMT +2. Ahora son las 09:45:43.


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