delphi粘贴后怎么让文本从右到左粘贴,但字体的方向还是从左到右!

解决方案 »

  1.   

    你可以在收到粘贴命令时先获取剪贴板字符串,然后把它反转过来,再添加到memo中
      

  2.   

    uses Clipbrd;//引用剪贴板单元;//按行倒排剪贴板文本中的字符:
    procedure TForm1.Button1Click(Sender: TObject);
    var sl:TStringList;
        s,tmp:widestring;
        i,j:integer;
    begin
      if Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT) then
      begin
        if length(ClipBoard.AsText)>0 then //如果剪贴板有文本内容
        begin
          sl:=TStringList.Create;
          try
            //取剪贴板文本内容:
            s:=ClipBoard.AsText;
            tmp:='';
            for i:=1 to length(s) do begin
              tmp:=tmp+s[i];
              if s[i]=#13 then begin
                sl.Append(tmp);
                tmp:='';
              end;
            end;
            if tmp<>'' then sl.Append(tmp);
            //按行倒排字符:
            s:='';
            for i:=0 to sl.Count-1 do begin
              tmp:=sl.Strings[i];
              for j:=length(tmp) downto 1 do s:=s+tmp[j];
              s:=s+#13#10;
            end;
            //把处理过的字符串复制回剪贴板
            Clipboard.SetTextBuf(PChar(AnsiString(s)));
            memo1.Text:=s;//观察剪贴板的内容
          finally
            sl.Free;
          end;
        end;
      end;
    end;