Cita:
Empezado por deprimera
cuando ejecuto el codigo q m pasast m hace 2 enter, deja un renglon entre medio en blanco y si borro todo desp no lo vuelve a validar
|
Hola de nuevo, ayer te respondi a la rapida sin ver los problemas que podía tener ese codigo, ademas que estoy con poco tiempo, acabo de hacer una prueba y si, no funciona bien, nada bien, aún arreglandolo no funciona bien en esos eventos (OnKeyDown, OnKeyUp).
Lo que puedes hacer es utilizar el evento OnMessage del ApplicationEvent que se encuentra en la paleta Additional.
Código Delphi
[-]
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
FilaActual : Integer;
begin
if (Msg.message=WM_KEYDOWN) then
if ActiveControl = Memo1 then begin
FilaActual := Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
if (Memo1.Lines[FilaActual+1]<>'') AND Not(Msg.wParam in [vk_delete,8,vk_left,vk_right,vk_down,vk_up]) then
Msg.wParam := 0;
if Length(Memo1.Lines[FilaActual])=2 then
begin
if (FilaActual=Memo1.Lines.Count-1) AND (Msg.wParam<>VK_RETURN) then
PostMessage(Memo1.Handle, WM_KEYDOWN, VK_RETURN, 0);
end;
end;
end;
Conste que no esta bien controlado, pero puedes aumentar codigo sobre eso, espero que alguien mas pueda ayudarte a controlar para que todo funcione bien. Por ahora recibe solo 3 caracteres y se presiona el enter, una vez que ya tienes lleno, te puedes mover entre las lineas borrar pero no aumentar mas texto, como te digo falta controlar.
Saluditos