Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-09-2006
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
busqueda dentro de en un listbox

Hola ha todos.

quiera saber como realizar una busqueda de un monbre especifico dentro de todos los nombres que esten dentro de un listbox atraves de un edit, me explico,

quisiera que cuando este digitando la primera letra del nombre a buscar dentro de un edit, en el listbox enfoque el primer nombre que empieze con dicha letra y cuando se digite la segunda letra enfoque el primer nombre que empieze con esas 2 primeras letras haci cada ves que digite la siguiente letra del nombre.

pense utilizar for y pos(busqueda de una cadena dentro de otro cadena)buscar item por item desde el nombre que empieze con a hasta la z pero mi listbox tiene como 1000 nombres o mas y realizar esta busqueda desde la a hazta la z cada ves que digite una letra
la verdad no se si abra otra manera mas sencilla.

gracias a todos de ante mano.
[IMG]file:///C:/WINDOWS/TEMP/moz-screenshot.jpg[/IMG][IMG]file:///C:/WINDOWS/TEMP/moz-screenshot-1.jpg[/IMG][IMG]file:///C:/WINDOWS/TEMP/moz-screenshot-2.jpg[/IMG][IMG]file:///C:/WINDOWS/TEMP/moz-screenshot-3.jpg[/IMG][IMG]file:///C:/WINDOWS/TEMP/moz-screenshot-4.jpg[/IMG][IMG]file:///C:/WINDOWS/TEMP/moz-screenshot-5.jpg[/IMG]
Responder Con Cita
  #2  
Antiguo 27-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Max_E
Asi:
Código Delphi [-]
procedure TFBuscaNombre.Edit1Change(Sender: TObject);
var   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      ATNombres.Filtered := False;
      If CBFiltro.Text = 'Nombre' then Filtro := 'Nombre Like '''+Edit1.Text + '*'''
         else If CBFiltro.Text = 'Apellido' then Filtro := 'Apellido Like '''+ Edit1.Text + '*'''
      ATNombres.Filter := Filtro;
      ATNombres.Filtered := True
   end
   else ATNombres.Filtered := False;
end;
CBFiltro es un combobox, en donde indico si es por nombre o apellido la busqueda, con solo poner la primera letra va filtrando hasta encontrar lo requerido.
Saludos
Responder Con Cita
  #3  
Antiguo 27-09-2006
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
busqueda en un listbox (una ayuda mas)

hola:Gracias por ayudarme

El componente ATnombre no es un listbox, el listbox no tiene la propiedad filtered ni filter.
podrias decirme que componente es y si es un listbox como activo esta propiedad por que no la tiene como predeterminada.

gracias por tomarte el tiempo para responder.
Responder Con Cita
  #4  
Antiguo 28-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
ATNombre en este caso es el nombre de la tabla o query que usas.
Saludos
Responder Con Cita
  #5  
Antiguo 28-09-2006
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
aun mas ayuda

hola denuevo:

Hice la aplicación con la ayuda que me diste y utilice un Query que tiene su base de datos con datos de nombre, apellidos y área de trabajo, pero como muestro o enfoco los nombres en el listbox que se van filtrando mientras voy digitando el nombre en el edit.

creo que esa seria la ultima ayuda (ojala) para cerrar el tema. gracias por tu tiempo en leer y contestar mis dudas.
Responder Con Cita
  #6  
Antiguo 28-09-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Max_E
Aqui te envio un codigo para que busques en este caso Clientes, los nombres de las tablas por supuesto son los mios, tendras que poner los tuyos para que te funcione, pero el codigo funciona perfectamente y lo puedes aplicar si le pones un poco de atencion, es realmente facil.
Código Delphi [-]
unit UFBuscaCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UDM1, DBCtrls, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls,
  Buttons;

type
  TFBuscaCliente = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    CBFiltro: TComboBox;
    DBGrid1: TDBGrid;
    ATClientes: TADOTable;
    ATClientesCodCliente: TIntegerField;
    ATClientesNombreCliente: TWideStringField;
    ATClientesDireccion1: TWideStringField;
    ATClientesDireccion2: TWideStringField;
    ATClientesPais: TWideStringField;
    ATClientesProvincia: TWideStringField;
    ATClientesCanton: TWideStringField;
    ATClientesDistrito: TWideStringField;
    ATClientesApartado: TWideStringField;
    ATClientesContacto: TWideStringField;
    ATClientesTelefono: TWideStringField;
    ATClientesExtencion: TWideStringField;
    ATClientesFax: TWideStringField;
    ATClientesEmail: TWideStringField;
    ATClientesNoEnvEmail: TBooleanField;
    ATClientesTerminos: TWideStringField;
    ATClientesVendedor: TWideStringField;
    ATClientesSuspendido: TBooleanField;
    ATClientesExcento: TBooleanField;
    ATClientesFechaIngreso: TDateTimeField;
    ATClientesLimiteCredito: TFloatField;
    ATClientesNotas: TMemoField;
    DSClientes: TDataSource;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    Label3: TLabel;
    DBText3: TDBText;
    Label4: TLabel;
    DBText4: TDBText;
    DBText5: TDBText;
    Label5: TLabel;
    Label6: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ATClientesCatPrecio: TWordField;
    DBListBox1: TDBListBox;
    procedure Edit1Change(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Cod_Cliente: string;
    Nombre_Cliente: string;
    NombreCliente: string;
  end;

var
  FBuscaCliente: TFBuscaCliente;

implementation

{$R *.dfm}

procedure TFBuscaCliente.Edit1Change(Sender: TObject);
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      ATClientes.Filtered := False;
      If CBFiltro.Text = 'Código' then Filtro := 'CodCliente Like '+Edit1.Text
         else If CBFiltro.Text = 'Nombre' then Filtro := 'NombreCliente Like '''+ Edit1.Text + '*'''
            else If CBFiltro.Text = 'Teléfono' then Filtro := 'Telefono Like '''+ Edit1.Text + '*''';
      ATClientes.Filter := Filtro;
      ATClientes.Filtered := True
   end
   else ATClientes.Filtered := False;
end;

procedure TFBuscaCliente.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   IF Key = VK_DOWN then
   DbGrid1.SetFocus;
end;

procedure TFBuscaCliente.BitBtn1Click(Sender: TObject);
begin
   CodCliente := ATClientesCodCliente.AsString;
   Cod_Cliente := ATClientesCodCliente.AsString;
   NombreCliente := ATClientesNombreCliente.AsString;
   Nombre_Cliente := ATClientesNombreCliente.AsString;
   Close;
end;

procedure TFBuscaCliente.DBGrid1DblClick(Sender: TObject);
begin
   BitBtn1Click(DBGrid1);
end;

procedure TFBuscaCliente.BitBtn2Click(Sender: TObject);
begin
   CodCliente := '';
   Cod_Cliente := '';
   NombreCliente := '';
   Nombre_Cliente := '';
   Close;
end;

procedure TFBuscaCliente.FormCreate(Sender: TObject);
begin
   ATClientes.Open;
end;

procedure TFBuscaCliente.FormDestroy(Sender: TObject);
begin
   ATClientes.Close;
end;

end.
Como veras aqui se aplican varias cosas en el filtro, codigo, nombre, telefono.
Yo no uso un listbox para esto, uso un dbgrid, ya que me da la informacion completa del cliente en este caso, no creo que tengas mas problemas de todos modos si necesitas algo me dices.
Saludos
Responder Con Cita
  #7  
Antiguo 01-10-2006
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
ayuda en Busqueda en DBgrid

hola denuevo:

he hecho esto

Código Delphi [-]unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; ComboBox1: TComboBox; DBGrid1: TDBGrid; Query1: TQuery; DataSource1: TDataSource; procedure FormCreate(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin query1.Open; end; procedure TForm1.Edit1Change(Sender: TObject); var Filtro : String; begin If (Edit1.Text <> '') then begin Query1.Filtered := False; case combobox1.ItemIndex of 0:Filtro := 'Nombre Like '+Edit1.Text + '*'''; 1:Filtro := 'Codigo Like '+Edit1.Text + '*'''; end; Query1.Filter := Filtro; Query1.Filtered := True end else Query1.Filtered := False; end; procedure TForm1.FormDestroy(Sender: TObject); begin Query1.Close; end; end.


1º hice una table con campos Nombre y codigo nada mas, llenando nombres y codigos al asar (jose - 3411, luis - 3415,.......).

2º coloque en el SQL del query
Select*
from busqueda (busqueda es el nombre de la tabla de 2 campos)

3º al ejecutar el programa no me salen errores, pero al digitar 'j' en el edit me sale el error (Query1: Field 'j' not found) y logico no busca nada o algo parecido

4º no se como le hiciste o que es
ATClientesCodCliente: TIntegerField;
ATClientesNombreCliente: TWideStringField; en tus codigos

quiza aqui este mi problema.

podrias explicame donde esta mi gravisimo error

Saludos y gracias por tu tiempo.
Responder Con Cita
  #8  
Antiguo 01-10-2006
Avatar de Max_E.
Max_E. Max_E. is offline
Miembro
 
Registrado: sep 2006
Posts: 90
Poder: 18
Max_E. Va por buen camino
ayuda en busqueda en DBgrid

hola denuevo:

he hecho esto

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ComboBox1: TComboBox;
    DBGrid1: TDBGrid;
    Query1: TQuery;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
query1.Open;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
   Filtro : String;
begin
   If (Edit1.Text <> '') then
   begin
      Query1.Filtered := False;
      case combobox1.ItemIndex of
      0:Filtro := 'Nombre Like '+Edit1.Text + '*''';
      1:Filtro := 'Codigo Like '+Edit1.Text + '*''';
      end;
      Query1.Filter := Filtro;
      Query1.Filtered := True
   end
   else Query1.Filtered := False;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Query1.Close;
end;

end.
1º hice una table con campos Nombre y codigo nada mas, llenando nombres y codigos al asar (jose - 3411, luis - 3415,.......).

2º coloque en el SQL del query
Select*
from busqueda (busqueda es el nombre de la tabla de 2 campos)

3º al ejecutar el programa no me salen errores, pero al digitar 'j' en el edit me sale el error (Query1: Field 'j' not found) y logico no busca nada o algo parecido

4º no se como le hiciste o que es
ATClientesCodCliente: TIntegerField;
ATClientesNombreCliente: TWideStringField; en tus codigos

quiza aqui este mi problema.

podrias explicame donde esta mi gravisimo error

Saludos y gracias por tu tiempo.
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
Uso del listbox.... WilloW Varios 5 14-09-2006 21:40:54
ListBox Tala OOP 3 21-06-2006 16:31:46
uso del listbox majosf Conexión con bases de datos 3 25-07-2005 10:59:25
2 Listbox y BD .... elbilla Varios 5 04-11-2004 11:06:12
listbox cesarjbf OOP 1 16-10-2003 13:17:21


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


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