Fórum Deixar um listbox visible ao digitar no RichEdit? #388727

18/10/2010

0

Pessoal, tem como abrir um listbox dentro do richedit logo apos eu digitar uma palavra?

Por exemplo:

Supomos que estou digitanto um texto no richedit e a palavra é CASA

Então logo apos a palavra CASA abrir um listbox (visible).

Este listbox deve ser flexivel para sempre abrir após a palavra CASA
Adriano Dolce

Adriano Dolce

Responder

Posts

18/10/2010

Eriley Barbosa

procedure TForm1.RichEdit1Change(Sender: TObject);
var
  Linha: integer;
begin
  Linha := RichEdit1.CaretPos.y;
  if RichEdit1.Lines[Linha] = 'casa' then
    ShowMessage('casa');
end;
Responder

Gostei + 0

18/10/2010

Adriano Dolce

procedure TForm1.RichEdit1Change(Sender: TObject);
var
  Linha: integer;
begin
  Linha := RichEdit1.CaretPos.y;
  if RichEdit1.Lines[Linha] = 'casa' then
    ShowMessage('casa');
end;
Olá amigo, agradeço sua ajuda mas... Não entendi seu codigo.       Estou tentando assim:
Código:
procedure TForm1.sListBoxKeyDown(Sender: TObject; var Key: Word;


  Shift: TShiftState);


var


  i: Integer;


begin


  i := sListBox.ItemIndex;


  if key = 13 then


  begin


    RichEdit1.Text := RichEdit1.Text + ' '+ sListBox.Items[i];


    RichEdit1.Text := RichEdit1.Text + ' ';


    RichEdit1.SetFocus;


    Keybd_Event(VK_END,0,0,0);


    sListBox.Visible := False;


  end;


end;


Código:
procedure TForm1.RichEdit1Change(Sender: TObject);


var


  nPos, Linha: Integer;


  sTexto: String;


begin


  With RichEdit1 do


  begin


    SetFocus;


    sTexto := 'casa';


    nPos := FindText(sTexto, 0, Length(RichEdit1.Text), []);


    if nPos >= 0 then


    begin


      sListBox.Visible := True;


      sListBox.ItemIndex := 0;


      sListBox.SetFocus;


    end;


  end;


end;



Mais além de não conseguir colocar o ListBox junto a palavra, depois que eu digito a palavra CASA e continuo digitando no richedit, o if nPos >= 0 then vai continuar a abrir o listbox. E quero que abra o listbox novamente somente se eu digitar de novo a palavra CASA no richedit.

Ou seja apenas quando digitar esta palavra deve abrir o listbox eu pego o que tem na lista e deixo invisivel novamente.
Responder

Gostei + 0

11/11/2010

Adriano Dolce

up... voltar ao topo
Responder

Gostei + 0

12/11/2010

Rodrigo Mattos

amigo não sei se eu entendi direito, eu entendi que quando você digitar 'casa' é para aparecer o listbox né, se for tenta fazer esse código:

procedure TForm1.RichEdit1Change(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to RichEdit1.Lines.Count - 1 do
  begin
    if RichEdit1.Lines.Strings[I] = 'casa' then
    begin
      ListBox1.Visible := True;
      ListBox1.SetFocus;
    end;
  end;

end;

Responder

Gostei + 0

07/01/2011

Adriano Dolce

amigo não sei se eu entendi direito, eu entendi que quando você digitar 'casa' é para aparecer o listbox né, se for tenta fazer esse código:

procedure TForm1.RichEdit1Change(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to RichEdit1.Lines.Count - 1 do
  begin
    if RichEdit1.Lines.Strings[I] = 'casa' then
    begin
      ListBox1.Visible := True;
      ListBox1.SetFocus;
    end;
  end;

end;

Na verdade, estou procurando algo para eu criar um tipo de editor no richedit que faça e destaque palavras reservadas... A idéia seria criar um gerador de script, igual a estes do ibexpert, sql server... aonde destaca palavras reservadas do banco...    
Responder

Gostei + 0

09/01/2011

Marco Salles

  Quem sabe ?????  
var
Linha:Integer;
 
procedure TForm6.RichEdit1Change(Sender: TObject);
var
  sTexto: String;
begin
  With RichEdit1 do
  begin
    SetFocus;
    Linha:=Perform(EM_LINEFROMCHAR,SelStart, 0);
    sTexto:=Lines.Strings[Linha];
    sTexto:=copy(sTexto,length(sTexto)-3,4);
    if sTexto = 'casa' then
    begin
      sListBox.Visible := True;
      sListBox.Left:=Left+
                      self.Canvas.TextWidth(Lines.Strings[Linha]);
       sListBox.top:=TOP+
                     (Linha)*Form6.Canvas.TextHeight(Lines.Text);
      sListBox.ItemIndex := 0;
      sListBox.SetFocus;
    end;
  end;
end;

 
procedure TForm6.sListBoxKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i: Integer;
  sTexto:String;
begin
  i := sListBox.ItemIndex;
  if key = 13 then
  begin
     with RichEdit1 do
       begin
         SetFocus;
         Lines.Strings[Linha]:= Lines.Strings[Linha]+' '+ sListBox.Items[i]+' ';
         Keybd_Event(VK_END,0,0,0);
         sListBox.Visible := False;
       end;
  end;
end;

Responder

Gostei + 0

09/01/2011

Adriano Dolce

Boa tarde Marco Salles, vou testar semana que vem na empresa e depois eu informo o resultado...

Obrigado amigo.
Responder

Gostei + 0

10/01/2011

Marco Salles

Boa tarde Marco Salles, vou testar semana que vem na empresa e depois eu informo o resultado...

Obrigado amigo.
Adriano amigo , vc ja retornou a sua empresa para testar ??? O Componente de pesquisa não é da empresa né ???   https://www.devmedia.com.br/forum/delphi/393526-Ajuda-criar-componente-de-pesquisa.html
Responder

Gostei + 0

11/01/2011

Adriano Dolce

Boa tarde Marco Salles, vou testar semana que vem na empresa e depois eu informo o resultado...

Obrigado amigo.
Adriano amigo , vc ja retornou a sua empresa para testar ??? O Componente de pesquisa não é da empresa né ???   https://www.devmedia.com.br/forum/delphi/393526-Ajuda-criar-componente-de-pesquisa.html
Olá Marco, blz...

Este componente é meu, fui eu quem desenvolvi...

Sobre o richedit, eu quero fazer algo parecido com o editor do MSSQL, mais não tive tempo ainda de mecher, pois estamos desenvolvendo outra coisa na empresa, que tem prazo... Me deixando com pouco tempo disponivel.

Sabe... Estas coisas de governo, que precisa ser pra ontem ... hehehe.

Mais assim que der tempo ja vou ver este post ai pra testar, e dar continuidade.

Obrigado amigo.

Responder

Gostei + 0

11/01/2011

Marco Salles

Beleza . Testei aqui e parece que o resultado foi satisfatório   posicionamento lef top e digitação   tem ao meu ver um unico e pequeno inconveniente   por exemplo   Liha do memo >>>   bla bla bla casa  >>>> funciona   Liha do memo >>>   bla bla bla casa  bla bla bla casa >>>> funciona   mas na situação abaixo não ira funcionar   Liha do memo >>>   bla bla bla casa  RETORNAR COM O CURSOR e Escrever casa  bla bla bla casa >>>> Não ativa  
Responder

Gostei + 0

11/01/2011

Adriano Dolce

Beleza . Testei aqui e parece que o resultado foi satisfatório   posicionamento lef top e digitação   tem ao meu ver um unico e pequeno inconveniente   por exemplo   Liha do memo >>>   bla bla bla casa  >>>> funciona   Liha do memo >>>   bla bla bla casa  bla bla bla casa >>>> funciona   mas na situação abaixo não ira funcionar   Liha do memo >>>   bla bla bla casa  RETORNAR COM O CURSOR e Escrever casa  bla bla bla casa >>>> Não ativa  
Ola Marco, fiz uns testes aqui e a principio funciona... Troquei casa por FROM (ainda não tratei CASE INSENSITIVE) mais continuando... Como disse vai ser um tipo de gerador de script, no ListBox vai vir como default todas tabelas envolvidas e vou destacar palavras reservadas como SELECT, FROM, WHERE, enfim varias palavras pertencente ao comando SQL... A idéia a principio é criar uma pequena Ferramentas de Administração de Bancos de Dados

Mas este assunto ainda é muito estenso, só que por hora vi que o que vc postou ai, esta funcionando... Obrigado amigo.
Responder

Gostei + 0

13/01/2011

Adriano Dolce

Ola Marco, tudo bem? Mandei o projeto para seu email do UOL, se quiser dar uma olhada...
Responder

Gostei + 0

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

Aceitar