Ver Mensaje Individual
  #1  
Antiguo 04-07-2011
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Reputación: 14
DarkBlue Va por buen camino
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
__________________
Todo es Relativo

Última edición por DarkBlue fecha: 04-07-2011 a las 06:08:41.
Responder Con Cita