FoxStdForm
<p>FoxStdForm,FoxUI提供的标准窗体组件,让窗体兼容标准的显示方式,此模式下,标准组件,第三方组件都可以使用。
<strong>属性</strong>
Active 是否采用FoxUI窗体风格</p>
<p>BorderSet 边框管理
Border 边框设置
Left,Top,Right,Bottom 边框宽度
ShowNotWDM 如果没有WDM效果就显示</p>
<p>BtnConfig 标题栏按钮设置
Margin 间距
RightFix 右侧偏移
TopFix 顶部偏移</p>
<p>BtnHint 标题栏按钮提示 注意此部分已经全部放到FoxCaptionHintManager统一管理
Close 关闭按钮
Max 最大化
Menu 菜单
Min 最小化
Restore 还原
Skin 皮肤</p>
<p>BtnPopupMenu 菜单按钮对接菜单 见[FoxPopupMenu]( <a href="https://www.showdoc.cc/p/94e26e335005d1b7eb076bf28ccc13f0">https://www.showdoc.cc/p/94e26e335005d1b7eb076bf28ccc13f0</a> "FoxPopupMenu")</p>
<p>CaptionBar FoxUI提供的自定义标题栏内容容器组件 详情见<a href="https://www.showdoc.cc/p/096746fe792e7f24b2049f2548782163" title="FoxStdCaptionBar">FoxStdCaptionBar</a>
CaptionSet 标题管理
Alignment 标题对齐方式
Font 标题字体
Height 标题栏高度
OffSetx 左侧偏移
OffSety 顶部偏移
Visible 标题栏是否可见</p>
<p>CanDock 窗体是否可以停靠</p>
<p>CanMove 窗体是否可以移动</p>
<p>HideStyle 窗体隐藏或者关闭时候动画</p>
<p>HideTime 窗体关闭动画时间 单位毫秒</p>
<p>ShowStyle 窗体显示时候动画</p>
<p>ShowTime 窗体显示动画时间 单位毫秒</p>
<p>FixSize 窗体大小设置
MaxHeight 最大高度
MaxWidth 最大宽度
MinHeight 最小高度
MinWidth 最小宽度 0表示无限制</p>
<p>FormBtns 标题栏按钮设置
WbiClose 关闭按钮
WbiMenu 菜单按钮
WbiMinimize 最小化按钮
WbiMaxminze 最大化和还原按钮
WbiSkin 皮肤按钮</p>
<p>LogoSet 图标管理
Hint Logo提示
<del>Logo 程序图标</del> 图标如果支持多个分辨率?详情见<a href="https://www.showdoc.cc/p/59f12ed5c9fc1181bd4346d3290c95e6" title="FoxSkinManager">FoxSkinManager</a>
OffSetx
OffSety 左边和上部偏移</p>
<p>SizeAble 是否支持改变窗体大小</p>
<p>CaptionHintManager 统一管理窗体标题提示 编辑框右键菜单标题及标准按钮标题</p>
<p>SkinManger 皮肤管理器</p>
<p>ColorManager 颜色管理器 我们所有控件的默认色都从这个组件设置</p>
<p>skinset 皮肤管理
Back 底图皮肤序号
BtnClose 关闭按钮皮肤序号
BtnMax 最大化按钮皮肤序号
BtnMenu 菜单按钮皮肤序号
BtnMin 最小化皮肤按钮序号
BtnRestore 还原按钮皮肤序号
BtnTheme 皮肤按钮皮肤序号
Caption 标题内容皮肤序号 我们也可以直接让标题图片化 通过此设置
Form 窗体皮肤序号
Logo 图标皮肤序号</p>
<p>UseSvgRes 是否采用内置的SVG图标资源</p>
<p>TopMost 窗体是否最前
<strong>提供的事件</strong>
OnCaptionBtnAfterDraw 标题栏按钮绘制后触发</p>
<p>OnFoxCaptionPaint 标题栏绘制触发</p>
<p>OnFoxAfterCaptionPaint 标题栏绘制完毕触发 //新增</p>
<p>OnBtnMenuClick 标题栏菜单按钮点击触发</p>
<p>OnBtnSkinClick 标题栏皮肤按钮点击触发</p>
<p>OnFoxFormPaint 窗体绘制触发</p>
<p>OnStartDock 开始停靠</p>
<p>OnDockForm 停靠触发 可以取消停靠在这个事件里</p>
<p>OnUnDockForm 取消停靠</p>
<p>OnFormGetColor 窗体自定义颜色事件</p>
<p>OnBorderGetColor 自定义边框颜色事件</p>
<p>OnCaptionGetColor 标题栏自定义颜色事件</p>
<p>OnMaskFormClick 蒙版窗体点击事件</p>
<p>OnDitherEffect 窗体抖动触发事件 </p>
<p>OnBeforeCtrlSnapShot,OnAfterCtrlSnapShot 组件获取快照前后触发</p>
<p>例子 获取RichEdit内容
procedure TFrmMain.FoxStdForm1BeforeCtrlSnapShot(Sender: TObject;
ACtrl: TControl; Snapshot: TBitmap32);
var
Range:TFormatRange;
ABitmap:TBitmap32;
begin
//有些控件我们需要额外做截图 否则无法获取内容 比如Richedit
if ACtrl is TRichEdit then
begin
ABitmap:=TBitmap32.Create;
ABitmap.SetSize(ACtrl.Width,ACtrl.Height);
ABitmap.Clear(Color32((ACtrl as TRichEdit).Color));</p>
<pre><code>FillChar(Range,SizeOf(TFormatRange),0);
// 渲染我们要测量的相同DC。
Range.hdc:=ABitmap.Canvas.handle;
Range.hdcTarget:=ABitmap.Canvas.Handle;
// 设定页。
Range.rc.left:= 0;
Range.rc.top:= 0;
Range.rc.right:= ABitmap.Width* 1440 div Screen.PixelsPerInch;
Range.rc.Bottom:= ABitmap.Height * 1440 div Screen.PixelsPerInch;
// 打印文本的缺省范围为整个文档。
Range.chrg.cpMax := -1;
Range.chrg.cpMin := 0;
//SetBkMode(ABitmap.Handle, 0);
// 格式化文本。
SendMessage((ACtrl as TRichEdit).Handle, EM_FORMATRANGE, 1, Longint(@Range));
// 释放缓冲信息。
SendMessage((ACtrl as TRichEdit).handle, EM_FORMATRANGE, 0,0);
ABitmap.DrawTo(Snapshot,3,3);
ABitmap.Free;</code></pre>
<p>end;
end;</p>
<p><strong>提供的方法</strong>
Procedure UpdateFrameControls;//重更新所有控件
procedure RePaintForm;override;//重刷窗体
function GetValueByDPI(Value:Integer):Integer;//根据当前dpi获取值
function GetFontValueByDPI(Value:Integer):Integer;//返回当前情况下文字尺寸的准确值
procedure UpdateCaptionBtn(BtnType:TFoxUIFormBtn);//更新窗体按钮
procedure AskFormUpdateRect(Arect:TRect);override;//刷新指定区域
procedure ShowMaskForm(Acolor:TColor;Alpha:Integer); //显示蒙版遮罩这个主要是为了方便显示前面的模态窗体
procedure CloseMaskForm;//关闭蒙版遮罩
procedure UnDockForm(ARect:TRect);//取消停靠
function DockForm(DstControl:TFoxUIParentControl):Boolean;//手工停靠
procedure HideForm;
procedure CloseForm;overload;//主要是为了方便显示动画
Procedure CloseForm(AHideStyle:TFoxFormShowStyle);overload;//手工动画关闭窗体</p>