Cita:
Empezado por olbeup
El problema que tú tienes, es, en el procedimiento, tienes que añadir "var", en vez de:
Código Delphi [-]procedure ValidarPorcentajeKeyPressEdit(Caracter: Char;Edit:TrDBEdit);
Pon esto otro:
Código Delphi [-]procedure ValidarPorcentajeKeyPressEdit(var Caracter: Char;Edit:TrDBEdit);
Un saludo
|
Muchas gracias, modifique eso a la declaración de mi procedimiento y funciono correctamente. Quedo de la siguiente manera:
Código Delphi
[-]
procedure ValidarPorcentajeKeyPressEdit(var Caracter: Char;Edit:TrDBEdit; Sender:TObject);
var
pos: Cardinal;
begin
i:=0;
if ( StrScan('0123456789.,'+chr(7)+chr(8)+#13, Caracter) = nil ) then Caracter := #0;
if (Caracter = '.') or (Caracter = ',') then Caracter := ',';
for i := 1 to length(Edit.Text) do
if ( copy(Edit.Text,i,1) = ',' ) and not ( StrScan(',', Caracter) = nil ) then Caracter := #0;
with Sender as TrDBEdit do
if ( copy((Text), i , 1) = ',' ) and not ( StrScan(',', Caracter) = nil ) then Caracter := #0;
with Sender as TrDBEdit do
begin
pos := System.Pos(',', Text);
if not LongBool(Pos) then Dec(Pos);
ReadOnly := not (Caracter in ['0'..'9',#13, ',', #8]) or
(Pos <> $FFFFFFFF) and (Caracter = ',') or
((Caracter <> #8) and (Caracter <> #13) and (Pos < (SelStart - 1)));
end;
end;
procedure TForm.DBEPorcentajeKeyPress(Sender: TObject; var Key: Char);
begin
ValidarPorcentajeKeyPressEdit(Key,DBEPorcentaje,Sender);
end;