geovanepc Postado Setembro 8, 2014 Denunciar Share Postado Setembro 8, 2014 (editado) Algum colega já implementou esse código? Ex: Texto: "Batatinha quando nasce, esparrama pelo chão, o Bilitocera quando dorme, põe a mão na Bíblia do Delphi pra quando acordar, estudar de novo!" Bom, gostaria que uma frase como esta, fosse sendo digitada automaticamente em um Edit, Label ou Memo, de maneira que o intervalo entre uma letra e outra variasse com um Random. Pra ficar mais idêntico. Tipo: Digita um pouco, pára um pouquinho e continua. Intervalos pequenos. Desde já agradeço. Um forte abraço à todos. Editado Setembro 8, 2014 por geovanepc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 8, 2014 Denunciar Share Postado Setembro 8, 2014 amigo, voce vai precisar dos seguintes componentes: 1 Button para acionar a rotina 1 Memo para mostrar o texto que esta sendo digitado 1 MediaPlayer para tocar o som no autofalante do pc OBS: pesquise na internet onde tem o som da tecla de uma maquina de escrever e faça o download para a sua maquina montagem da rotina 1- defina uma variavel string e atribua a mensagem de texto 2- defina uma variavel integer para pegar o tamanho do texto 3- limpe o memo 4- defina do MediaPlayer o FileName - caminho onde esta o arquivo de som 5- defina a propriedade AutoOpen do MediaPlayer para True 6- use um comando FOR para fazer um loop onde cada caracter do texto sera adicionado ao memo 7- use o comando Sleep para definir o tempo que leverá para o memo receber o proximo caracter 8- use o comando Memo1.Refresh para atualizar os caracteres no memo 9- na sequencia de um comando Play ( MediaPlayer ) para executar o som 10- ao finalizar o FOR voce para a execução do som OBS: tente fazer ... no maximo usara 15 linhas de comando se não conseguir, depois passo o rotina pronta para voce abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 9, 2014 Autor Denunciar Share Postado Setembro 9, 2014 Obrigado pelo desafio professor Jhonas, vamos lá, vou desenvolver o programa, quando tiver pronto, vou postar. Desde já agradeço. Um forte abraço à todos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 geovanepc Postado Setembro 9, 2014 Autor Denunciar Share Postado Setembro 9, 2014 (editado) Nada como um bom desafio mental, muito embora seja simples, mais tá valendo. Tava com um pouco de pressa, então não encontrei o som pronto, daí baixei um programinha que gera sons de máquina de escrever pelo teclado. Confira: http://www.baixaki.com.br/download/clickey.htm Depois utilizei outro programa para capturar o som gerado, chamado: Audacity - Utilizo pra gravar sons, inclusive de rádio online. Converti o som para o formato WAV. Nas propriedades do MediaPlayer, configurar: MediaPlayer1.AutoOpen = true. MediaPlayer1.FileName = 'C:\Teste\Som do teclado.wav'. // Som que o MediaPlayer vai tocar. Coloquei um TIMER pra simular uma digitação pausada, tipo humana. Timer1.enable = true; Timer1.interval = 100. É só ir testando os tempos e configurar do jeito que achar melhor. Depois foi só implementar o código: //---------------------------------------------------------------------------------------------------// unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, StdCtrls, Buttons, ExtCtrls, StrUtils; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; BitBtn1: TBitBtn; MediaPlayer1: TMediaPlayer; Memo1: TMemo; Timer1: TTimer; procedure BitBtn1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; tempo: integer = 100; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); var texto: string; tamanho, x: integer; begin texto := Edit1.Text; Memo1.Lines.Clear; tamanho := Length(texto); for x := 1 to tamanho do begin Memo1.Lines.Text := Memo1.Lines.Text + AnsiMidStr(texto, x, 1); Mediaplayer1.Play; Application.ProcessMessages; // Sleep(100); Sleep(tempo); end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin tempo := random(500); end; end. //---------------------------------------------------------------------------------------------------// Depois da dica do professor Jhonas, aí ficou fácil! Se não tiver mais nada a acrescentar, pode fechar o tópico. Valeu professor. Desde já agradeço. Um forte abraço à todos. Editado Setembro 9, 2014 por geovanepc Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 9, 2014 Denunciar Share Postado Setembro 9, 2014 ok amigo.... já que conseguiu, vou passar outra forma de fazer voce pode obter esse som e outros nesse link http://www.findsounds.com/ISAPI/search.dll?keywords=typewriter esse é o som de apenas uma teclahttp://www.soundjay.com/communication/typewriter-key-1.wav esse é o som de varias teclashttp://www.ringelkater.de/Sounds/2geraeusche_gegenst/typewr11.wav esse é o código mais simples unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; MediaPlayer1: TMediaPlayer; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); VAR texto : string; i, tx : integer; begin Texto:= 'Batatinha quando nasce, esparrama pelo chão, '+ 'o Bilitocera quando dorme, põe a mão na Bíblia do Delphi '+ ' pra quando acordar, estudar de novo!'; tx := length(Texto); // pega o amanho do texto memo1.Clear; MediaPlayer1.FileName := 'C:\MAQUINA\typewr11.wav'; MediaPlayer1.AutoOpen := TRUE; for i := 1 to tx do begin sleep(150); memo1.Lines.Text := memo1.Lines.Text + texto; memo1.refresh; MediaPlayer1.Play; end; MediaPlayer1.Stop; end; end. =============================================================================== nesse voce vai notar que, existe o som da folha sendo colocada na maquina depois a mensagem é teclada e aparece no memo ao chegar ao fim de uma linha digitada, ocorre o som do sininho indicando uma mudança de linha ao chegar ao final o som das teclas é desligado unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MPlayer, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; MediaPlayer1: TMediaPlayer; MediaPlayer2: TMediaPlayer; MediaPlayer3: TMediaPlayer; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); VAR texto : string; i, tx : integer; begin MediaPlayer3.FileName := 'C:\MAQUINA\TYPO.wav'; // efiando a folha na maquina MediaPlayer3.AutoOpen := TRUE; MediaPlayer3.Play; sleep(1000); //'1234567890123456789012345678901234567890123456789012345' Texto:= 'Batatinha quando nasce, esparrama pelo chão, o '+ 'Bilitocera quando dorme, põe a mão na Bíblia do Delphi '+ ' pra quando acordar, estudar de novo!'; tx := length(Texto); // pega o amanho do texto memo1.Clear; MediaPlayer1.FileName := 'C:\MAQUINA\tape.wav'; // som das teclas MediaPlayer1.AutoOpen := TRUE; for i := 1 to tx do begin if i = 120 then begin MediaPlayer1.Stop; MediaPlayer2.FileName := 'C:\MAQUINA\ding.wav'; // som do sininho ao fim da linha MediaPlayer2.AutoOpen := TRUE; MediaPlayer2.Play; end; sleep(150); memo1.Lines.Text := memo1.Lines.Text + texto; memo1.refresh; MediaPlayer1.Play; end; MediaPlayer1.Stop; end; end. OBS: veja que usei 3 MediaPlayers para que um seja sobreposto a outro na execução abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
geovanepc
Algum colega já implementou esse código?
Ex:
Texto: "Batatinha quando nasce, esparrama pelo chão, o Bilitocera quando dorme, põe a mão na Bíblia do Delphi pra quando acordar, estudar de novo!"
Bom, gostaria que uma frase como esta, fosse sendo digitada automaticamente em um Edit, Label ou Memo,
de maneira que o intervalo entre uma letra e outra variasse com um Random. Pra ficar mais idêntico.
Tipo: Digita um pouco, pára um pouquinho e continua. Intervalos pequenos.
Desde já agradeço.
Um forte abraço à todos.
Editado por geovanepcLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.