Fazer consulta numa listbox.

Delphi

19/02/2004

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!!!


Bueno

Bueno

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

19/02/2004

Colega,

Não entendi, poderia detalhar mais e se possível um exemplo.


GOSTEI 0
Bueno

Bueno

19/02/2004

Claro! vamos lá...
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

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


GOSTEI 0
POSTAR