CamiloU
05-04-2006, 02:53:57
Espero me puedan colaborar con el siguiente inconveniente. Trato simular el ReadKey de Pascal con el Evento OnKeyPress de un Edit. Pero la informacion no me pasa a la tabla final.
Presento el codigo para tratar de ser mas especifico con el problema.
procedure TEvaRes.RespKeyPress(Sender: TObject; var Key: Char);
var
res : string[1];
begin
aux := inttostr(i);
if (i < 10) then Result.Text := concat('00',aux);
if (i >= 10) and (i < 100) then Result.Text := concat('0',aux)
else Result.text := aux;
Resp.Clear;
Resp.SetFocus;
if (StrScan('A',Key) <> nil) or (StrScan('B',Key) <> nil) or (StrScan('C',Key) <> nil) or (StrScan('D',Key) <> nil) or
(StrScan('E',Key) <> nil) or (StrScan('F',Key) <> nil) or (StrScan('G',Key) <> nil) or (StrScan('H',Key) <> nil) or
(StrScan('V',Key) <> nil) then
begin
TTemporal.Append;
TTemporal.FieldByName('Pregunta').AsString := inttostr(i);
res := Resp.Text;
TTemporal.FieldByName('Respuesta').AsString := Resp.Text;
TTemporal.Post;
i := i + 1;
Resp.Clear;
end
else Key := #0;
if i > 159 then
begin
tcp := 0;
tda := 0;
tcu := 0;
TRelacion.First;
TTemporal.First;
for j := 1 to (i - 1) do
begin
if TRelacion.FieldByName('Resultado').AsString = TTemporal.FieldByName('Respuesta').AsString then
begin
if TRelacion.FieldByName('Grupo').AsString = 'C' then tcp := tcp + 1;
if TRelacion.FieldByName('Grupo').AsString = 'A' then tda := tda + 1;
if TRelacion.FieldByName('Grupo').AsString = 'D' then tcu := tcu + 1;
end;
TRelacion.Next;
TTemporal.Next;
end;
tot := tcp + tda + tcu;
Resp.Enabled := False;
end;
end;
La idea es que mientras no llegue a 160, pida el valor. A la tabla TTemporal ingresa el numero de la pregunta pero nunca ingresa la respuesta.
Podrian darme una ayuda.
Muchas Gracias.
Presento el codigo para tratar de ser mas especifico con el problema.
procedure TEvaRes.RespKeyPress(Sender: TObject; var Key: Char);
var
res : string[1];
begin
aux := inttostr(i);
if (i < 10) then Result.Text := concat('00',aux);
if (i >= 10) and (i < 100) then Result.Text := concat('0',aux)
else Result.text := aux;
Resp.Clear;
Resp.SetFocus;
if (StrScan('A',Key) <> nil) or (StrScan('B',Key) <> nil) or (StrScan('C',Key) <> nil) or (StrScan('D',Key) <> nil) or
(StrScan('E',Key) <> nil) or (StrScan('F',Key) <> nil) or (StrScan('G',Key) <> nil) or (StrScan('H',Key) <> nil) or
(StrScan('V',Key) <> nil) then
begin
TTemporal.Append;
TTemporal.FieldByName('Pregunta').AsString := inttostr(i);
res := Resp.Text;
TTemporal.FieldByName('Respuesta').AsString := Resp.Text;
TTemporal.Post;
i := i + 1;
Resp.Clear;
end
else Key := #0;
if i > 159 then
begin
tcp := 0;
tda := 0;
tcu := 0;
TRelacion.First;
TTemporal.First;
for j := 1 to (i - 1) do
begin
if TRelacion.FieldByName('Resultado').AsString = TTemporal.FieldByName('Respuesta').AsString then
begin
if TRelacion.FieldByName('Grupo').AsString = 'C' then tcp := tcp + 1;
if TRelacion.FieldByName('Grupo').AsString = 'A' then tda := tda + 1;
if TRelacion.FieldByName('Grupo').AsString = 'D' then tcu := tcu + 1;
end;
TRelacion.Next;
TTemporal.Next;
end;
tot := tcp + tda + tcu;
Resp.Enabled := False;
end;
end;
La idea es que mientras no llegue a 160, pida el valor. A la tabla TTemporal ingresa el numero de la pregunta pero nunca ingresa la respuesta.
Podrian darme una ayuda.
Muchas Gracias.