我有StringGrid,并且只在其中包含1
或0
单元格。我尝试使用StringGridGetEditMask
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
ARow: Integer; var Value: String);
begin
Value := '0';
if not (strToInt(Value) in [0,1]) then value := #0;
end;
但是我可以输入从0到9的所有数字。如何过滤除0和1以外的所有数字?
最佳答案
为了您的意图,您需要对TStringGrid
类进行子类化,并在此类子类中将其分配给就地编辑器的例如OnKeyPress
事件,如以下中介程序类中所示:
type
TStringGrid = class(Grids.TStringGrid)
private
procedure InplaceEditKeyPress(Sender: TObject; var Key: Char);
protected
function CreateEditor: TInplaceEdit; override;
end;
implementation
{ TStringGrid }
function TStringGrid.CreateEditor: TInplaceEdit;
begin
Result := inherited CreateEditor;
TMaskEdit(Result).OnKeyPress := InplaceEditKeyPress;
end;
procedure TStringGrid.InplaceEditKeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [#8, '0', '1']) then
Key := #0;
end;
关于delphi - Delphi二进制数字掩码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15645792/