um busca complicada com combo box
Estou fazendo este codigo, mas ta dificil pra retornar o valor alguem poderia ajudar?
aqui é o codigo da busca:
[color=red:0934481585]procedure TfmLanorca.pnlEdit1Change(Sender: TObject);
var
S : Array[0..255] of Char;
begin
//aqui a mudança
pnlCombo.DroppedDown:=True;
StrPCopy(S, Edit1.Text);
with pnlcombo do
pnlCombo.ItemIndex := Perform(LB_SELECTSTRING, 0, LongInt(@S));
end;[/color:0934481585]
Foi acumulado os registro da tabela no combobox
depois quando vou digitando no edit ele varre a variavel e mostra na quia do combo:
[color=red:0934481585]procedure TfmLanorca.pnlEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_Return then
begin
pnlEdit2.SetFocus;
pnlCombo.DroppedDown:=False;
if pnlEdit1.Text = pnlcombo.Text then pnlEdit1.Text := pnlCombo.Text;
end;
end;[/color:0934481585]
So que gostaria que ao dar enter e a linha estiver identica retornasse pro edit. aqui não retorna
se alguem puder ajudar, este fica parecido com a busca do Internet Explorer
aqui é o codigo da busca:
[color=red:0934481585]procedure TfmLanorca.pnlEdit1Change(Sender: TObject);
var
S : Array[0..255] of Char;
begin
//aqui a mudança
pnlCombo.DroppedDown:=True;
StrPCopy(S, Edit1.Text);
with pnlcombo do
pnlCombo.ItemIndex := Perform(LB_SELECTSTRING, 0, LongInt(@S));
end;[/color:0934481585]
Foi acumulado os registro da tabela no combobox
depois quando vou digitando no edit ele varre a variavel e mostra na quia do combo:
[color=red:0934481585]procedure TfmLanorca.pnlEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_Return then
begin
pnlEdit2.SetFocus;
pnlCombo.DroppedDown:=False;
if pnlEdit1.Text = pnlcombo.Text then pnlEdit1.Text := pnlCombo.Text;
end;
end;[/color:0934481585]
So que gostaria que ao dar enter e a linha estiver identica retornasse pro edit. aqui não retorna
se alguem puder ajudar, este fica parecido com a busca do Internet Explorer
Dpinho
Curtidas 0
Respostas
Rjun
06/04/2005
Você verificou com o debug se os valores são iguais ?
GOSTEI 0
Dpinho
06/04/2005
Você verificou com o debug se os valores são iguais ?
sim, meu problema e como retornar o valor co combo pra o edit
GOSTEI 0
Sandra
06/04/2005
DPinho,
Não entendi uma coisa. :oops:
Se o texto do edit é igual ao do combobox, por que você coloca o [b:77071082d4]if[/b:77071082d4]?
Não seria somente:
:D
Não entendi uma coisa. :oops:
Se o texto do edit é igual ao do combobox, por que você coloca o [b:77071082d4]if[/b:77071082d4]?
if pnlEdit1.Text = pnlcombo.Text then pnlEdit1.Text := pnlCombo.Text;
Não seria somente:
procedure TfmLanorca.pnlEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_Return then begin pnlEdit2.SetFocus; pnlCombo.DroppedDown:=False; pnlEdit1.Text := pnlCombo.Text; end; end;
:D
GOSTEI 0
Dpinho
06/04/2005
mas eu preciso checar se realmente o testo e igual, preciso escolher o cadastro certo
GOSTEI 0
Rjun
06/04/2005
Não aparece nada no Edit quando vc pressiona Enter ?
GOSTEI 0
Dpinho
06/04/2005
Não aparece nada no Edit quando vc pressiona Enter ?
Não retorna nada, fica somente o que ja foi digitado. estava querendo fazer esta busca tipo do internet explore ate que ficou legal, mas não retorna pro edit
GOSTEI 0
Dpinho
06/04/2005
A ideia era colocar um aba embaixo do Edit para ficar parecendo com a busca do Internet Explore. Então vamos la
Primeiro coloque o Edit no Form e um ComboBox
Coloque o comboBox embaixo do registro
No evento Create do Form abra a Tabela e incialize o Combo
[color=red:7e55ef00f2]procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.Open;
comboBox1.Items.clear;
table1.First;
While not table1.Eof do begin
ComboBox1.Items.add(Table1.Fieldbyname(´Company´).asstring);
Table1.Next;
End;
end;[/color:7e55ef00f2]
em Implemetion coloque a função
[color=red:7e55ef00f2]function TForm1.Procura(Txt: string): String;
var
iA: INTEGER;
begin
WITH ComboBox1.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;[/color:7e55ef00f2]
No Change do Edit coloque o codigo
[color=red:7e55ef00f2]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 ComboBox1.ITEMS.COUNT-1 DO
IF comboBox1.ITEMS.STRINGS[iA] = Edit1.TEXT THEN BEGIN
ComboBox1.ITEMINDEX := iA;
BREAK;
END ELSE
ComboBox1.ITEMINDEX := -1;
ComboBox1.DroppedDown:=true;
end;[/color:7e55ef00f2]
no Evento KeyDow do Edit coloque o codigo
[color=red:7e55ef00f2]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;
ComboBox1.DroppedDown:=False;
end;[/color:7e55ef00f2]
Beleza o macete da aba e mudar a propriedade [color=red:7e55ef00f2]DroppedDown[/color:7e55ef00f2] do combo em tempo de execursão
Primeiro coloque o Edit no Form e um ComboBox
Coloque o comboBox embaixo do registro
No evento Create do Form abra a Tabela e incialize o Combo
[color=red:7e55ef00f2]procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.Open;
comboBox1.Items.clear;
table1.First;
While not table1.Eof do begin
ComboBox1.Items.add(Table1.Fieldbyname(´Company´).asstring);
Table1.Next;
End;
end;[/color:7e55ef00f2]
em Implemetion coloque a função
[color=red:7e55ef00f2]function TForm1.Procura(Txt: string): String;
var
iA: INTEGER;
begin
WITH ComboBox1.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;[/color:7e55ef00f2]
No Change do Edit coloque o codigo
[color=red:7e55ef00f2]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 ComboBox1.ITEMS.COUNT-1 DO
IF comboBox1.ITEMS.STRINGS[iA] = Edit1.TEXT THEN BEGIN
ComboBox1.ITEMINDEX := iA;
BREAK;
END ELSE
ComboBox1.ITEMINDEX := -1;
ComboBox1.DroppedDown:=true;
end;[/color:7e55ef00f2]
no Evento KeyDow do Edit coloque o codigo
[color=red:7e55ef00f2]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;
ComboBox1.DroppedDown:=False;
end;[/color:7e55ef00f2]
Beleza o macete da aba e mudar a propriedade [color=red:7e55ef00f2]DroppedDown[/color:7e55ef00f2] do combo em tempo de execursão
GOSTEI 0