Dificuldade na criação de programa digitação
Desculpe-me se já leu esse pedido antes, é que estou ancioso pra resolvê-lo.
Bom, o problema AgorA é o seguinte:
no Memo com ´asdfg ´
- se é pra teclar ´a´ mas teclo ´s´ ou ´d,f,g, ´ - funciona sem mostrar erro, só que deveria ser ´a´.
- se é pra teclar ´a´ mas teclo ´q´ ou outra tecla fora de ´asdfg ´ - tudo bem mostra erro, mas, diz que o correto seria ´s´ (ao invez de ´a´), ou seja uma letra após a que deveria.
e com a ajuda de vcs já está assim (não repara o mau geito, é que sou novato).
Essa é a minha rotina, se puder acertá-la pra mim, agradeço imenssamente:
{$R *.dfm}
var
POS: integer;
procedure TDigitaSima.btnIniciarClick(Sender: TObject);
begin
Memo1.Enabled:=true;
ActiveControl:=Memo1;
btnIniciar.Enabled:=False;
Memo1.Lines.Clear;
Memo1.Lines.LoadFromFile(´UnL1.pas´);
Memo1.SelStart:=0;
Memo1.SelLength:=1;
POS:=1;
end;
procedure TDigitaSima.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [32..125] then
begin
Memo1.SelStart:=POS;
Memo1.SelLength:=1;
Inc(POS);
end
else
abort;
end;
procedure TDigitaSima.FormKeyPress(Sender: TObject; var Key: Char);
Var
S: string;
begin
Memo1.SelLength := 1;
S:= Memo1.SelText;
if not(Key in [´A´,´S´,´D´,´F´,´G´,´a´,´s´,´d´,´f´,´g´,´ ´]) then
begin
ShowMessage(´Você digitou ´+key+´ o correto seria ´+s);
Key := #0;
end;
end;
end.
Essa é a rotina, se puder acertá-la pra mim, agradeço antecipadamente
Obrigado a todos que me ajudaram até agora.
Bom, o problema AgorA é o seguinte:
no Memo com ´asdfg ´
- se é pra teclar ´a´ mas teclo ´s´ ou ´d,f,g, ´ - funciona sem mostrar erro, só que deveria ser ´a´.
- se é pra teclar ´a´ mas teclo ´q´ ou outra tecla fora de ´asdfg ´ - tudo bem mostra erro, mas, diz que o correto seria ´s´ (ao invez de ´a´), ou seja uma letra após a que deveria.
e com a ajuda de vcs já está assim (não repara o mau geito, é que sou novato).
Essa é a minha rotina, se puder acertá-la pra mim, agradeço imenssamente:
{$R *.dfm}
var
POS: integer;
procedure TDigitaSima.btnIniciarClick(Sender: TObject);
begin
Memo1.Enabled:=true;
ActiveControl:=Memo1;
btnIniciar.Enabled:=False;
Memo1.Lines.Clear;
Memo1.Lines.LoadFromFile(´UnL1.pas´);
Memo1.SelStart:=0;
Memo1.SelLength:=1;
POS:=1;
end;
procedure TDigitaSima.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [32..125] then
begin
Memo1.SelStart:=POS;
Memo1.SelLength:=1;
Inc(POS);
end
else
abort;
end;
procedure TDigitaSima.FormKeyPress(Sender: TObject; var Key: Char);
Var
S: string;
begin
Memo1.SelLength := 1;
S:= Memo1.SelText;
if not(Key in [´A´,´S´,´D´,´F´,´G´,´a´,´s´,´d´,´f´,´g´,´ ´]) then
begin
ShowMessage(´Você digitou ´+key+´ o correto seria ´+s);
Key := #0;
end;
end;
end.
Essa é a rotina, se puder acertá-la pra mim, agradeço antecipadamente
Obrigado a todos que me ajudaram até agora.
Simaops
Curtidas 0
Respostas
Shaolin
15/11/2004
Tchê !!!
Como também recebo dicas e ajudas da galera, acho que também devo contribuir, então me puxei um pouco aqui e tentei montar algo para te ajudar !!!
Talvez o a minha maneira não esteja tão bem elaborada, mas os testes que fiz em Delphi 5, funcionaram bem. Pelo menos seguindo a linha do que você estava querendo.
public
{ Public declarations }
Xis: Integer;
function TeclaCerta:string;
procedure TForm1.MemoKeyPress(Sender: TObject; var Key: Char);
var Tecla: String;
begin
Inc(Xis);
If Xis = 7 Then
Xis:= 1;
Tecla:= TeclaCerta;
If (Key LowerCase(Tecla)) and (Key UpperCase(Tecla)) Then
Begin
ShowMessage(´Você digitou ´´+key+´´ o correto seria ´´+Tecla+´´´);
Dec(Xis);
Key := #0;
End;
end;
function TForm1.teclacerta: string;
begin
Case Xis Of
1:Result:= ´A´;
2:Result:= ´S´;
3:Result:= ´D´;
4:Result:= ´F´;
5:Result:= ´G´;
6:Result:= ´ ´;
End;
end;
Espero ter ajudado !!!
Como também recebo dicas e ajudas da galera, acho que também devo contribuir, então me puxei um pouco aqui e tentei montar algo para te ajudar !!!
Talvez o a minha maneira não esteja tão bem elaborada, mas os testes que fiz em Delphi 5, funcionaram bem. Pelo menos seguindo a linha do que você estava querendo.
public
{ Public declarations }
Xis: Integer;
function TeclaCerta:string;
procedure TForm1.MemoKeyPress(Sender: TObject; var Key: Char);
var Tecla: String;
begin
Inc(Xis);
If Xis = 7 Then
Xis:= 1;
Tecla:= TeclaCerta;
If (Key LowerCase(Tecla)) and (Key UpperCase(Tecla)) Then
Begin
ShowMessage(´Você digitou ´´+key+´´ o correto seria ´´+Tecla+´´´);
Dec(Xis);
Key := #0;
End;
end;
function TForm1.teclacerta: string;
begin
Case Xis Of
1:Result:= ´A´;
2:Result:= ´S´;
3:Result:= ´D´;
4:Result:= ´F´;
5:Result:= ´G´;
6:Result:= ´ ´;
End;
end;
Espero ter ajudado !!!
GOSTEI 0