ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] Abrir por código o OpenDialog do FilenameEdit

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Dom Mai 26, 2013 6:37 pm    Assunto: [RESOLVIDO] Abrir por código o OpenDialog do FilenameEdit Responder com Citação

Tenho um componente FilenameEdit, da RxLib, que gostaria de abrir um arquivo com ele através de uma tecla de atalho (CTRL-O).

Tentei o componente com a propriedade Dialog seguida da função Execute, mas ela é só uma propriedade e o retorno é boolean, ou seja, não se aplica.

Também tentei a procedure DoClick do componenente, mas não funciona e dá erro.

Ou seja, eu gostaria de abrir um arquivo pelo componente FilenameEdit usando uma tecla de atalho (hotkey). Alguém tem alguma dica boa?


Editado pela última vez por jairovital em Ter Mai 28, 2013 7:41 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Dom Mai 26, 2013 7:01 pm    Assunto: Responder com Citação

Código:
  if Key = ^O then
  begin
    Key := #0;
    JvFilenameEdit1.Dialog.Execute(Handle);
  end;

Testei com o Jedi, mas com o RX é a mesma coisa.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Seg Mai 27, 2013 7:44 am    Assunto: Responder com Citação

Ôpa, Batera!

Que beleza ainda encontrar você por aqui, como sempre ensinando muita coisa boa!

Pois é, ainda não me aventurei pelo Jedi... Embarassed

E o meu Delphi é o 7.

Está dando o seguinte erro em:
if Key = ^O then
Incompatible types.

Este If está no evento OnKeyDown do Form, que tem a seguinte definição:
TForm_LargLeg.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

Eu encontrei outro código que sugere colocar um componente Timer com intervalo de 1, e dentro dele colocar o seguinte:
Código:

var i:byte
for i:= 8 to 222 do begin
   if GetAsyncKeyState(i)=-32767 then begin
      case i of
        65: begin
        if GetKeyState(vk_control)<0 then
        Button1Click(Sender);
        end;
        80: begin
        if GetKeyState(vk_control)<0 then
        Button2Click(Sender);
        end;
      end;
   end;

O que você acha? Como usar duas teclas se não for possível aceitar ^O ?

Tentei colocar apenas uma tecla, com o seu código. Ficou assim:
if (key = VK_F12) then FilenameEdit1.Dialog.Execute(Handle);

E deu o seguinte erro:
Too many actual parameters.

Ideias?



.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adami
Profissional
Profissional


Registrado: Sexta-Feira, 12 de Novembro de 2010
Mensagens: 501

MensagemEnviada: Seg Mai 27, 2013 8:28 am    Assunto: Responder com Citação

amigo tenta isso

no evento do formulario : OnKeyDown

//111 = O e 79 = o
if (key = 111) or (key = 79) then begin
OpenDialog1.Execute;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Seg Mai 27, 2013 10:55 am    Assunto: Responder com Citação

adami escreveu:
amigo tenta isso

no evento do formulario : OnKeyDown

//111 = O e 79 = o
if (key = 111) or (key = 79) then begin
OpenDialog1.Execute;
end;


E a tecla CTRL? E mais: eu não tenho o componente OpenDialog. Eu tenho o FilenameEdit. O diálogo é dele, e não do OpenDialog. Mas valeu a dica.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Seg Mai 27, 2013 1:37 pm    Assunto: Responder com Citação

Opa Jairo, to aqui ainda! rsrs
Jairo, o código que te passei é pra ser colocado no evento OnKeyPress! Não é no OnKeyDown não...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
adami
Profissional
Profissional


Registrado: Sexta-Feira, 12 de Novembro de 2010
Mensagens: 501

MensagemEnviada: Seg Mai 27, 2013 2:28 pm    Assunto: Responder com Citação

L = 76 //maiúsculo
l = 108 //minusculo

o OpenDialog é nativo do delphi, o delphi 7 possui ele, esta na aba Dialogs.

jairovital escreveu:
adami escreveu:
amigo tenta isso

no evento do formulario : OnKeyDown

//111 = O e 79 = o
if (key = 111) or (key = 79) then begin
OpenDialog1.Execute;
end;


E a tecla CTRL? E mais: eu não tenho o componente OpenDialog. Eu tenho o FilenameEdit. O diálogo é dele, e não do OpenDialog. Mas valeu a dica.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Seg Mai 27, 2013 7:29 pm    Assunto: Responder com Citação

Batera escreveu:
Opa Jairo, to aqui ainda! rsrs
Jairo, o código que te passei é pra ser colocado no evento OnKeyPress! Não é no OnKeyDown não...


Eu coloquei o código no evento OnKeyPress. Ocorre o mesmo erro no (Handle), "Too many actual parameters". Eu tirei o (Handle) e não ocorre erro, mas também não acontece nada ao pressionar CTRL-O no formulário...

adami escreveu:
o OpenDialog é nativo do delphi, o delphi 7 possui ele, esta na aba Dialogs.


Eu sei que existe o componente OpenDialog na paleta do D7. Mas eu estava tentando fazer com o componente FilenameEdit, que tem sua própria caixa de diálogo. Se nada der certo nas minhas aventuras, sob orientação de Batera, aí eu vou apelar e usar o OpenDialog. Mas eu queria antes ver se seria possível usar somente o FilenameEdit.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Seg Mai 27, 2013 7:38 pm    Assunto: Responder com Citação

@Batera:

Acabei de fazer outro teste: colocando o código no evento OnKeyPress do componente FilenameEdit, e não no evento do formulário, e também SEM colocar o (Handle), apenas FilenameEdit1.Dialog.Execute, a janela de diálogo para abrir o arquivo aparece, desde que eu esteja com o foco no FilenameEdit! Mas tenho dois problemas ainda: primeiro, ao selecionar um arquivo e pressionar o botão "Abrir", o nome do arquivo não é passado para o campo do FilenameEdit. Ou seja, não vai abrir o arquivo. Segundo, eu gostaria que o CTRL-O fosse pressionado com o foco em qualquer componente do formulário e não somente se o foco estiver no FilenameEdit.

Entendeu as paradas? Diz aí tua opinião, mestre Batera.
(ou outro colega que tenha a solução).
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Seg Mai 27, 2013 10:36 pm    Assunto: Responder com Citação

Verdade Jairo... fiz o teste aqui também e aconteceu a mesma coisa.
Experimente trocar o evento OnKeyPress do formulário para:
Código:
  if Key = ^O then
  begin
    Key := #0;
    JvFilenameEdit1.DoClick;
  end;

Aqui deu certo! rsrs
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Ter Mai 28, 2013 7:39 am    Assunto: Responder com Citação

Caríssimo colega Batera.

Funcionou! Mas faltou algo importantíssimo que nós nos esquecemos desde o começo. O formulário tem uma propriedade chamada KeyPreview. Essa propriedade é falsa, por padrão. É necessário que ela seja verdadeira para que qualquer evento KeyPress funcione.

Coloquei o seu código e nada e nada. Tentei e tentei e nada. Foi quando me lembrei da safada Keypreview, que estava em falso... Coloquei em verdadeira e... voilà!

Valeu! Tópico RESOLVIDO.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Ter Mai 28, 2013 8:37 am    Assunto: Responder com Citação

Aproveitando mais uma raspinha do seu conhecimento, caso eu queira colocar F1 para Help, qual seria o valor de Key em Keypress do formulário?

Tentei VK_F1, tentei Key_F1 e também #70, mas nenhum deu certo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Ter Mai 28, 2013 9:08 am    Assunto: Responder com Citação

Opa Jairo, que bom que deu certo!
Tem essa parada do KeyPreview mesmo, rsrs.
Eu acho que pro F1 você terá que utilizar o evento OnKeyDown do formulário:
Código:
if Key = VK_F1 then
  ShowMessage('F1 pressionado');
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
jairovital
Novato
Novato


Registrado: Segunda-Feira, 25 de Abril de 2011
Mensagens: 37

MensagemEnviada: Ter Mai 28, 2013 9:28 am    Assunto: Responder com Citação

Batera, amigão, agora é só alegria! Deu tudo certo!

Very Happy Very Happy Very Happy
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB