关于汉字换行问题

  procedure   QrDbTextOnPrint(sender:   TObject;   var   Value:   String);  
  var  
      i   :   integer;  
  begin  
      FMemo   :=   TMemo.Create(FWinControl);  
   
      FMemo.Parent   :=   self;   //是报表所在的窗体  
      FMemo.Width   :=   Tcontrol(sender).Width;  
      FMemo.height   :=   Tcontrol(sender).Height;  
   
      FMemo.Text   :=   Value;                                
      Value   :=   FMemo.Lines[0];  
      For   i:=   1   to   FMemo.Lines.Count-1   do  
          value   :=   value   +   #13   +   FMemo.Lines[i];  
      FMemo.Free;

---------------------------------------------------------------------------------

function ApartString(InStr : String ;MaxLen : Integer) : String;
var
P: Integer;
S,L : String;
OriStr : Array[0..1000] OF Char;
OutStr : String;
begin
P := 0;
L := '';
OutStr := '';
StrPCopy(OriStr,InStr);

WHILE P <= Length(InStr) - 1 DO
BEGIN
IF ORD(OriStr[P]) > 127 THEN
BEGIN
S := Copy(OriStr,P + 1,2);
Inc(p)
END
ELSE
BEGIN
S := Copy(OriStr,P + 1,1);
END;

Inc(p);

IF Length(L + S) > MaxLen Then
BEGIN
OutStr := OutStr + L + #13;
L := S;
END
ELSE
BEGIN
L := L + S;
END;
END;

OutStr := OutStr + L;
ApartString := OutStr;

end;


在OnPrint的地方
procedure TPNameCard.QRDBText4Print(sender: TObject; var Value: string);
var
I : Integer;
OriStr : Array[0..1000] OF Char;
V_Chinese : Boolean;

begin
IF Not (Sender AS TQRDBText).AutoSize THEN
BEGIN
StrPCopy(OriStr,Value);
V_Chinese := False;

FOR I := 0 TO Length(Value) - 1 DO
BEGIN
IF ORD(OriStr[I]) > 127 THEN
BEGIN
V_Chinese := True;
Break;
END;
END;

IF V_Chinese THEN
Value := ApartString(Value,20)
ELSE
Value := Value;
END;
end;

----------------------------------------------------------------------------------------------

   1.在需要显示换行的字段的地方用TQRMemo替代TQRDBText,并调整好TQRMemo的长度和宽度(显示字段的最大范围);  
  2.在报表所在的Form上放一个TMemo控件,由它来负责解决换行问题,在TQRMemo所在的band的BeforePrint事件中写代码,具体如下  
  var  
      i:   integer;  
  begin  
      memo1.lines.clear;  
      TQRMemo.lines.clear;  
      memo1.width:=   TQRMemo.Width;  
   memo1.lines.text:=   ADODataSet1.FieldByName('字段名').AsString;  
      for   i:=   0   to   memo1.lines.Count   -   1   do  
          QRMemo.lines.Add(memo1.lines.strings[i]);  
  end;  
  只要在需要的地方依上面的方法处理就行。  
  其中的memo1的宽度可以控制换行的长度。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Bootstrap中,如果想要解决汉字换行问题,可以使用CSS样式来控制文本的换行。你可以添加以下样式到你的CSS文件中或者直接在HTML标签的style属性中使用: ```css .word-break { word-break: break-all; } ``` 然后,在你的HTML标签中,你可以添加这个样式类到需要换行的元素上,比如: ```html <p class="word-break">这是一段需要换行汉字文本。</p> ``` 这样,汉字就会根据需要自动换行展示了。希望这个方法能够帮助到你解决汉字换行问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Bootstrap Tooltip显示换行和左对齐的解决方案](https://download.csdn.net/download/weixin_38563176/13193034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [学习 Bootstrap 5 之 Typography](https://blog.csdn.net/qq_37354060/article/details/122513202)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [bootstrapTable数据不换行](https://blog.csdn.net/weixin_46054799/article/details/113365951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值