Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: May 2013
Posts: 727
Poder: 6
aguml Va por buen camino
ComboBox filtrado y asignacion de indexs

Hola amigos, tengo un combo box con una serie de nombres y a los cuales al seleccionar uno muestro una imagen en concreto en un TImage.
Ahora lo que quiero es que, conforme el usuario escriba en el combobox, solo aparezcan los items que contengan esa cadena en cualquier parte del string y, claro está, que sigan estando las imagenes enlazadas correctamente a los items que se filtran. ¿como puedo hacer eso?
Responder Con Cita
  #2  
Antiguo 05-12-2017
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.700
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Se me ocurren muchas maneras de implementarlo y depende un poco de lo que tengas ahora.
Filtrar lo elementos del combobox no es compicado hacerlo, pero deberás hacerlo manualmente.
Mantén un TStringList (por ejemplo) con la lista de elementos originales y recorre la lista para añadir en ejecución al combo sólo los que cumplan la condición.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 05-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: May 2013
Posts: 727
Poder: 6
aguml Va por buen camino
Eso sí se como hacerlo, el problema es que tengo un array de valores y cada valor corresponde a una opción del combobox, o sea que los índices son los mismos y puedo hacer algo como "valor=array[micombobox->Itemindex];" y en el momento que aplique un filtro esa relación se va al garete y no se me ocurre como arreglarlo. Lo único que se me ocurre es tener otro array auxiliar el cual filtre a la vez que el combo para que tanto el combo como el array auxiliar coincidan pero no veo bien como implementarlo todo eso.
Responder Con Cita
  #4  
Antiguo 05-12-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: May 2013
Posts: 727
Poder: 6
aguml Va por buen camino
He estado probando con esto pero funciona regular y hace cosas raras como desaparecer el puntero en el form o que al poner una letra se autocompleta aunque la tengo esa opcion en false en el ComboBox1, o que al pulsar una letra primero va a una coincidencia en el combo y luego filtra:
Código PHP:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TStringListMiLista;
unsigned int *valor,*aux;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponentOwner)
    : 
TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1KeyUp(TObject *SenderWORD &Key,
      
TShiftState Shift)
{
    
int Index;

    
TStringListSalida = new TStringList();
    
int pos,contador=0;

    try{
        if(
ComboBox1->Text==""){
            
ComboBox1->Items->Assign(MiLista);
        }else{
            for(
int i=0;i<MiLista->Count;i++){
                
pos=UpperCase(MiLista->operator [](i)).Pos(UpperCase(ComboBox1->Text));
                if(
pos>0)
                {
                    
Salida->Add(MiLista->operator [](i));
                    
aux[contador]=valor[i];
                    
contador++;

                }
            }
            
ComboBox1->Items->Assign(Salida);
            
ComboBox1->SelStart ComboBox1->Text.Length();
            
ComboBox1->SelLength 0;
        }
        
        
ComboBox1->DroppedDown true;
    }
    
__finally
    
{
        
delete Salida;
    }
    
ComboBox2->Items->Clear(); //Este es para probar si funciona
    
for(int i=0;i<ComboBox1->Items->Count;i++)
        
ComboBox2->Items->Add(aux[i]);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    
MiLista = new TStringList();
    
MiLista->Assign(ComboBox1->Items);

    
valor=new unsigned int[ComboBox1->Items->Count];
    for(
int i=0;i<ComboBox1->Items->Count;i++)
        
valor[i]=i;
    
aux=new unsigned int[ComboBox1->Items->Count];
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *SenderTCloseAction &Action)
{
    
delete MiLista;
    
delete valor;
    
delete aux;
}
//--------------------------------------------------------------------------- 
A ver si podeis probarlo y me ayudais a dejarlo mejor y que sea mas agradable.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
tablas conectadas a Combobox,al eliminar una,actualizar combobox sin reiniciar exe feliz-58 Varios 3 26-04-2013 16:16:05
Genero comboBox en dbgrid y cuando hago dos veces click desaparece el comboBox. mcalmanovici Varios 1 29-02-2012 15:09:15
lio con una asignación ioco OOP 6 13-03-2010 12:33:18
como mostrar la ventana de lenar inten de un combobox en tiempo de un combobox gulder Varios 3 19-05-2007 19:55:58
Asignación IP juanchi Internet 1 24-09-2003 19:07:05


La franja horaria es GMT +2. Ahora son las 17:37:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi