从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
相关产品推荐
相关产品推荐

