Deixar um listbox visible ao digitar no RichEdit?
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
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
Curtidas 0
Respostas
Eriley Barbosa
18/10/2010
procedure TForm1.RichEdit1Change(Sender: TObject);
var
Linha: integer;
begin
Linha := RichEdit1.CaretPos.y;
if RichEdit1.Lines[Linha] = 'casa' then
ShowMessage('casa');
end;
var
Linha: integer;
begin
Linha := RichEdit1.CaretPos.y;
if RichEdit1.Lines[Linha] = 'casa' then
ShowMessage('casa');
end;
GOSTEI 0
Adriano Dolce
18/10/2010
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:
var
Linha: integer;
begin
Linha := RichEdit1.CaretPos.y;
if RichEdit1.Lines[Linha] = 'casa' then
ShowMessage('casa');
end;
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.
GOSTEI 0
Adriano Dolce
18/10/2010
up... voltar ao topo
GOSTEI 0
Rodrigo Mattos
18/10/2010
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;
GOSTEI 0
Adriano Dolce
18/10/2010
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:
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...
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;
GOSTEI 0
Marco Salles
18/10/2010
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;
GOSTEI 0
Adriano Dolce
18/10/2010
Boa tarde Marco Salles, vou testar semana que vem na empresa e depois eu informo o resultado...
Obrigado amigo.
Obrigado amigo.
GOSTEI 0
Marco Salles
18/10/2010
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
Obrigado amigo.
GOSTEI 0
Adriano Dolce
18/10/2010
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.htmlObrigado amigo.
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.
GOSTEI 0
Marco Salles
18/10/2010
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
GOSTEI 0
Adriano Dolce
18/10/2010
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 DadosMas este assunto ainda é muito estenso, só que por hora vi que o que vc postou ai, esta funcionando... Obrigado amigo.
GOSTEI 0
Adriano Dolce
18/10/2010
Ola Marco, tudo bem? Mandei o projeto para seu email do UOL, se quiser dar uma olhada...
GOSTEI 0