小问题,但是我拿它没折!!您呢?

pipimei 2001-01-11 10:06:00
怎样设置一个Trichedit的tabstops(制表符的步长)??
Trichedit的默认TabStops为8,可是我想设置为2,怎样做?
...全文
227 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cropcoco 2001-01-18
  • 打赏
  • 举报
回复
我来晚了
pipimei 2001-01-17
  • 打赏
  • 举报
回复
我做好了。
这两天太忙,分数奉上,谢谢kingron,但你的代码有些小问题,更正如下:
procedure setTabLength(editor:Trichedit;tablength:integer);
var
info:PARAFORMAT;
i:integer;
begin
info.cbSize:=sizeof(info);
info.dwMask:=$FFFFFF;
sendmessage(editor.Handle, EM_GETPARAFORMAT ,0,integer(@(info)));
info.dwMask:=PFM_TABSTOPS;
info.cTabCount:=MAX_TAB_STOPS;
for i:=0 to 31 do
info.rgxTabs[i]:=editor.Font.PixelsPerInch*TabLength*(i+1);
sendmessage(editor.Handle, EM_SETPARAFORMAT ,0,integer(@(info)));
end;

大家共勉。
pipimei 2001-01-12
  • 打赏
  • 举报
回复
To Java_Scu:

这样的办法不行,因为这样实际上是插入了两个空格(#32#32)而非一个#9
pipimei 2001-01-12
  • 打赏
  • 举报
回复
Kingron:

谢谢,如果通过调试我会给分的。看样子关键是"_ParaFormat"结构。我马山查看windows的api
gameboy999 2001-01-12
  • 打赏
  • 举报
回复
trichedit是封装了windows的标准控件richedit。我觉得就应该有相应的api来设置该项,当然修改后会影响所有应用程序。试试找找看,没找到可别骂我呀(快过年了:)
Kingron 2001-01-12
  • 打赏
  • 举报
回复
不好意思,上面的有点儿小问题,改正如下:
var
info:_PARAFORMAT;
i:integer;
begin
info.cbSize:=sizeof(info);
info.dwMask:=$FFFFFF;
sendmessage(richedit1.Handle, EM_GETPARAFORMAT ,0,integer(@(info)));
for i:=0 to 31 do
info.rgxTabs[i]:=(richedit1.Font.PixelsPerInch-6)*(i+1);
info.dwMask:=PFM_TABSTOPS;
info.cTabCount:=31;
sendmessage(richedit1.Handle, EM_SETPARAFORMAT ,0,integer(@(info)));
end;
//Test For D5
Kingron 2001-01-12
  • 打赏
  • 举报
回复
哎,设置richedit 的param就可以了:
var
info:_PARAFORMAT;
begin
info.cbSize:=sizeof(info);
sendmessage(richedit1.handle,EM_GETPARAFORMAT,0,integer(@info));
info.cTabCount:=1;
info.rgxTabs[0]:=2;
info.rgxTabs[1]:=4;
info.dwMask:=info.dwMask or PFM_TABSTOPS;
sendmessage(richedit1.Handle, EM_SETPARAFORMAT ,0,integer(@(info)));
end;
Java_SCU 2001-01-12
  • 打赏
  • 举报
回复
忘了说:
在Object Inspector中,要将WantTabs设置为True!
Java_SCU 2001-01-12
  • 打赏
  • 举报
回复
你看这样可以吗:procedure InsertTab(r: TRichEdit);
var
p:Integer;
begin
p:=r.SelStart;
r.Text :=
Copy(r.Lines.Text,0,p)+' '+
Copy(r.Lines.Text,p+1,Length(r.Lines.Text));
r.SelStart:=p+2;
end;

procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #9 then
begin
key := #0;
InsertTab(RichEdit1);
end;
end;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧