怎么真正隐藏Edit中的部分字符

求助:如何真正隐藏Edit中的部分字符?
可能有些不好理解。
假如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);