我希望实现以下操作:
在AdvStringGrid中输入:
输入 显示
1 : 1
12 : 12
123 : 123
1234 : 1,234
......
我写了个加“,”的函数(SetData)和去“,”的函数(ResumeData),在KeyUp中是这样用的:
r := AdvStringGrid1.Row;
c := AdvStringGrid1.Col;
AdvStringGrid1.Cells[c, r] := SetData(ResumeData(TmpStr));
不能实现;
但在Edit的KeyUp中用: Edit1.Text := SetData(ResumeData(Edit1.Text));
却可以实现,请大家帮帮忙,谢谢!
在AdvStringGrid中输入:
输入 显示
1 : 1
12 : 12
123 : 123
1234 : 1,234
......
我写了个加“,”的函数(SetData)和去“,”的函数(ResumeData),在KeyUp中是这样用的:
r := AdvStringGrid1.Row;
c := AdvStringGrid1.Col;
AdvStringGrid1.Cells[c, r] := SetData(ResumeData(TmpStr));
不能实现;
但在Edit的KeyUp中用: Edit1.Text := SetData(ResumeData(Edit1.Text));
却可以实现,请大家帮帮忙,谢谢!
var
Form1: TForm1;
ECol,Erow:integer;
implementation{$R *.dfm}
function aa(s:string):string;
var
left,i,n:integer;
begin
n:=ceil(length(s)/3);
if n>1 then
begin
left:=length(s) mod 3;
result:=copy(s,1,left);
for i:=1 to n-1 do
result:=result+','+copy(s,left+(i-1)*3+1,3);
end else result:=s;
end;procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
ECol:=ACol;
ERow:=ARow;
end;procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
StringGrid1.Cells[ECol,ERow]:=aa(StringGrid1.Cells[ECol,ERow]);
end;
ARow: Integer; var IsFloat: Boolean; var FloatFormat: String);
begin
IsFloat := ACol in [1,2,3];
FloatFormat := '%8.2n';
end;
谢谢回复,我的加“,”的函数已经写了,而且要求的是在输入的过程中就自动加“,”,而不是改变焦点才加。
To : hotzhu
谢谢回复,你提供的方法很好,不过会改变输入的格式,而且也不是在输入的过程中自动加“,”。