| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mie 30 Oct, 2019 11:27 am Asunto: Eliminar duplicados en combobox |
|
|
hola, tengo unos registros los cuales se repite un campo con el mismo contenido y solo quiero que figure 1 sola vez en el combobox pero he intentado filtrarlo y me da error al iniciar programa
algun sistema para hacerlo?? o alguna forma de recorrer el combo y eliminar los duplicados de forma sencilla? |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 30 Oct, 2019 12:19 pm Asunto: |
|
|
Tienes varias opciones.
Si cargas el COmoboBox a partir de un query basta con hacer un SELECT DISTINTC.
Si ya lo tienes cargado, teniendo en cuenta que un ComboBox no deja de ser un TString puedes hacer dos bucles anidados:
| Código: | for (Bucle1 = ComboBox1->Items->Count; Bucle1 < 0; Bucle1 --)
{
for (Bucle2 = Bucle1; Bucle2 <= 0; nItem --)
if (ComboBox1->Items->Strings[Bucle1] == ComboBox1->Items->Strings[Bucle2])
{
ComboBox1->Delete(Bucle2);
break;
}
} |
No lo he probado pero algo así debería funcionar. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mie 30 Oct, 2019 3:47 pm Asunto: |
|
|
al final lo hice asi ya que el metodo que indicas angel....no funciona muy bien
| Código: |
AnsiString CLUB = "";
AnsiString ULTIMO_CLUB = "";
for(int count=0; count < Form1->MyQuery1->RecordCount; ++count)
{
if(System::Sysutils::CompareStr(Form1->MyQuery1->FieldByName("SL-Club")->AsString, ULTIMO_CLUB) != 0)
{
CLUB = Form1->MyQuery1->FieldByName("SL-Club")->AsString;
ComboBox1->Items->Add(CLUB);
ULTIMO_CLUB = CLUB;
}
if(System::Sysutils::CompareStr(ULTIMO_CLUB, Form1->MyQuery1->FieldByName("SL-Club")->AsString) == 0)
{
CLUB = Form1->MyQuery1->FieldByName("SL-Club")->AsString;
ULTIMO_CLUB = CLUB;
}
Form1->MyQuery1->Next();
} |
importante que para que funcione bien---el TQuery tiene que estar ordenado por el campo que utilizamos para pasar al Combobox |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Jue 31 Oct, 2019 4:11 am Asunto: |
|
|
A partir del código de Angel, para una lista no ordenada:
| Código: |
String sDel;
for(int i=ComboBox1->Items->Count; i>=0; i--) {
sDel = ComboBox1->Items->Strings[i];
for(int j = i-1; j>=0; j--) {
if( ComboBox1->Items->Strings[j] == sDel ) {
ComboBox1->Items->Delete(j);
i--;
}
}
} |
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 31 Oct, 2019 6:16 pm Asunto: |
|
|
| Alpinador escribió: | | al final lo hice asi ya que el metodo que indicas angel....no funciona muy bien |
Veo en el código que has puesto que la carga la haces a partir de un query. Por eso te sugería hacer un SELECT DISTINCT. Pero si con el código que has puesto te funcione, ¡estupendo! _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|