怎么真正隐藏Edit中的部分字符
求助:如何真正隐藏Edit中的部分字符?
可能有些不好理解。
假如Edit1中有“123456xxyy”这么多个字符,由于Edit1宽度不够,现在只能显示123456这几个字符,xxyy被隐藏了,显示不出来。但这是假的隐藏,因为把鼠标点进Edit1中往右一拉,xxyy还是能够显示出来。
我现在的意思就是:无论是往右拉鼠标,还是用方向键往右移动光标,yy就是显示不出来,让yy真正隐藏起来,但是xx能显示出来。这就是真正隐藏Edit中的部分字符。
现在只能做到让xxyy都真正隐藏起来。
希望高手能指点,先谢谢!!!
------解决方案--------------------
------解决方案--------------------
那这样和YY真正不存在有什么不同呢?
------解决方案--------------------
就是脑子不转就容易出这种奇葩的需求。
你还想在读取edit1的值时是‘是'123456xxyy’,虽然edit1显示的是'123456xx'
那就edit显示一个截断后的字串,而对edit取时转而去另一个保存'123456xxyy'的变量
------解决方案--------------------
处理Edit1的OnContextPopup、OnDblClick、OnKeyDown、OnMouseMove事件。
可能有些不好理解。
假如Edit1中有“123456xxyy”这么多个字符,由于Edit1宽度不够,现在只能显示123456这几个字符,xxyy被隐藏了,显示不出来。但这是假的隐藏,因为把鼠标点进Edit1中往右一拉,xxyy还是能够显示出来。
我现在的意思就是:无论是往右拉鼠标,还是用方向键往右移动光标,yy就是显示不出来,让yy真正隐藏起来,但是xx能显示出来。这就是真正隐藏Edit中的部分字符。
现在只能做到让xxyy都真正隐藏起来。
希望高手能指点,先谢谢!!!
------解决方案--------------------
procedure TForm1.btn1Click(Sender: TObject);
var
orgStr, newStr: string;
begin
orgStr := '123456xxyy';
// 你自己的字符串截断逻辑,比如
// 按指定字符截断
newStr := StringReplace(orgStr, 'yy', '', [rfReplaceAll, rfIgnoreCase]);
// 或按指定字符数截断
Delete(orgStr, 9, 2);
edt1.Text := orgStr; // 123456xx
edt2.Text := newStr; // 123456xx
end;
------解决方案--------------------
那这样和YY真正不存在有什么不同呢?
------解决方案--------------------
就是脑子不转就容易出这种奇葩的需求。
你还想在读取edit1的值时是‘是'123456xxyy’,虽然edit1显示的是'123456xx'
那就edit显示一个截断后的字串,而对edit取时转而去另一个保存'123456xxyy'的变量
var
orgStr:string = '123456xxyy';
// 截断字串显示到edit1
procedure TForm1.btn1Click(Sender: TObject);
var
newStr: string;
begin
newStr := StringReplace(orgStr, 'yy', '', [rfReplaceAll, rfIgnoreCase]);
edt1.Text := orgStr; // 123456xx
end;
// 取edit1的text时转从orgStr中取
procedure TForm1.btn9999Click(Sender: TObject);
var
newStr: string;
begin
newStr := orgStr;
ShowMessage(newStr); // 123456xxyy
end;
------解决方案--------------------
处理Edit1的OnContextPopup、OnDblClick、OnKeyDown、OnMouseMove事件。
//Edit1.Width := 52;
//Edit1.Text := '123456xxyy';
const
MAX_CHARPOS=8;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);