Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
Validar un memo por linea

Hola a todos

Me gustaria saber como puedo hacer para que un memo m permita ingresar nada mas 3 caracteres por linea y luego que pase al renglon de abajo...espero alguna respuesta muchas graciass
Responder Con Cita
  #2  
Antiguo 20-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Hola deprimera, se me ocurre que hagas algo así:

Código Delphi [-]
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
 if Length(Memo1.Lines[Memo1.Lines.Count-1]) > 2 then
  key := #13;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 20-11-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
caro q suerte encontrarte nuevamente...

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
Responder Con Cita
  #4  
Antiguo 21-11-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Cita:
Empezado por deprimera Ver Mensaje
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
 //Capturamos cuando se ha presionado una tecla
 if (Msg.message=WM_KEYDOWN) then
  if ActiveControl = Memo1 then //Verificamos si ha sido en el Memo
   begin
     //Obtenemos la fila actual
     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
        //Envíamos el Enter al Memo
        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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 21-11-2008
deprimera deprimera is offline
Miembro
 
Registrado: jul 2008
Posts: 26
Poder: 0
deprimera Va por buen camino
te agradezco mucho ,aun no funciona bien pero tampoco quiero abusar de tus tiempos...besoss
Responder Con Cita
  #6  
Antiguo 21-11-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que deberías especificar con más detalle lo que quieres lograr. Por ejemplo, con este código

Código Delphi [-]
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
var
  C, I: Integer;

begin
  I := Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
  C := Length(Memo1.Lines[i]);

  if Key = #13 then
    Key := #0;

  if (C >= 3) and (Key <> #8) then
    Memo1.Lines.Insert(I + 1, '');
end;

logras más o menos lo que quieres: al escribir el cuarto caracter en una linea, automáticamente se coloca en la siguiente; la tecla de retroceso funciona como se espera, y al oprimir ENTER se pasa a la siguiente línea sólo si ya se completaron los tres caracteres.

Pero no has definido si esto es realmente lo que deseas del ENTER, ni tampoco qué debe pasar si te cambias a una línea anterior. En resumen, especificar qué debe suceder en cada caso posible.

Por otra parte, habría que ver si no te conviene más usar otro tipo de control, como un StringGrid, por ejemplo.

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar de linea en un Memo creus Varios 1 19-11-2006 15:06:07
Mostrar linea de un Memo Ariel46 OOP 3 01-11-2005 22:30:34
Validar/Grabar linea de un DBGrid con Enter jadelphi Varios 4 26-05-2005 00:40:46
Extraer una linea de una memo coletaum Varios 2 26-01-2004 16:54:21
problema de linea memo migueilichenco Varios 14 01-08-2003 11:49:01


La franja horaria es GMT +2. Ahora son las 17:39:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi