秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

       QFComponent由秋风(QQ:315795176)开发的控件包,采用自定义的富文本格式,集编辑、显示、导出和打印等功能。纯pascal代码,没使用额外的dll/so,只需QFComponent.pas这个文件就可以实现文字渲染等功能,可跨平台使用。


QFComponent for lazarus 包含 4个控件:

1、TQFRichView:采用自定义的富文本格式,类RichView控件,支持超链接、书签跳转等丰富的功能,适合作为使用说明等用途;
2、TQFScrollingText:采用自定义的富文本格式,可实现图文的滚动;
3、TQFHorizontalScrollingText:单行横向滚动控件,同样支持自定义富文本格式。
4、TQFGridPanelComponent:秋风原创控件。支持在单元格绑定可视控件,运行时单元格绑定的控件会吸附到相应的单元格里。重点解决了lazarus跨平台时界面布局问题(用lazarus编写过跨平台应用的就清楚,同一代码linux和windows控件位置是不一致的)


最新源码下载:
https://github.com/szlbz/QFComponent.git

说明:
1、控件的自定义富文件格式渲染等核心功能和TQFGridPanelComponent是秋风独立原创编写的。
2、QFRichEditor参考了https://github.com/DreamVB编写的Markdown Editor界面及代码
3、滚动控件的滚动部分参考了lazarus about的算法。

控件功能慢慢添加中!


2024.09.29
1、修复添加TQFHorizontalScrollingText控件可能出错的Bug
2、修复添加QFComponent任一控件后,TPageControl控件只显示1个Tab的Bug。
2024.08.23
修正同1个form有多个TQFGridPanelComponent时的bug。
2024.07.27
修正TQFGridPanelComponent单元格宽度调整的Bug。
2024.07.13
优化TQFGridPanelComponent单元格宽度调整算法,调整后宽度调整更顺畅。
2024.06.25

重构TQFGridPanelComponent单元格显示及单元格宽度调整的算法。

2024.06.22

TQFGridPanelComponent可以设置每个文字类型单元格的颜色。

 2024.06.18

继续完善TQFGridPanelComponent。
2024.06.17

修正TQFGridPanelComponent已知的bug

2024.06.15
TQFGridPanelComponent添加design时鼠标右键单元格设置菜单功能

  

2024.05.27
1、优化TCustomText及TQFGridPanelComponent
2、TQFGridPanelComponent添加popmenu菜单功能。
2024.05.25
增加TQFGridPanelComponent单元格的Gap,可以单独设置每个单元格的Gap
2024.05.23
修正TQFGridPanelComponent鼠标调整单元格的Bug
2024.05.17

 

2024.05.08
1、修正TQFGridPanelComponent已知的Bug
2、根据TQFGridPanelComponent的宽和高变化比例自动调整单元格的大小比例。
2024.05.04
重点增强TQFGridPanelComponent功能:
1、用鼠标可以单独或整列(按信Shift左右移动鼠标左键)调整单元格宽度
2、设置每个单元格线的类型
3、设置表格线的颜色
4、设置鼠标当前有控件的单元格高亮颜色
5、用鼠标右键打开单元格设置等等
6、界面布局使用json格式保存,可用LoadQFConfig和SaveQFConfig调用或保存

银河麒麟运行截图:

在windows 11运行截图:

 

 2024.04.13

1、修正鼠标移动到单元格时单元格边框高亮显示时可能出现的Bug;
2、鼠标移动到单元格时单元格边框高亮显示改为只有绑定控件的单元格才会高亮边框。
2024.04.12
1、完善单元格合并算法,避免上一版本行列同时合并时的Bug。
2、增加鼠标移动到单元格时单元格边框高亮显示功能。
2024.04.10
新增加TQFGridPanelComponent,支持在单元格绑定可视控件,运行时单元格绑定的控件会吸附到相应的单元格里。

控件绑定命令:<compname=xxx>
绑定后,控件的TabOrder从表格第1行第1列开始从左到右,从上到下重新编排。
控件的宽和高自动适配单元格的尺寸。

 2024.04.05

1、增加ShowBackImage:Boolean
2、增加单行横向滚动控件TQFHorizontalScrollingText,同样支持自定义富文件格式。

3、增加鼠标移到超链接及书签位置时,显示对应的url及书签名。

2024.04.03

修正单元格插入图片,合并单元格后图片没按合并后的单元格大小显示的Bug

2024.04.02
完成表格单元格合并功能
<ColSpan=xx>--向右合并xx个单元格
<RowSpan=xx>--向下合并xx个单元格

<rowh=70>|姓名|[#][C2]单位|办公地址|[l]电话(手机号码)|备注|
|:-:|-:|-:|:-:|:-|
|<rowspan=3>秋风1|<colspan=2>[$][c2]<bm4>检测中心1|南山建工村1|183233649|2030年13月33日入职|
|秋风2|<colspan=2>[r]检测中心2|[#][c4]南山建工村2|283233648|[img]2.bmp|
|[c2]秋风3|检测中心3|南山建工村3|383233647|<rowspan=3>[img]3.png|
|<colspan=3>秋风4|检测中心4|南山建工村4|483233646||
|秋风5|<rowspan=2>检测中心5|南山建工村5|583233645||
|秋风6|检测中心6|南山建工村6|583233645|<hlk>(盒子论坛)http://bbs.2ccc.com/</hlk>|
|秋风7|检测中心7|南山建工村7|583233645||

 2024.04.01

初步完成表格单元格合并

2024.03.30
增加字体参数
<Font=xx>设置字体名称--宋体、楷体等
</Font>//恢复为默认字体

[s5][c2]<font=楷体>测试</font>QF<C1>R</C><!>ich<#>V</>iew<C5><font=方正舒体>使用</font></C>说明<sup>上标</sup>[c]<sub>下标</sub>测试[c]
[s5][c2]测试QF<C1>RichView<C5><@>使用</></C>说明测试[c]

 

 2024.03.28

1、增加指定表格行高命令<rowh=xx>  xx指定行高,<rowh=xx>表格定义的开始位置,如果指定的高度小于表格文字高度时,表格行高则为表格文字的高度,如下:

<rowh=50>|姓名|[#][C2]单位|办公地址|[l]电话(手机号码)|备注|
|:-:|:-|-:|:-:|:-|
|秋风1|[$][c2]<bm4>检测中心1|南山建工村1|183233649|2030年13月33日入职|
|秋风2|检测中心2|[#][c4]南山建工村2|283233648|[img]2.bmp|
|[c2]秋风3|检测中心3|南山建工村3|383233647|[img]3.png|
|秋风4|检测中心4|南山建工村4|483233646|<hlk>(盒子论坛)http://bbs.2ccc.com/</hlk>|
|秋风5|检测中心5|南山建工村5|583233645||

 2、TQFRichView增加2个小功能(红字2行):

1)TQFRichView.PageHeader;//跳到页头
2)TQFRichView.PageFooter;//跳到页尾 
  TQFRichView =  class(TCustomText)
  private
    FinitialY: Integer; // 用于存储鼠标按下时的初始位置
    procedure SetLines(const AValue: TStrings);
    procedure DrawScrollingText(Sender: TObject);
  protected
    procedure DoOnChangeBounds; override;
    procedure MouseDown(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override;
    procedure MouseMove(Shift: TShiftState; X,Y: Integer); override;
    procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure SavePicture(Files:string);
    procedure Print;
    procedure PageHeader;//跳到页头
    procedure PageFooter;//跳到页尾
  published
    property StepSize: integer read FStepSize write FStepSize;
  end;

2024.03.27

完善后的超链接,可以只显示指定的文字,隐藏网址
<hlk>(博客园)http://www.cnblogs.com/</hlk>

 

2024.03.25
1、增加简单的打印功能
2、完善书签跳转及超链接的功能
3、增加超链接符号“
<hlk>xxxx</hlk>
完善后的超链接可以在文本行(包括在表格的单元格)中任意位置出现

2024.03.23
添加书签跳转功能
<BMx>--定义书签名称
[BMx]--定义书签
例子:
<BM1>书签目录1
<BM2>书签目录2
[BM1]测试书签跳转功能
[BM2]书签跳转功能正常

2024.03.22
增加多URL超链接识别,现在支持多个url点击。
2024.03.21
1、增加行距
2、增加背景图片功能

2024.03.20
修正打开链接的Bug及修正滚动到最后的衔接Bug.
2024.03.19
增加表格单元格插入图片功能

2024.03.09

完成文字滚动的基本功能


使用以下特定符号定义文字(行)的属性:
[img]本地图像文件名称
[!]下划线
[@]删除线
[#]粗体
[$]斜体
[L]行居左
[C]行居中
[R]行居右
[C1]黑色
[C2]红色
[C3]黄色
[C4]绿色
[C5]蓝色
[S1]字体尺寸9
[S2]字体尺寸12
[S3]字体尺寸14
[S4]字体尺寸16
[S5]字体尺寸18
[LINE]分割线
[2LINE]双线条分割线
定义文字颜色、样式:
xxx
黑色
红色
黄色
绿色
蓝色 恢复原来的文字颜色
<!>下划线
<@>删除线
<#>加粗
</>恢复原来的文字样式
支持markdown格式的表格
图像格式支持:jpg,bmp,png等
可在windows和linux使用,已在龙芯电脑实测可用。
TQFRichView控件支持鼠标中键滚动及按鼠标左键然后上下移动鼠标实现快速滚动。


书签跳转功能:

 添加背景图片:

 

 

 

 QFRichEditor:

 

 导出的图片:

 

posted on 2024-03-09 18:18  秋·风  阅读(1842)  评论(6编辑  收藏  举报