Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   mascaras de entrada para cada columna y fila de un tstringgrid (https://www.clubdelphi.com/foros/showthread.php?t=74673)

DarkBlue 04-07-2011 05:53:32

mascaras de entrada para cada columna y fila de un tstringgrid
 
hola! , saludos a todos los valientes que han entrado a este hilo, les agradesco sus intenciones de ayudar.Deveras que les estaria muy agradecido.

2 problemas al querer darle una mascara de entrada a cada celda de un stringgrid(si asi es mascaras distintas), hasta el momento he logrado darle una mascara de entrada a solo UNA columna con sus mascaras independientes para cada celda de esa columna.

Pero el detalle es que cada ves que presiono una tecla se come la ultima que precione. por ejemplo si preciono 1 me agrega 1_ hasta ahi todo bien pero cuando preciono otra ves un numero me hace esto 2__ otra ves 3___ y asi.

creo que el problema esta en que primero occurre el evento ongeteditmask y despues el keypress asi no alcanza a actualizarse.

aquí mi código
Código Delphi [-]

procedure Tfcotizacion.StringGrid1GetEditMask(Sender: TObject; ACol,
  ARow: Integer; var Value: String);
begin


{if (ACol = 2)  then value:= LM1.strings[arow-1] else
Value := EmptyStr; } //esto se supone que es para la columna 2 pero no he podido hacerla funcionar

if (ACol = 3) then value:=LM2.Strings[arow-1] else
Value := EmptyStr;

end;


procedure Tfcotizacion.StringGrid1GetEditText(Sender: TObject; ACol,
  ARow: Integer; var Value: String);
var lastcol,lastrow:string;
begin

row:=arow; //aqui guardo en que fila y columna se coloco para escribir y seguir con la mascara independiente
col:=acol;
end;


procedure Tfcotizacion.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var lm,texto,lMA,o:string;
x,lo,ban:integer;
begin

  k:=ord(key);

  if (k>=48) and (k<=57) then
 begin

   if (col=2) then
  begin
  ban:=1;
  lm:=LM1.strings[row-1]; //lm1 y lm2 son listas de string donde se guardan las mascaras
  lo:= length(lm);
  insert('0',lm,2);//le agrego otro espacio a la mascara
  lm1.Strings[row-1]:=lm;//le corrigo la nueva mascara

     end
  else if col=3 then
  begin
  ban:=2;
  lm:=LM2.strings[row-1];
  lo:=length(lm);
  insert('0',lm,2);
  lm2.Strings[row-1]:=lm;
  o:=inttostr(k);
  texto:=stringgrid1.Cells[col,row]+key;

  stringgrid1.Cells[col,row]:=''; //si le quito esto no se po que ya no me agrega el nuevo espacio ___

 stringgrid1.Cells[col,row]:=texto;

  end;



por cierto esto lo hago por que el problema de una mascara de entrada es que si se salta un espacio designado este lo deja en blanco y no se reccorre ni nada y se ve feo ya lo he lograda en un maskedit ya no me deja los espacios en blanco pero aca en el stringgrid el rollo es mas complicado


La franja horaria es GMT +2. Ahora son las 09:43:13.

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