Como Transformar em código uma linha do ListBox?
20/02/2017
0
Tenho no meu formulário um TButton, um TListBox e um TEdit.
No ListBox tenho a linha seguinte: Edit1.Text := 'Conteúdo';
Preciso que ao clicar no botão, o programa receba a linha do ListBox como um código e o execute.
Obrigado!
Luziraldo Godinho
Post mais votado
20/02/2017
Diferente de outras linguagens como java script e ruby o delphi é compilado e não interpretado.
Passar para o delphi executar uma string como um comando não é tão simples, você terá que criar um interpretador ou utilizar componentes que façam esse serviço.
Mas esses componente em geral não tem acesso aos objetos e funções de sua aplicação a menos que elas sejam publicadas.
Um componente com essa funcionalidade é o RemObjects Pascal Script que pode ser encontrado em http://www.remobjects.com/ps.aspx.
Espero ter ajudado e boa sorte com os estudos.
Gutierry Pereira
Mais Posts
20/02/2017
Luziraldo Godinho
Queria implementar em meu programa que fiz no Delphi, algo como o Mouse Recorder Premium, um programa que cria e executa macros para automatização dos eventos do mouse. Consegui refazer todos os principais comandos, apenas os eventos que não. Talvez eu esteja indo pelo caminho errado e, na verdade, eu teria que ter comandos pré definidos e apenas as variáveis tirar do ListBox. Já que estamos no assunto, como eu posso? Suponhamos que eu tenha 10 linhas no ListBox, que seriam 10 eventos do mouse como cliques ou Delays. Como eu executo os comandos levando em conta que as variáveis como tempo de Delay e posição do ponteiro foram criados com o programa rodando?
Obrigado!
21/02/2017
Gutierry Pereira
O caminho que esta seguindo não esta errado, de fato vai ser o mais difícil, mas se mostrará o mais completo e genérico talvez.
Referente a essas variavas elas devem ser manipuladas de forma genericas, e se vai criar uma rotina para interpretar os comandos do listbox essa rotina estará dentro de seu programa, então ela terá acesso a essas variáveis. Quando falei de não ter acesso se refere somente ao uso de componentes como o RemObjects.
Se você tiver uma lista de ações preedefinidas será mais facil a implemetação.
qualquer coisa da um toque.
Abraços
21/02/2017
Luziraldo Godinho
Como eu sou considerado ainda muito leigo em Delphi, principalmente com códigos mais avançados, acho que seria mais fácil entrar em acordo comum com nossas ideias se você visse o funcionamento do Mouse Recorder, para entender melhor o que eu preciso, que é basicamente o que ele faz. Pode ser baixado gratuitamente em http://www.mouserecorder.com/index.html. O mais complicado para mim em meu projeto está sendo: Ao clicar no "Play" ele executar todos os eventos que estará na ListBox. Criar os eventos na ListBox não é tão difícil, como executar eles que está me tirando o sono.
Vou tentar fazer um exemplo:
procedure TForm1.Button1Click(Sender: TObject);
begin
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, 315, 315, 0, 0);
end;
O comando acima foi adicionado no OnClick de um botão, isso pra mim é tranquilo. Agora suponhamos que ao rodar o programa, este mesmo código estivesse em uma linha da ListBox, e ao clicar no Play ele compreenderia toda a linha e executasse o procedimento. Pelo que você me ensinou isso não é possível, então eu teria que criar um apelido para esse comando, ex: 'MOUSE MOVE 315,315,0,0' que é o que seria a string da ListBox. Antes de mais nada, me perdoe por não saber bem como usar os recursos do Fórum, e também por não conhecer bem de Delphi o suficiente pra facilitar as coisas por aqui, mas no meu modo de ver, ficaria mais ou menos assim:
procedure TForm1.Button1Click(Sender: TObject);
begin
(se a linha 1 da listbox existir e for igual a 'MOUSE MOVE' então)
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, variável, variável, variável, variável);
(se a linha 2 da listbox existir e for igual a 'MOUSE LEFTDOWN' então)
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, variável, variável, variável, variável);
(se a linha 3 da listbox existir e for igual a 'MOUSE LEFTUP' então)
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, variável, variável, variável, variável);
end;
Espero que possa me ajudar, Obrigado!
23/02/2017
Gutierry Pereira
+- isso que vc colocou, mas não precisa criar apelido para cada coisa, vc pode criar um para cada metodo. tipo
MOUSE_MOVE, no seu list o usuário colocaria assim:
MOUSE_MOVE(var1,var2,var3)
vc faz um if com o pos.
If pos('MOUSE_MOVE',list.lines[i] >= 0) then
dessa forma vc sabe que o evento que ele deseja é o mouse move, a partir disso vc sabe qu eo mouse move tem 3 parametros, Então com o pos e copy vc pega o que esta entre (). para facilitar pegar os parametros vc pode pegar a string que pegou entre () e dar um split nela,
Será criado então um array de 3 posições, cada posição do array compreende a um parametro. : D
Dessa forma você repete o procedimento para cada tipo de evento que deseja implementar. :D
Espero ter ajudado.
PS, para cada evento crie um metodo para tratar ele, para failitar a manutenção e leitura do código
23/02/2017
Luziraldo Godinho
Eu sou completamente apaixonado pelo Delphi, mas ainda sei muito pouco e preciso aprender bem mais para poder pedir ajuda aqui, pois muitas das explicações como a última que você me deu, faz muito sentido pra mim mas tem algumas coisinhas que não sei, como por exemplo o que é: método, pos, array, split... E não é justo para com vocês, eu ficar perguntando o que significa aqui, pois acho que deve ser algo primordial.
Onde eu poderia estudar sobre essas coisas?
Muito obrigado pela atenção!
24/02/2017
Gutierry Pereira
Você encontra bons materiais aqui na Dev,
[url:descricao=Introdução à Programação] https://www.devmedia.com.br/articles/viewaula.asp?idcomp=37875&topico=4180[/url]
[url:descricao=Lógica de programação]https://www.devmedia.com.br/logica-de-programacao-introducao-a-algoritmos-e-pseudocodigo/37918[/url]
Delphi para Iniciantes
Qualquer coisa da um "grito". ;)
Abraços
24/02/2017
Luziraldo Godinho
Assinando eu posso aprender aqui do básico ao avançado sobre Delphi? Se sim vou assinar, adoro programar e tenho muito ainda o que aprender!
27/02/2017
Gutierry Pereira
E sempre tem conteúdo de dicas e novidades. ;)
Clique aqui para fazer login e interagir na Comunidade :)