You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Access长文本字段填充FMX Memo组件时为何出现<div>标签?

解决FMX Memo显示Access长文本时出现
标签的问题
  • 方法一:编写自定义HTML标签剥离函数
    直接写一个Delphi函数移除所有HTML标签,同时可以把HTML换行标签替换成FMX Memo识别的换行符,示例代码:

    function StripHTMLTags(const AText: string): string;
    var
      I, TagStart, TagEnd: Integer;
    begin
      Result := AText;
      I := Pos('<', Result);
      while I > 0 do
      begin
        TagStart := I;
        TagEnd := Pos('>', Result, TagStart);
        if TagEnd > 0 then
        begin
          Delete(Result, TagStart, TagEnd - TagStart + 1);
          I := Pos('<', Result);
        end
        else
          Break;
      end;
      // 替换HTML换行标签为系统换行符
      Result := StringReplace(Result, '<br>', sLineBreak, [rfReplaceAll, rfIgnoreCase]);
      Result := StringReplace(Result, '<br/>', sLineBreak, [rfReplaceAll, rfIgnoreCase]);
      Result := StringReplace(Result, '<br />', sLineBreak, [rfReplaceAll, rfIgnoreCase]);
    end;
    

    使用时先处理Access字段内容,再赋值给Memo:

    Memo1.Text := StripHTMLTags(YourAccessLongTextFieldValue);
    
  • 方法二:改用TWebBrowser组件保留格式
    如果需要保留文章原本的简单HTML格式(比如换行、段落分隔),可以替换Memo为FMX的TWebBrowser组件,直接加载原始HTML内容:

    WebBrowser1.LoadFromStrings(YourAccessLongTextFieldValue, '');
    

    组件会自动解析HTML标签,正常显示格式化后的内容,不会暴露

    这类标签。

  • 方法三:提前在Access中预处理文本
    若有权限修改Access数据,可在存储阶段就剥离HTML标签:创建Access VBA函数实现标签移除,再添加计算字段调用该函数,后续直接读取处理后的字段即可。

内容的提问来源于stack exchange,提问作者Connor Bell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:57:09