Fórum Fazer consulta numa listbox. #215291
19/02/2004
0
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
Curtir tópico
+ 0Posts
19/02/2004
Aroldo Zanela
Não entendi, poderia detalhar mais e se possível um exemplo.
Gostei + 0
19/02/2004
Bueno
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
19/02/2004
Leanribas
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
Clique aqui para fazer login e interagir na Comunidade :)