默认是8个空格的长度,比如我想让它为4个空格的长度很多编辑器里面都是可设定的如何实现?!

解决方案 »

  1.   

    int TabWidth = 9;  // new tab width (9 spaces) 
     TabWidth = LOWORD(GetDialogBaseUnits()) * TabWidth * 0.5; 
     SendMessage(Memo1->Handle, EM_SETTABSTOPS, (WPARAM)1, (LPARAM)&TabWidth); 
      
    上面是BCB的代码
      

  2.   

    改为delphi,没什么效果var TabWidth: Integer ;
    begin
         TabWidth := 9 ;
         TabWidth := loword(GetDialogBaseUnits) * TabWidth div 2 ;     showmessage(inttostr(SendMessage(Memo1.Handle, EM_SETTABSTOPS, wParam(1), lParam(@TabWidth))));
    end;
      

  3.   

    以下代码来自Codelphi,我就给你发消息了。
    设置前5个制表位为20个像素
    var 
      DialogUnitsX : LongInt; 
      PixelsX : LongInt; 
      i : integer; 
      TabArray : array[0..4] of integer; 
    begin 
      Memo1.WantTabs := true; 
      DialogUnitsX := LoWord(GetDialogBaseUnits); 
      PixelsX := 20; 
      for i := 1 to 5 do begin 
       TabArray[i - 1] := 
         ((PixelsX * i ) * 4) div DialogUnitsX; 
      end; 
      SendMessage(Memo1.Handle, 
                  EM_SETTABSTOPS, 
                  5, 
                  LongInt(@TabArray)); 
      Memo1.Refresh; 
    end;
      

  4.   

    我试验了,BCB6的RichEdit是可用的。Memo不行。下面是MSDN,RichEdit要3.0以上才支持。
    Rich Edit: Supported in Rich Edit 3.0 and later. For information about the compatibility of rich edit versions with the various system versions, see About Rich Edit Controls.