Executar Evento OnChange do TEdit

Delphi

12/08/2008

Boa tarde pessoal...

Eu tenho um campo edit....

e no evento OnChange do mesmo eu verifico o número de caracteres se for igual a zero um botão chamado de abrir muda a propriedade enabled pra false e se for maior q zero o botão muda propriedade enabled para True....até aew tudo bem..


o problema é q..

Eu faço TEdt1.text := ´Qualquer coisa´...

O botão continua com a propriedade enable = false...


como eu faço pra q ele exete o OnChange do Edit qdo eu mandar um texto desta forma como descrevi acima???



Obrigado....


Wdrocha

Wdrocha

Curtidas 0

Melhor post

Thiago Vidal

Thiago Vidal

13/08/2008

Você pode usar também:

edit1.Text:=´qualquer coisa´;
edit1.OnChange(edit1);


Forçando a chamada do evento.


GOSTEI 1

Mais Respostas

Marco Salles

Marco Salles

12/08/2008

num entendo esta instrução

TEdit.text := ´qualquer coisa´ ????

Mas aonde voce esta digitando esta instrução ???

veja

procedure TForm1.Edit1Change(Sender: TObject);
begin
button1.enabled:= Tedit(sender).Text = ´´
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=´qualquer coisa´;
end;


funciona sem problema


GOSTEI 0
Wdrocha

Wdrocha

12/08/2008

Boa Tarde colega...

Deixa eu explicar melhor....

Eu tenho um form responsável por abrir arquivos Txt...

Eu tow usando pra selecionar o arquivo um componente TShellListView...Este componente só mostra pastas e arquivos Txt


Qdo eu clico no componente, ele verifica se foi clicado em um arquivo e pega o nome deste arquivo e mostra em um campo TEdit apenas o nome do arquivo e o path completo ele mostra em um label....


Qdo eu clicar no arquivo e o nome dele aparecer no TEdit o botão para abrir o mesmo tem q ficar habilitado....

o Problema é....

No evento OnChange eu fiz isto..

If (Length (EdtNomeArquivo.Text) > 0) Then

          BtAbrir.Enabled := True

      Else

          BtAbrir.Enabled := False;


E no evento OnChange do meu TShellListView que chamei de ShellDireitorios ...
Procedure TFrmAbrirPasta.ShellDiretoriosChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
  Begin

      If ShellDiretorios.Selected <> Nil Then

          Begin

            LblPath.Caption:= ShellDiretorios.SelectedFolder.PathName; //Path do arquivo ou pasta selecionada

            If Not (ShellDiretorios.SelectedFolder.IsFolder) Then

                Begin
                   //Pega apenas o nome do arquivo
                   EdtNomeArquivo.Text := ShellDiretorios.SelectedFolder.DisplayName;
                   
                   //Aqui ele habilita o botão ABRIR,mas qdo executa o OnChange ele volta a ficar FALSE
                   BtAbrir.Enabled := True;

               End;

          End

      Else

          Begin
              //Caso clique em outro lugar q não seja arquivo ou pasta ele limpa o Edit e o label q mostra o path absoluto
              EdtNomeArquivo.Clear;
              LblPath.Caption := ´´;

          End;

  End;



Qdo eu clico em um arquivo ele habilita o botão mas logo desabilita...eu sei disso pq debugando ele habilita e qdo entra no onChange ele desabilita de novo o botão....como se não tivesse nada no campo Edit

É isso q tah acontecendo

Vlw manow...


GOSTEI 0
Wdrocha

Wdrocha

12/08/2008

Resolvi o problema....

eu fiz essa verificação no OnClik do ShellListView
If Not (ShellDiretorios.SelectedFolder.IsFolder) Then //Se não for uma pasta então é um arquivo Begin EdtNomeArquivo.Text := ShellDiretorios.SelectedFolder.PathName; BtAbrir.Enabled := True;



Funcionou certinhow.....


Vlw


GOSTEI 0
Marco Salles

Marco Salles

12/08/2008

beleza , mas com sugestão mude esta instrução :

If (Length (EdtNomeArquivo.Text) > 0) Then 

          BtAbrir.Enabled := True 

      Else 

          BtAbrir.Enabled := False; 

para :

BtAbrir.enabled:= Tedit(sender).Text = ´´ 


pois a primeira parece redudante , e voce economiza um if.


GOSTEI 0
Wdrocha

Wdrocha

12/08/2008

Bom dia, funcionou perfeitamente...




Vlw pela dica....


GOSTEI 0
POSTAR