![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Busquedad en un StringGrid
Hola, tengo un StringGrid que se carga con un archivo. Con el siguiente codigo busco la palabra que quiero y me lo marca con color a la celda. Lo que yo quisiera es que a medida que voy escribiendo la palabra en el edit me vaya listando las palabras que empiezan con lo que estoy escribiendo. Si en el StringGrid tengo:
Lunes Martes Miercoles Jueves Y si yo en el edit escribo la M quiero que solo me muestre las palabras que empiezan con M y no las otras. Código:
void __fastcall TfPeliculas::btnBuscarClick(TObject *Sender)
{
for(int i = StringGrid1->FixedRows; i < StringGrid1->RowCount ; i++)
if((StringGrid1->Cells[0][i] == editPelicula->Text)||(LowerCase(StringGrid1->Cells[0][i]) == editPelicula->Text)) {
TRect Casilla;
StringGrid1->Canvas->Brush->Color=static_cast<TColor>(RGB(252, 210, 147));
Casilla= StringGrid1->CellRect(0, i);
StringGrid1->Canvas->FillRect(Casilla);
StringGrid1->Canvas->TextOut(Casilla.Left+1,Casilla.top+1,StringGrid1->Cells[0][i]);
}
}
__________________
▶ https://www.facebook.com/riverplateoficial ◀ |
|
#2
|
||||
|
||||
|
para eso casi mejor usar algo como sqlite o mysql ya que estossi te permiten usar consultas, aplicar filtros y mucho mas. De todos modos podrias usar dos stringgrid e vez de uno y en el que creas como auxilar y que no será visible es en el que guardarás todo y en el que está visible lo rellenas usando los datos del que está oculto.
|
|
#3
|
||||
|
||||
|
Cita:
No existe una propiedad tal como Visible para las filas de un TStringGrid. Lo único que se me ocurre en este momento para hacer lo que buscas, es usar la propiedad RowHeights[n] para darle alto cero a aquellas filas que no tienen coincidencia con lo que llevas ingresado en el TEdit. El filtro se anula si dejas la propiedad Text del Edit igual a cadena vacía. Ejemplo: Código:
...
#define INDEX_COL 0
int OldRowHeight;
// Cargar datos al StringGrid
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TStrings *TS = new TStringList;
// leer archivo de prueba
TS->LoadFromFile(ExtractFilePath(Application->ExeName) + "archivo.txt");
// Ajustar StringGrid
StringGrid1->FixedRows= 1;
StringGrid1->FixedCols= 0;
// fijar número de filas
StringGrid1->RowCount=TS->Count-1;
// fijar número de columnas
TStrings *aux = new TStringList;
StringGrid1->ColCount= ExtractStrings(TSysCharSet()<< ',',
TSysCharSet() << '\0', TS->Strings[0].c_str(),aux);
delete aux;
// obtener alto de celda predeterminado
OldRowHeight = StringGrid1->DefaultRowHeight;
// pasar a StringGrid
for(int lin=0; lin<TS->Count; lin++)
StringGrid1->Rows[StringGrid1->FixedRows+lin]->CommaText= TS->Strings[lin];
delete TS;
}
// Mostrar sólo las filas cuya columna índice tenga los caracteres ingresados
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
TStringGrid *SG = StringGrid1;
for(int f=SG->FixedRows; f<SG->RowCount; f++)
if(UpperCase(SG->Cells[INDEX_COL][f].SubString(1,Edit1->Text.Length()))
== UpperCase(Edit1->Text))
SG->RowHeights[f]= OldRowHeight;
else
SG->RowHeights[f]= 0;
}
INDEX_COL brinda el índice de la columna sobre la cuál se realizará la búsqueda. Cualquier dificultad avisame y te adjunto el código fuente. Como sugerencia, es muchísimo mas simple y eficiente realizar esta taréa (y muchas otras) sobre un TDBGrid usando una tabla de una base de datos. Saludos ![]() Pd: Una consulta, ¿ Tenes dificultad para visualizar los mensajes que los escribis todos en negrita ?
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#4
|
||||
|
||||
|
Gracias ahi lo probe y anda.
__________________
▶ https://www.facebook.com/riverplateoficial ◀ |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Busquedad en un listview | eennzzoo | C++ Builder | 9 | 16-03-2014 18:32:21 |
| Busquedad en un txt | eennzzoo | C++ Builder | 7 | 14-03-2014 17:06:15 |
| Stringgrid | Pollo2004 | Varios | 7 | 31-10-2008 01:21:13 |
| stringgrid en celda de otro stringgrid?? | noodle_ | OOP | 3 | 17-06-2008 13:36:01 |
| StringGrid | giank_s | OOP | 3 | 02-12-2004 14:58:29 |
|