论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
作者 【1】 的文章
2026-1-21
VisualFreeBasic代码
本编程语言是:FreeBasic ,属于Basic语言的分支,其基础语法和VisualBasic、QBasic、VBScript都有 99% 以上相同。 控件部分,可以自己拖拖点点,用用几个月,都会搞熟悉,而编程语言部分,你必须天天敲代码,每个语句,每行代码必须一个一个学习才行。 语言参考 [关键字 - 按字母顺序排列] [关键字 - 函数] [图形的关键字] [运算符列表] 变量和数据类型 [变量声明] [用户定义类型(或 类)] [标准数据类型] [标准数据类型限制] [数据类型的转换] 运算符 [运算符列表] [运算符优先级] [按位运算符 和真值表] 语句 [控制流程] [过程(函数)] [模块化] 其它 [预处理] [字符串中的转义序列] [元-声明] [内部定义] [错误处理] [内联汇编] Runtime Library 运行库参考 [数组函数] [位 操作] [控制台函数] [日期和时间函数] [错误处理函数] [文件 IO 函数] [数学函数] [内存函数] [操作系统函数] [字符串函数] [线程库函数] [用户输入函数] Graphics Library 图形库参考 [2D 绘图函数] [用户输入函数] [屏幕函数] [内置图形库] [键盘扫描码] [默认调色板]
2026年-1月-21日
193 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_Custom 自定义
此控件不是一个固定的控件,可以自由设置成已在系统中注册的任何控件 系统中注册的控件 设置类名,只要是系统内注册的类名,就变成相关控件 WIn操作系统内置控件的做法,就是类名。那些WIn系统的标准控件,每一个控件都拥有自己独一无二的类名,当你设置的类名与之对应,那这个控件就变成此控件了。 当然,这里并不是为了WIn系统里标准控件搞的这样的万能控件,而是为了第三方提供的控件使用。 第三方提供WIn系统标准控件,会向系统注册一个控件类名。我们设置此类名,那么这个控件就成为第三方控件了。 第三方控件,比方:火花编辑器。当你下载火花编辑器后,有一个DLL文件。 在VFB中,入口函数中加载这个DLL,然后这个控件类名设置成火花编辑器的类名(具体类名,就要看第三方控件的开发文档了),运行软件后,就有这个控件了。 当然不懂这些没关系,反正用不到。 比方 Button 按钮 Edit 文本框 用窗口做控件(用户控件) 先在工程中添加一个窗口,比如:Form2 设置该窗口为子窗口 再在本控件的子窗口中输入:Form2 至此,Form2 就成为控件了。 也可以作为真实容器控件使用。 用户控件,控件变量 VFB中没有模块变量,就是单独属于控件自己的变量,就算系统控件也没有。所有变量都是共享的,比方,一个窗口中有多个相同控件存在,其变量是共享的,而非私有的。 实现私有控件变量,需要用以下代码: Dim fp As FormControlsPro_TYPE Ptr = vfb_Get_Control_Ptr(hWndControl) If fp Then fp->CtlData(0 - 99) '100个变量,供开发控件中,控件内部使用 fp->UserData(0 - 99) '100个变量,用户使用控件中使用。 End If 用户控件,控件事件 用户使用时,就一个事件,实现事件的方法,就是写控件者向自己发送消息 Function Form1_Custom1_SubClassProcess(hWndControl As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult Select Case wMsg Case WM_USER+100 事件1 Case WM_USER+101 事件2 End Select Function = CallWindowProc(GetPropW(hWndControl, "vfb_SubClassProcess") ,hWndControl ,wMsg ,wParam ,lParam) '给原处理地址处理消息 ,这是必须的,不然就吃掉消息。 End Function 写控件时,触发控件 SendMessage( hWndControl , WM_USER+100 , wParam , lParam ) 用户控件,控件功能 用户需要修改或执行控件功能,也是发消息 SendMessage( hWndControl , WM_USER+200 , wParam , lParam ) 控件窗口中,在自定义事件中 Function Form2_Custom(hWndForm As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult Select Case wMsg Case WM_USER+200 功能或属性1 Case WM_USER+201 功能或属性2 Case WM_USER+202 功能或属性3 End Select Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。 End Function 因为控件都是多开的,因此需要设置或执行本控件需要 Me.hWndForm = hWndForm Me.xx控件xx.hWndForm = hWndForm 然后才可以操作自己,比如: Me.Caption ="xxx"
2026年-1月-21日
53 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFtext 文本
文字输入框控件 模仿浏览器里的输入控件,得到焦点有加重边框显示。 数字输入模式支持输入小数点和负号。 组合标签和上下调节功能。 基础功能和WIn系统标准控件一样。 显示的图标是 矢量图标 图标制作 使用 VisualFreeBasic 自带的 【矢量图标编辑器】 编辑一个,里面自带了很多图标,可以复制过来即可,在 VFB里的 工具菜单里,就可以找到这个软件。
2026年-1月-21日
47 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFflow 流程图
添加数据方式和目录树控件类似,就显示出流程图,只是一个基础功能。
2026年-1月-21日
45 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFtable 表格
用于显示表格的控件 和 YFList 、List 控件类似,它们只是没列,只有行,而这个增加了 列,它们是1维表格,那么这个控件就是二维表格。 控件属性和用法基本上一样。 使用方法 和其它列表一样用法,就添加列表数据,这样就成为 1维的列表 YFtable1.AddItem("行文字1" ) YFtable1.AddItem("行文字2" ) YFtable1.AddItem("行文字3" ) 支持图标 矢量图标 添加矢量图标 Redim YFList1.vico(2) YFList1.vico(1)="f00101UU.7UL[YZL`Y^B`UcP[_]iVVZ[VlUL[Y+c200Z^YnV_V_" '矢量图标字符串 YFList1.vico(2)="a.42TP.7[sWraiWrai^F+a*6WKZPWK`n]C`n+b01TP00?T_T_Z[YF+b*6\t^QZ[YD" '矢量图标字符串 添加数据,带矢量图标索引 YFtable1.AddItem("行文字1",1 ) YFtable1.AddItem("行文字2",2 ) 字体图标 先要在起始代码区加载字体 字体文件在资源中 Dim ss As String = GetResourceStr("FONT_ICONFONT") Dim As Long uu Dim ff As Any Ptr = AddFontMemResourceEx(StrPtr(ss), Len(ss), 0, @uu) 字体文件是一个文件 Dim sst As String = App.Path & "iconfont.ttf" Dim As Long uu = AddFontResourceExA(StrPtr(sst) ,FR_PRIVATE ,0) 添加数据,带字体中的字符值 YFtable1.AddItem("行文字1",&HE655) YFtable1.AddItem("行文字2",&HE651 ) 图标文件 Dim H As HICON = LoadIcon(NULL, IDI_ERROR) ‘加载图标,不可以立即释放,等控件不显示了,必须释放 YFtable1.AddItem("行文字2", Cast(Integer, H)) 其它颜色设置(注意:是否选中,需要先设计属性显示复选框才有显示效果) YFtable1.AddItem("行文字1",字体图标,用户自定义数据,图标颜色,文字颜色,是否选中,背景颜色) 多列数据增加 每列用 chr(1) 分割 YFtable1.AddItem("1行1列文字" & chr(1) & "1行2列文字" & chr(1) & "1行3列文字" ) YFtable1.AddItem("2行1列文字" & chr(1) & "2行2列文字" & chr(1) & "2行3列文字" ) YFtable1.AddItem("2行1列文字" & chr(1) & "2行2列文字" & chr(1) & "2行3列文字" ) 表格头 新增的第一行,就是列表头 控件属性里选择,锁定首行,还可以设置不同的颜色来区别。 列宽度和列对齐设置 未设置宽度,默认控件宽度的 25% 宽度设置带 % 号的是控件宽度的百分比 YFtable1.ColumnWidth="20%,20%,32,107,418,33,47,200" YFtable1.ColumnAlignment = "2,1,2,1,0,2,1,0" 自绘 可以自己绘画,让控件更个性化 Function Form1_YFList1_OwnerDraw(hWndForm As hWnd,hWndControl As hWnd,StartY As Long,ItemHeight As Long ,sumU As Long,nList As YFListData Ptr,selIndex As Long,kMouse As Long,kPress As Long) As LResult End Function 自动生成的事件,里面还带详细的例题,可以看例题学习。 图标制作 使用 VisualFreeBasic 自带的 【矢量图标编辑器】 编辑一个,里面自带了很多图标,可以复制过来即可,在 VFB里的 工具菜单里,就可以找到这个软件。
2026年-1月-21日
52 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFswitcher 开关
一个开关小按钮,有多种样式可以选中,也可以设置颜色 就两种状态,开和关。用户点击按钮,就切换开关。 简单的无需说明 2025-6-3 新增了注释,就是“开”“关”的文字,可以显示在左边或右边,打上说明,可以当成多选控件用,比方 WIN11 系统里的选项,都是这样的类似的。
2026年-1月-21日
43 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFbutton 按钮
按钮,就一个普通的平面按钮 按钮用法,无需说明吧。和系统标准控件用法一样,只是显示效果不同。 预设24钟样式,支持矢量图标 图标制作 使用 VisualFreeBasic 自带的 【矢量图标编辑器】 编辑一个,里面自带了很多图标,可以复制过来即可,在 VFB里的 工具菜单里,就可以找到这个软件。
2026年-1月-21日
64 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFTreeView 目录树
和系统标准控件使用方法类似,主要不同的是图标使用字体图标 使用方法,添加数据 Dim aa As YFTreeViewData Ptr = YFTreeView1.AddItem(0, "文字1") aa = YFTreeView1.AddItem(0, "文字2") '需要添加子项目 Dim bb As YFTreeViewData Ptr =YFTreeView1.AddItem(aa, "子文字1") 支持图标 矢量图标 添加矢量图标 Redim YFTreeView1.vico(2) YFTreeView1.vico(1)="f00101UU.7UL[YZL`Y^B`UcP[_]iVVZ[VlUL[Y+c200Z^YnV_V_" '矢量图标字符串 YFTreeView1.vico(2)="a.42TP.7[sWraiWrai^F+a*6WKZPWK`n]C`n+b01TP00?T_T_Z[YF+b*6\t^QZ[YD" '矢量图标字符串 添加数据,带矢量图标索引 YFTreeView1.AddItem(0,"行文字1",0,1 ) YFTreeView1.AddItem(0,"行文字2",0,2 ) 字体图标 先要在起始代码区加载字体 字体文件在资源中 Dim ss As String = GetResourceStr("FONT_ICONFONT") Dim As Long uu Dim ff As Any Ptr = AddFontMemResourceEx(StrPtr(ss), Len(ss), 0, @uu) 字体文件是一个文件 Dim sst As String = App.Path & "iconfont.ttf" Dim As Long uu = AddFontResourceExA(StrPtr(sst) ,FR_PRIVATE ,0) 添加数据,带字体中的字符值 YFTreeView1.AddItem(0,"行文字1",0,&HE655) YFTreeView1.AddItem(0,"行文字2",0,&HE651 ) 图标文件 Dim H As HICON = LoadIcon(NULL, IDI_ERROR) ‘加载图标,不可以立即释放,等控件不显示了,必须释放 YFTreeView1.AddItem(0,"行文字2", 0,Cast(Integer, H)) 新增的全部参数 Dim aa As YFTreeViewData Ptr = YFTreeView1.AddItem(0, "文字1",用户数据,普通字体图标,展开字体图标,是否为目录,图标颜色,文字颜色,背景颜色,是否选中) 普通字体图标,展开字体图标 当目录时,展开和没展开可以设置不同的图标 是否为目录 当没有子项目时,也显示为有子项目的状态 是否选中 当控件有带复选框样式,那么选中就会显示打勾 自绘 在事件中,自己可以画 Function Form1_YFTreeView1_OwnerDraw(hWndForm As hWnd,hWndControl As hWnd,gg As yGDI , hItem As YFTreeViewData ,x As Long ,y As Long ,w As Long ,h As Long,Sel As Long ,kMouse As Long,kPress As Long,ByRef maxW As Long) As LResult gg.SetColor &H0000FF 'GDI的颜色值。RGB=255,0,0 nl.ShowWidth = gg.GetTextWidth(nL.sText) + x If maxW<nl.ShowWidth Then maxW=nl.ShowWidth '必须设置,控件才能判断出要不要显示水平滚动条。不需要水平滚动,可以不设置 gg.DrawTextS(x ,y ,w ,h ,nL.sText ,DT_VCENTER Or DT_SINGLELINE Or DT_NOPREFIX Or DT_WORD_ELLIPSIS) Return True Function = False ' 自己画了后需要应返回 TRUE 控件就不画了,不然控件会再画。 End Function 列遍目录树所有数据 '列遍目录树所有数据 -----------深度算法,从上到下,先查子再进入 Dim 当前项目 As YFTreeViewData Ptr Dim 下一个项目 As YFTreeViewData Ptr 下一个项目 = YFTreeView1.GetRoot '根 当前项目 = YFTreeView1.GetChild(下一个项目) '第一个项目 Do If 当前项目 = 0 Then Exit Do '无项目 '项目处理 ----------- Print 当前项目->DataValue, 当前项目->sText '这里是你自己写的处理代码 '继续列出下一个 ------------- 下一个项目 = YFTreeView1.GetChild(当前项目) '查找第一个子项目 If 下一个项目 Then 当前项目 = 下一个项目 Else 下一个项目 = YFTreeView1.GetNextSiblin(当前项目) '没有子项目,就查找下一个项目 If 下一个项目 Then 当前项目 = 下一个项目 Else '没有任何项目了,就返回到父项目 Do 下一个项目 = YFTreeView1.GetParent(当前项目) If 下一个项目 = 0 OrElse 下一个项目 = YFTreeView1.GetRoot Then Exit Do, Do '已经到顶了,无项目处理,退出 当前项目 = YFTreeView1.GetNextSiblin(下一个项目) If 当前项目 Then Exit Do '有项目 当前项目 = 下一个项目 '已经到底,再向上一级别 Loop End If End If Loop 动态加载数据 比方要显示一个教程,教程中有很多目录,可能目录非常多,几千几万的,你要一次加载就非常缓慢。我们可以动态加载来实现,速度非常快,又能正常显示所有目录。 方法: 只加载根目录,有子项目的在添加时,“是否为目录”参数设置为 1 在“某结点将被展开”事件中,加载此子项目。 Function Form1_YFTreeView1_ItemExpanding(hWndForm As hWnd, hWndControl As hWnd,hItem As YFTreeViewData Ptr,action As Long )As LResult Function = False 'TRUE 可防止列表扩展或折叠。 End Function 例:新增项目时,在“用户数据”中赋值 数据库ID,那么在展开事件中,可以根据ID来加载数据了。 图标制作 使用 VisualFreeBasic 自带的 【矢量图标编辑器】 编辑一个,里面自带了很多图标,可以复制过来即可,在 VFB里的 工具菜单里,就可以找到这个软件。
2026年-1月-21日
44 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFList 列表
只为显示列表用,支持图标、自绘、每行颜色 等 使用方法 和标准控件的一样用法,就添加列表数据 YFList1.AddItem("列表文字1" ) YFList1.AddItem("列表文字2" ) YFList1.AddItem("列表文字3" ) 支持图标 矢量图标 添加矢量图标 Redim YFList1.vico(2) YFList1.vico(1)="f00101UU.7UL[YZL`Y^B`UcP[_]iVVZ[VlUL[Y+c200Z^YnV_V_" '矢量图标字符串 YFList1.vico(2)="a.42TP.7[sWraiWrai^F+a*6WKZPWK`n]C`n+b01TP00?T_T_Z[YF+b*6\t^QZ[YD" '矢量图标字符串 添加数据,带矢量图标索引 YFList1.AddItem("行文字1",1 ) YFList1.AddItem("行文字2",2 ) 字体图标 先要在起始代码区加载字体 字体文件在资源中 Dim ss As String = GetResourceStr("FONT_ICONFONT") Dim As Long uu Dim ff As Any Ptr = AddFontMemResourceEx(StrPtr(ss), Len(ss), 0, @uu) 字体文件是一个文件 Dim sst As String = App.Path & "iconfont.ttf" Dim As Long uu = AddFontResourceExA(StrPtr(sst) ,FR_PRIVATE ,0) 添加数据,带字体中的字符值 YFList1.AddItem("行文字1",&HE655) YFList1.AddItem("行文字2",&HE651 ) 图标文件 Dim H As HICON = LoadIcon(NULL, IDI_ERROR) ‘加载图标,不可以立即释放,等控件不显示了,必须释放 YFList1.AddItem("行文字2", Cast(Integer, H)) 其它颜色设置 (注意:是否选中,需要先设计属性显示复选框才有显示效果) YFList1.AddItem("列表文字1",字体图标,用户自定义数据,图标颜色,文字颜色,是否选中,背景颜色) 自绘 可以自己绘画,让控件更个性化 Function Form1_YFList1_OwnerDraw(hWndForm As hWnd,hWndControl As hWnd,StartY As Long,ItemHeight As Long ,sumU As Long,nList As YFListData Ptr,selIndex As Long,kMouse As Long,kPress As Long) As LResult End Function 自动生成的事件,里面还带详细的例题,可以看例题学习。 图标制作 使用 VisualFreeBasic 自带的 【矢量图标编辑器】 编辑一个,里面自带了很多图标,可以复制过来即可,在 VFB里的 工具菜单里,就可以找到这个软件。
2026年-1月-21日
56 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_YFscroll 滚动条
平面显示效果的滚动条,可以设置颜色 设置最大和最小值(支持32整数,WIN系统提供的只支持16位整数) YFscroll1.nMax = 最大值 YFscroll1.nMin = 最大值 YFscroll1.Value = 当前值 本控件会自动根据高度和宽带自动识别是 垂直滚动条还是水平滚动条。因此你拖控件大小即可。
2026年-1月-21日
73 阅读
0 评论
VisualFreeBasic编程文档
22
23
24
25
26