GARANTIR DESCONTO

Fórum um busca complicada com combo box #275896

06/04/2005

0

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


Dpinho

Dpinho

Responder

Posts

06/04/2005

Rjun

Você verificou com o debug se os valores são iguais ?


Responder

Gostei + 0

06/04/2005

Dpinho

Você verificou com o debug se os valores são iguais ?

sim, meu problema e como retornar o valor co combo pra o edit


Responder

Gostei + 0

06/04/2005

Sandra

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]?

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


Responder

Gostei + 0

06/04/2005

Dpinho

mas eu preciso checar se realmente o testo e igual, preciso escolher o cadastro certo


Responder

Gostei + 0

06/04/2005

Rjun

Não aparece nada no Edit quando vc pressiona Enter ?


Responder

Gostei + 0

06/04/2005

Dpinho

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


Responder

Gostei + 0

08/04/2005

Dpinho

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar