各位大侠,想问个问题,DrawText中如果设置了Dt_WordBreak标志后,显示的时候会按英文单词进行换行显示,现在的问题是我能不能得到换行后每行的字符个数,或者是有没有一个这样的系统API,给它一个区域和字体大小,它能按WordBreak那样返回能容下的字符数。
试过DrawTextEx(Handle, PChar(AText), -1, cRect, defGetTextLengrthFlag, @dtParams);通过dtParams.uiLengthDrawn来取得字符数,但是只对英文有效,中文不行。
各位,有没有方法可以解决一下~谢谢
试过DrawTextEx(Handle, PChar(AText), -1, cRect, defGetTextLengrthFlag, @dtParams);通过dtParams.uiLengthDrawn来取得字符数,但是只对英文有效,中文不行。
各位,有没有方法可以解决一下~谢谢
解决方案 »
- 关于PageControl的Tab页跳转问题
- 我用delphi和sql做了一个程序,哪位大是帮我看看还有哪些错错误,我的程序有一两个功能还不能实现
- Delphi 7数据库程序打包(不见源文件)
- 如保用循环判段表内字段为数字(number)型,然后让所有number型的格式为.00。
- 我想找卡拉OK系统,要求带源码,谁能提供?
- 怎样将excel文件变成文本文件,请说详细点好吗谢谢!!我很急!!!
- 怎么会出现这种问题啊帮忙看看?
- 用delhi开发tablet pc 程序。
- dbgrid 垂直滚动条的隐藏???????
- 一个客户机服务器的问题!
- delphi 类似qq聊天界面中链接方式的实现
- delphi 用indy的tcpclient 和tcpserver问题
var
DrawRect: TRect;
DrawFlags: Cardinal;
DrawParams: TDrawTextParams;
begin
DrawRect := R;
DrawFlags := DT_END_ELLIPSIS or DT_NOPREFIX or DT_WORDBREAK or
DT_EDITCONTROL or DT_CENTER;
DrawText(Canvas.Handle, PChar(S), -1, DrawRect, DrawFlags or DT_CALCRECT);
DrawRect.Right := R.Right;
if DrawRect.Bottom < R.Bottom then
OffsetRect(DrawRect, 0, (R.Bottom - DrawRect.Bottom) div 2)
else
DrawRect.Bottom := R.Bottom;
ZeroMemory(@DrawParams, SizeOf(DrawParams));
DrawParams.cbSize := SizeOf(DrawParams);
DrawTextEx(Canvas.Handle, PChar(S), -1, DrawRect, DrawFlags, @DrawParams);
Result := DrawParams.uiLengthDrawn;
end;