Fazer consulta numa listbox.
Fala Galera!
Eu tenho uma listbox onde estão listadas as tabelas do meu banco.
Agora eu preciso fazer uma opção de filtro, que somente seja listado na listbox as tabelas q tiverem *edit.text* no nome.
Alguém poderia me ajudar a fazer isso???
Valew!!!
Eu tenho uma listbox onde estão listadas as tabelas do meu banco.
Agora eu preciso fazer uma opção de filtro, que somente seja listado na listbox as tabelas q tiverem *edit.text* no nome.
Alguém poderia me ajudar a fazer isso???
Valew!!!
Bueno
Curtidas 0
Respostas
Aroldo Zanela
19/02/2004
Colega,
Não entendi, poderia detalhar mais e se possível um exemplo.
Não entendi, poderia detalhar mais e se possível um exemplo.
GOSTEI 0
Bueno
19/02/2004
Claro! vamos lá...
eu tenho uma listbox onde estão listadas as tabelas do meu banco de dados:
só que agora eu preciso criar uma opção para o usuário fazer um filtro nessa listagem. Por exemplo, c eu quiser listar as tabelas relacionadas ao RH, eu digito rh numa edit, e aí é listado na listbox todas as tabelas que contiverem *rh* no nome.
Deu pra entender?
eu tenho uma listbox onde estão listadas as tabelas do meu banco de dados:
ADO_logix_prd.GetTableNames(listbox1.items, False);
só que agora eu preciso criar uma opção para o usuário fazer um filtro nessa listagem. Por exemplo, c eu quiser listar as tabelas relacionadas ao RH, eu digito rh numa edit, e aí é listado na listbox todas as tabelas que contiverem *rh* no nome.
Deu pra entender?
GOSTEI 0
Leanribas
19/02/2004
aqui vai um exemplo:
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
ListBox1: TListBox;
Label1: TLabel;
function Procura(Txt: string ): string;
procedure Edit1Change(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
bPAUSA: Boolean; // Variável boleana que se TRUE impede ação do autocompletar
implementation
{$R *.DFM}
function TForm1.Procura(Txt: string): String;
var
iA: INTEGER;
begin
WITH ListBox1.ITEMS DO
if TXT <>´´ THEN
FOR iA:=0 to PRED(COUNT) do
IF (LSTRCMP(PCHAR(COPY(STRINGS[iA],1,LENGTH(TXT))),PCHAR(TXT))=0) OR
(LSTRCMPI(PCHAR(COPY(STRINGS[iA],1,LENGTH(TXT))),PCHAR(TXT))=0) THEN
BEGIN
RESULT:=STRINGS[iA];
BREAK;
END;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
iA,iB: INTEGER;
begin
IF NOT bPAUSA AND ACTIVE THEN BEGIN
IF PROCURA(Edit1.TEXT) <> ´´ THEN
BEGIN
iB:=LENGTH(Edit1.TEXT);
Edit1.TEXT:=PROCURA(Edit1.TEXT);
Edit1.SELSTART:=iB;
Edit1.SELLENGTH:=LENGTH(PROCURA(Edit1.TEXT))-iB;
end;
END;
bPAUSA:=FALSE;
//
FOR iA := 0 TO ListBox1.ITEMS.COUNT-1 DO
IF ListBox1.ITEMS.STRINGS[iA] = Edit1.TEXT THEN BEGIN
ListBox1.ITEMINDEX := iA;
BREAK;
END ELSE
ListBox1.ITEMINDEX := -1;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
IF (KEY = VK_BACK) OR (KEY = VK_DELETE) THEN bPAUSA:=TRUE;
IF KEY = 13 THEN Edit1.SELSTART := LENGTH(Edit1.Text);
IF KEY = 27 THEN Edit1.CLEAR;
end;
end.
nesse exemplo ao vc digitar no Edit ele localiza parcialmente no ListBox.
Falou.
Leandro
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
ListBox1: TListBox;
Label1: TLabel;
function Procura(Txt: string ): string;
procedure Edit1Change(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
bPAUSA: Boolean; // Variável boleana que se TRUE impede ação do autocompletar
implementation
{$R *.DFM}
function TForm1.Procura(Txt: string): String;
var
iA: INTEGER;
begin
WITH ListBox1.ITEMS DO
if TXT <>´´ THEN
FOR iA:=0 to PRED(COUNT) do
IF (LSTRCMP(PCHAR(COPY(STRINGS[iA],1,LENGTH(TXT))),PCHAR(TXT))=0) OR
(LSTRCMPI(PCHAR(COPY(STRINGS[iA],1,LENGTH(TXT))),PCHAR(TXT))=0) THEN
BEGIN
RESULT:=STRINGS[iA];
BREAK;
END;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
iA,iB: INTEGER;
begin
IF NOT bPAUSA AND ACTIVE THEN BEGIN
IF PROCURA(Edit1.TEXT) <> ´´ THEN
BEGIN
iB:=LENGTH(Edit1.TEXT);
Edit1.TEXT:=PROCURA(Edit1.TEXT);
Edit1.SELSTART:=iB;
Edit1.SELLENGTH:=LENGTH(PROCURA(Edit1.TEXT))-iB;
end;
END;
bPAUSA:=FALSE;
//
FOR iA := 0 TO ListBox1.ITEMS.COUNT-1 DO
IF ListBox1.ITEMS.STRINGS[iA] = Edit1.TEXT THEN BEGIN
ListBox1.ITEMINDEX := iA;
BREAK;
END ELSE
ListBox1.ITEMINDEX := -1;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
IF (KEY = VK_BACK) OR (KEY = VK_DELETE) THEN bPAUSA:=TRUE;
IF KEY = 13 THEN Edit1.SELSTART := LENGTH(Edit1.Text);
IF KEY = 27 THEN Edit1.CLEAR;
end;
end.
nesse exemplo ao vc digitar no Edit ele localiza parcialmente no ListBox.
Falou.
Leandro
GOSTEI 0