以下代码来自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;
我试验了,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.
TabWidth = LOWORD(GetDialogBaseUnits()) * TabWidth * 0.5;
SendMessage(Memo1->Handle, EM_SETTABSTOPS, (WPARAM)1, (LPARAM)&TabWidth);
上面是BCB的代码
begin
TabWidth := 9 ;
TabWidth := loword(GetDialogBaseUnits) * TabWidth div 2 ; showmessage(inttostr(SendMessage(Memo1.Handle, EM_SETTABSTOPS, wParam(1), lParam(@TabWidth))));
end;
设置前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;
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.