论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
包含标签 【编程】 的文章
2026-1-21
VisualFreeBasic控件_mCtrlHtml IE浏览器
这是对IE浏览器简单封装,主要用来显示一些简单的 HTIM 页面。 显示页面 网页 mCtrlHtml1.GotoUrl("http://www.baidu.com") 本地文件 mCtrlHtml1.GotoUrl("file:///c:/文件.html") 执行页面中的JS函数 mCtrlHtml1.CallScriptFunc(JS函数名,参数1,参数2,.... 可以没参数,也可以最多4个参数,传给JS函数 修改网页中的代码 没有提供任何方法可以设置全部网页,只能根据ID设置部分 Dim bb As String bb = "<html>" & vbCrLf & _ " <head>" & vbCrLf & _ " <title>网页标题 </title>" & vbCrLf & _ " <body id='zzz'>" & vbCrLf & _ " 这是一个网页" & vbCrLf & _ " </body>" & vbCrLf & _ "</html>" SaveFileStr App.Path & "1.htm", bb mCtrlHtml1.GotoUrl "file:///" & App.Path & "1.htm" mCtrlHtml1.SetTagContents "zzz","<a href='#2'>设置代码</a>"
2026年-1月-21日
55 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_mCtrlGrid 表格
类似办公软件的表格功能,只是简化很多。支持虚表。 使用方法 先创建表格大小(例:创建5列10行的表,不包括列名和行名,会自动增加) mCtrlGrid1.ReSize(5,10) 给表格单元设置数据 mCtrlGrid1.SetCell(0,0,"1,1") mCtrlGrid1.SetCell(1,1,"2,2") 注意,左上角第一个是 0,0 , 参数是:列,行 获取表格单元数据 获取的文字= mCtrlGrid1.GetCellText(0,1) 单元格修改更新 当用户在单元格修改数据后,需要在“结束标签编辑”事件里,设置单元格 Function Form1_mCtrlGrid1_MC_GN_EndLabelEditW(hWndForm As hWnd, hWndControl As hWnd, NMG As MC_NMGDISPINFOW)As Long mCtrlGrid1.SetCell(NMG.wColumn,NMG.wRow,*NMG.cell.pszText) Function = FALSE ' 返回 TRUE 禁止编辑 End Function 修改列标题和行标题 标题必须在设计属性里设置,运行时,不可以改变。 当列标题设计属性设置为“自定义标题”,才可以自己设置列标题 mCtrlGrid1.SetCell(0,MC_TABLE_HEADER,"列表名1") mCtrlGrid1.SetCell(1,MC_TABLE_HEADER,"列表名2") mCtrlGrid1.SetCell(2,MC_TABLE_HEADER,"列表名2") 当行标题设计属性设置为“自定义标题”,才可以自己设置行标题 mCtrlGrid1.SetCell(MC_TABLE_HEADER,0,"行表名1") mCtrlGrid1.SetCell(MC_TABLE_HEADER,1,"行表名2") mCtrlGrid1.SetCell(MC_TABLE_HEADER,2,"行表名2") 常用功能 mCtrlGrid1.TableClear(0) '清除全部表格中的文字 mCtrlGrid1.GetColumnCount '获取表格的列数。 mCtrlGrid1.GetRowCount '获取表格的行数。 mCtrlGrid1.GetFocusedCell '获取单元格焦点 mCtrlGrid1.GetSelection '获取选择。 mCtrlGrid1.SetFocusedCell '设置单元格焦点 mCtrlGrid1.SetFocusedCell '设置单元格焦点 虚表模式 假如表格的数量很大时,设置单元格将会消耗很大的时间,因此可以直接用一个二维数组,不用设置单元格,速度就是你写代码处理二维数组的速度了。 首先,在设计属性里,必须勾选虚表模式 每次需要显示内容时,会触发事件“检索单元格数据”,然后你设置相关的数据即可 Sub Form1_mCtrlGrid1_MC_GN_GetDispInfoW(hWndForm As hWnd, hWndControl As hWnd, NMG As MC_NMGDISPINFOW) ' NMG.wColumn As WORD 列 ' NMG.wRow As WORD 行 ' NMG.cell.pszText As WString Ptr 单元格文本 ' NMG.cell.cchTextMax As Integer 文本字符数 ' NMG.cell.lParam As LPARAM 用户数据 ' NMG.cell.dwFlags As DWORD 单元格标志 (对齐标记) End Sub
2026年-1月-21日
77 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_mCtrlButton 按钮
mCtrl 出品的增强按钮,它多了一个下拉按钮和可以设置图标 常用事件 点击按钮 Sub Form1_mCtrlButton1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd) End Sub 点击下拉 Sub Form1_mCtrlButton1_BCN_DropDown(hWndForm As hWnd, hWndControl As hWnd, NMB As MC_NMBCDROPDOWN) End Sub 常用属性 mCtrlButton1.Caption 设置或返回标题 mCtrlButton1.Enabled 设置或返回是后禁用 mCtrl系列有些控件存在问题,已经剔除,等以后看看能否解决。 mCtrlChart 图表显示控件 mCtrlExpand 折叠控件 mCtrlImgView 图像显示 mCtrlMDItab 标签
2026年-1月-21日
77 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_Scintilla 火花代码编辑器
Scintilla是一个免费、跨平台、支持语法高亮的编辑控件。它完整支持源代码的编辑和调试,包括语法高亮、错误指示、代码完成(code completion)和调用提示(call tips)。能包含标记(marker)的页边(margin)可用于标记断点、折叠和高亮当前行。 VFB 里的代码编辑,就是使用这个控件。功能非常多,非常强大。 编译成软件后,会在软件文件夹产生一个 支持库DLL,发行软件需要带这个DLL。 主要事件 文本或样式已更改 Sub Form1_Scintilla1_SCN_Updateui(hWndForm As hWnd, hWndControl As hWnd, sN As SCNOTIFICATION ) End Sub 主要属性 Scintilla1.GetLineCount 总行数 Scintilla1.Text 获取或设置文本,UTF8编码 Scintilla1.SendMessage 发送消息 Scintilla 设置非常多,都是通过 Scintilla1.SendMessage 来处理,具体设置需要到官网查看编程文档。这里控件已经给你处理好了事件和消息。后面就按编程文档说明,发送消息即可。 点此打开火花编辑器官方网址 常用设置参考 SciMsg 函数是Scintilla 内部定义的函数和 Scintilla1.SendMessage 是一样的功能,可以按照自己喜欢的方式写。 Dim pSci As Any Ptr = Scintilla1.pSci SciMsg(pSci, SCI_STYLESETFORE, STYLE_DEFAULT, 窗体文字) SciMsg(pSci, SCI_STYLESETBACK, STYLE_DEFAULT, 窗体底色) Dim tStr As ZString * 1024 = "Microsoft YaHei Mono" SciMsg(pSci, SCI_STYLESETFONT, STYLE_DEFAULT, Cast(lParam, @tStr)) SciMsg(pSci, SCI_STYLESETSIZE, STYLE_DEFAULT, 10) SciMsg(pSci, SCI_STYLESETCHARACTERSET, STYLE_DEFAULT, SC_CHARSET_DEFAULT) SciMsg(pSci, SCI_STYLECLEARALL, 0, 0) ' 将全局样式复制到所有其他样式 '行号宽度 tStr = "_9" Dim nPixels As Long = SciMsg(pSci, SCI_TEXTWIDTH, 0, Cast(lParam, @tStr)) SciMsg(pSci, SCI_SETMARGINWIDTHN, 0, nPixels) ' 书签 SciMsg(pSci, SCI_SETMARGINWIDTHN, 1, 2) '行号颜色 SciMsg(pSci, SCI_SETMARGINTYPEN, 0, SC_MARGIN_NUMBER) SciMsg(pSci, SCI_STYLESETFORE, STYLE_LINENUMBER, 窗体文字) SciMsg(pSci, SCI_STYLESETBACK, STYLE_LINENUMBER, 窗体亮度15) '' TABS 作为空格处理 SciMsg(pSci, SCI_SETUSETABS, CTRUE, 0) '' TAB 宽度 SciMsg(pSci, SCI_SETTABWIDTH, 3, 0) SciMsg(pSci, SCI_SETINDENT, 3, 0) ' 显示缩进参考线 SciMsg(pSci, SCI_SETINDENTATIONGUIDES, CTRUE, 0) '' 当前行颜色 SciMsg(pSci, SCI_SETCARETLINEBACK, 窗体亮度10, 0) SciMsg(pSci, SCI_SETHOTSPOTACTIVEUNDERLINE, CTRUE, 0) '允许 ''' 选择颜色 'SciMsg(pSci, SCI_SETSELFORE, CTRUE, op.Themes(0).colors(CLR_SELECTION).nFg) 'SciMsg(pSci, SCI_SETSELBACK, CTRUE, op.Themes(0).colors(CLR_SELECTION).nBg) 'SciMsg(pSci, SCI_SETHOTSPOTACTIVEUNDERLINE, CTRUE, 0) '允许 '' 始终保持插入符号行可见 SciMsg(pSci, SCI_SETCARETLINEVISIBLEALWAYS, CTRUE, 0) '' 标识要在单词中使用的字符 tStr = "&~_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" SciMsg(pSci, SCI_SETWORDCHARS, 0, Cast(lParam, @tStr)) '为了在编辑器中显示,utf8或utf16将被转换为utf8。 SciMsg(pSci, SCI_SETCODEPAGE, SC_CP_UTF8, 0) 'SciMsg(pSci, SCI_SETSCROLLWIDTHTRACKING, True, 0) '滚动宽度跟踪,则调整滚动宽度以确保当前显示的所有行都可以完全滚动。 SciMsg(pSci, SCI_SETSCROLLWIDTH, 10000, 10000) SciMsg(pSci, SCI_SETVSCROLLBAR, 0, 0) SciMsg(pSci, SCI_SETHSCROLLBAR, 0, 0) SciMsg(pSci, SCI_SETLEXER, SCLEX_VB, 0) '设置FreeBASIC关键字 If Len(FreeBASIC关键字)=0 Then FreeBASIC关键字 = "abs abstract access acos add alias allocate alpha and and and andalso any append as asc asin asm assert assertwarn atan2 atn bload bsave base bin " FreeBASIC关键字 &= "binary bit bitreset bitset byref byval byref byte callocate cbyte cdbl cint clng clngint cptr cshort csign csng cubyte cuint culng culngint cushort " FreeBASIC关键字 &= "cunsg cvd cvi cvl cvlongint cvs cvshort call case cast chdir chain chartoutf chr circle class clear close cls color command common condbroadcast " FreeBASIC关键字 &= "condcreate conddestroy condsignal condwait const const const constructor constructor continue cos csrlin curdir custom data date dateadd datediff " FreeBASIC关键字 &= "datepart dateserial datevalue day deallocate declare defbyte defdbl defint deflng defshort defsng defstr defubyte defuint defushort deflongint defulongint " FreeBASIC关键字 &= "delete destructor destructor dim dir do double draw draw dylibfree dylibload dylibsymbol eof else elseif encoding end end end if endif enum...end " FreeBASIC关键字 &= "environ eqv eqv erase erfn erl ermn error event exepath exec exit exp export extends extern field fileattr filecopy filedatetime fileexists filelen " FreeBASIC关键字 &= "fix flip for for format frac fre freefile function function get getjoystick getkey getmouse gosub goto hex hibyte hiword hour iif if imageconvertrow " FreeBASIC关键字 &= "imagecreate imagedestroy imp imp implements import instr instrrev inkey inp input int integer is isdate isredirected kill lbound lcase loc lof lprint " FreeBASIC关键字 &= "lset ltrim left len let let lib line lobyte loword locate lock log long longint loop lpos mkd mki mkl mklongint mks mkshort mid mid minute mkdir " FreeBASIC关键字 &= "mod mod month monthname multikey mutexcreate mutexdestroy mutexlock mutexunlock naked name namespace new next next not now object oct offsetof on " FreeBASIC关键字 &= "once open operator option or orelse out output overload override pcopy pmap preset pset pset paint palette peek placement point pointcoord pointer " FreeBASIC关键字 &= "poke pos preserve print print print private private: procptr property protected: ptr public put put rgb rgba rset rtrim random randomize redim read " FreeBASIC关键字 &= "reallocate rem reset restore resume return right rmdir rnd run sadd scope screen screencontrol screencopy screenevent screenglproc screeninfo screenlist " FreeBASIC关键字 &= "screenlock screenptr screenres screenset screensync screenunlock second seek seek select setdate setenviron setmouse settime sgn shared shell shl " FreeBASIC关键字 &= "shl short shr shr sin single sizeof sleep space spc sqr static static step step stick stop str strptr strig string sub sub swap system tab tan then " FreeBASIC关键字 &= "this threadcreate threadwait threadcall threaddetach time timeserial timevalue timer to trans trim type typeof ubound ubyte ucase uinteger ulong " FreeBASIC关键字 &= "ulongint ushort union unlock unsigned until using val valint vallng valuint valulng var varptr view virtual wbin wchr whex woct wspace wstr wstring " FreeBASIC关键字 &= "wait weekday weekdayname wend while width window windowtitle winput with write wstring xor year zstring cdecl defined pascal stdcall va_arg va_first " FreeBASIC关键字 &= "va_next " End If 'If Len(op.FBKeywordsC) Then SciMsg(pSci, SCI_SETKEYWORDS, 0, Cast(lParam, StrPtr(FreeBASIC关键字))) 'End If 'If Len(op.APIKeywordsC) Then ' SciMsg(pSci, SCI_SETKEYWORDS, 1, Cast(lParam, StrPtr(op.APIKeywordsC))) 'End If '设置多行注释样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_MULTILINECOMMENT, BGR(77, 153, 0)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_MULTILINECOMMENT, op.Themes(0).colors(CLR_COMMENTS).nBg) '设置注释样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_COMMENT, BGR(77, 153, 0)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_COMMENT, op.Themes(0).colors(CLR_COMMENTS).nBg) '设置关键字样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_KEYWORD, BGR(0, 0, 229)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_KEYWORD, op.Themes(0).colors(CLR_KEYWORD).nBg) '设置标识符样式 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_IDENTIFIER, op.Themes(0).colors(CLR_TEXT).nBg) '设置数字样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_NUMBER, BGR(0, 178, 178)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_NUMBER, op.Themes(0).colors(CLR_TEXT).nBg) '设置运算符样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_OPERATOR, BGR(178, 0, 178)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_OPERATOR, op.Themes(0).colors(CLR_OPERATORS).nBg) '设置预处理样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_PREPROCESSOR, BGR(102, 0, 204)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_PREPROCESSOR, op.Themes(0).colors(CLR_PREPROCESSOR).nBg) '设置字符串样式 SciMsg(pSci, SCI_STYLESETFORE, SCE_B_STRING, BGR(178, 0, 89)) 'SciMsg(pSci, SCI_STYLESETBACK, SCE_B_STRING, op.Themes(0).colors(CLR_STRINGS).nBg)
2026年-1月-21日
63 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_MySqlBox 网络大型数据库
MySQL 是一种流行的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)来管理或操作数据库。MySQL 由瑞典公司 MySQL AB 开发,并在 2008 年被 Sun Microsystems 收购,随后 Sun Microsystems 又被 Oracle Corporation 收购。尽管 MySQL 的所有权发生了变化,但它仍然保持其开源和免费的特性,是许多网站和应用程序背后的首选数据库系统。 MySQL 的特点 开源和免费:MySQL 是开源的,这意味着其源代码是公开的,任何人都可以查看、修改和分发它。此外,对于大多数用途,MySQL 是免费的,降低了开发成本。 高性能:MySQL 经过了优化,以提供快速的数据访问速度,支持高并发访问,适用于大型和复杂的数据库应用。 可靠性:MySQL 提供了多种机制来确保数据的完整性和可靠性,包括事务处理、行级锁定和外键约束等。 灵活性:MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等,每种引擎都有其特定的用途和性能特点,用户可以根据需要选择合适的存储引擎。 安全性:MySQL 提供了强大的安全特性,如用户认证、访问控制、数据加密等,以保护数据免受未授权访问。 易于使用:MySQL 提供了简单的 SQL 语言接口,使得数据库的管理和操作变得容易。此外,它还提供了丰富的文档和社区支持,帮助用户解决问题。 跨平台:MySQL 可以在多种操作系统上运行,包括 Windows、Linux、macOS 等,提供了良好的跨平台兼容性。 MySQL 的应用 MySQL 被广泛应用于各种类型的应用程序中,包括网站、博客、电子商务网站、内容管理系统(CMS)、企业资源规划(ERP)系统、客户关系管理(CRM)系统等。由于其开源和免费的特性,MySQL 特别受到小型企业和个人开发者的青睐。 外带一个DLL文件 数据库分为服务器版和客户机版,本控件属于客户机版。使用前,你必须安装一个服务器版软件,部署一个 mysql 数据库(网上到处都有,这里不再说明),或者你已经在网上购买的了一个网络数据库 本控件只带一个DLL文件,编译软件后,在软件文件夹下有一个 mysql 的DLL,你发布软件需要带着这个DLL,可以可以随时更新到最新版DLL 打开mysql 数据库 当你创建了一个MySql数据库,就拥有了账号密码、IP或域名等,填入相关参数即可 MySql默认端口是3306,由于是网络数据库,为了安全(主要是为了那些扫端口爆破软件)可以修改端口,只有你自己知道的端口。 if MySqlBox1.Open(服务器IP或域名,用户名,密码,数据库名,端口) =0 Then Print "打开失败" 使用完成后,需要关闭数据库 MySqlBox1.Close 查询数据库 注意1:查询代码分W字符版和UTF8字符版,可以根据自己的需要使用,例题说明不提及UTF8字符版 注意2:返回的字符文字全部是 UTF8字符格式,使用时需要转换字符编码 查询相关参数说明 Table 表名 如果特殊字符,比方包含空隔、关键词、中文等,可以用反引号 ` 包裹字段名 不然会报错 MySqlBox1.Find("表名".....普通表名 MySqlBox1.Find("`表名`".....特殊表名 MySqlBox1.Find("表名1,表名1".....多表联合查询 Cond 条件 如ID>0 等等,就是字段名>、= 、<、<= 、>= 某值 还有 or and 等,和我们代码的 if 同样道理,无条件将查出全部 还有 id IN(2,10,30) 等列表条件,可以查阅相关的 SQL 条件说明 LIKE '%AA%' 模糊查找,%号表示任意字符,模糊条件不区分大小写。 字符串用单引号( ' ),如同 B语法的双引号,遇到值是单引号( ' ) ,那么和 B语法一样,用连续2个单引号 ( '' ) 表示1个单引号的值。 MySqlBox1.Find("表名","id>3".... 普通数值查询 MySqlBox1.Find("表名", "(id>3 And id<10) Or id=10 "....表达式查询,网上搜索SQL命令 ,和 Basic的条件语法很相似 MySqlBox1.Find("表名","`字段名`='文本'".... 字符查询 MySqlBox1.Find("表名"," `字段名` LIKE '%文本%'".... 字符模糊查询,%号表示任意字符,模糊条件不区分大小写 MySqlBox1.Find("表名", " id IN(2,10,30) "....多值查询,等通于:id = 2 Or id = 10 Or id = 30 rs() 返回查出的内容 1:查询多行时是2维数组,rs(行,列) 0行为字段名称:如 rs(0,0 rs(0,1) 数据从 rs(1,x) 开始 2:查询单行时是1维数组 rs(列) 3:变量类型是 String ,不表示是 A字符,是原始数据,如果字段是字符,需要转换后使用。 如果字段是数字,用 val() valint() 转换,如果是字符,用 Utf8toStr UTF8toCWSTR 转换 Col 字段名称(列名) 需要查询出什么字段,可以用 字段名1,字段名2,... 查出结果为指定列,将影响 rs() 结果 MySqlBox1.Find(表名, 条件, rs(), "*"....全部字段 MySqlBox1.Find(表名, 条件, rs(), "字段名1,字段名2,字段名2"....部分字段,为了节约查询时间,提供查询速度 Orderby 查出的数据按那个字段排序 这里是 字段名称(列名) 默认升序,倒序:字段名 DESC ,字段名称+空格+DESC ,默认值是ASC 可以多字段排序:字段名1,字段名2,字段名3 等等,也可以加 DESC 倒序,先排序 字段1,字段1里的内容字段2排序...... MySqlBox1.Find(表名, 条件, rs(), "*", "字段名1"....查出结果按[字段名1]从小到大排序 MySqlBox1.Find(表名, 条件, rs(), "*", "字段名1 DESC"....查出结果按[字段名1]从大到小排序 MySqlBox1.Find(表名, 条件, rs(), "*", "字段名1,字段名2,字段名3"....先按[字段名1]排序,字段1相同的按[字段名2]排序,以此类推。 * Page 分页查询 第 Page 页(最小是 1页),每页 Pagesize 行。不设置 Pagesize ,将查出全部内容。 * Pagesize 1页多少条数据 MySqlBox1.Find(表名, 条件, rs(), 字段, 排序, 1,100) 查询第1页,每页100行 查询的行数太多,建议用分页查询,来保障软件执行效率。 ### 查询多行数据 Dim rs() as String Dim as Long x,y If MySqlBox1.Find("表名","条件", rs()) Then Print “行数=” &UBound(rs) & “,列数=” & UBound(rs, 2) For y = 0 To UBound(rs) ' y = 0 时将显示字段名 dim bb as String For x = 0 To UBound(rs, 2) bb &=rs(y, x) & " , " ; '如果是文本,因为是 UTF8 编码,需要转换后输出 Next Print bb Next Else Print "出错:" End If ### 查询单行数据 有时候,只需要一行数据,返回全部字段 Dim rs() as String Dim as Long x,y If MySqlBox1.FindOne("表名","条件", rs()) Then dim bb as String For x = 0 To UBound(rs) bb &= rs(x) & " , " ; Next Else Print "出错:" End If ### 查询单字段数据 查询出一行当中的一个字段,假如查询出多个字段,就返回第一个字段,当返回空时,表示查询失败。 uid = ValInt(Form1.MySqlBox1.FindOnly("User" ,"uName='" & 账号 & "'" ,"uID")) ### 统计行数 和查询一样,这只是返回行数,条件参数查看查询里的说明。 行数=MySqlBox1.Count(表名,条件) ### 新增记录(一行) 返回=MySqlBox1.AddItem(表名, 字段赋值列表) **字段赋值列表** 有字段名和值组成,用英文逗号隔开 返回=MySqlBox1.AddItem(表名, "字段名1=值1,字段名2=值2,字段名3=值3,字段名4=值4") **如果字段名是特殊字符**,比如SQL命令里的关键词、非法字符等,用双引用或中括号 ”字段名“ 或 [字段名] **如果”值“是字符串**,用单引用包裹,如:'文字内容' ,假如文字是单引用,那么用 2个单引号代表1个单引号 **如果数据库表中字段没在赋值列表中**,那么就按数据库表的默认值自动赋值。也就是说,字段有 10个,你只给1个字段赋值,那么其它的就按默认赋值。 **返回:** 当有自增主键(通常是 ID字段)就返回当前新增的ID,当无这样的字段,返回可能是0。当新增失败,返回0. ### 删除记录(多行) 返回行数= MySqlBox1.DeleteItem(表名, 条件) **条件**:参考查询里的条件说明,就是查询出的所有行,被删除 **返回**:假如失败,返回 -1,成功返回 删除了多少行。 ### 更新记录(修改记录) * 普通更新 返回= MySqlBox1.Update(表名, 条件,更新列表) **表名:** 参考查询 **条件:** 参考查询 **更新列表:** 参考新增中的 **字段赋值列表** **返回:** 假如失败,返回 -1,成功返回 更新了多少行。 ### 十二、直接执行SQL MySqlBox1.SqlFind (sql命令,返回()) MySqlBox1.SqlFindOne(sql命令,返回()) 假如命令中有返回,比如查询,就有返回内容,假如命令中无返回,比如更新,这个返回就无效。 **注意:** SQL命令是 UTF8 编码的字符,返回的也是UTF8 ### 其它更多功能 除了以上基本功能,本控件还封装了好多实用功能,需要自己来测试研究,这里就不再把所有的功能都介绍一遍,因为都带有简单是中文说明,很容易明白
2026年-1月-21日
116 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_SQLiteBox 本地小型数据库
SQLite3数据库是一个轻量级的嵌入式数据库引擎,广泛应用于各种应用程序中,包括移动设备、桌面应用程序和嵌入式系统。以下是SQLite3数据库的详细说明: 一、概述 轻量级与高效:SQLite3以其轻量级和高效的特点著称,它占用的资源少,消耗总量小,适合在资源受限的环境中使用。 嵌入式数据库:SQLite3可以直接嵌入到应用程序中,无需独立的数据库服务器。这种无服务器的架构简化了部署和管理,减少了与服务器通信的开销。 零配置:使用SQLite3不需要复杂的配置过程,只需在应用程序中包含SQLite3的库文件即可开始使用。 跨平台支持:SQLite3是一个跨平台的数据库引擎,可以在多种操作系统上运行,包括Windows、Linux、macOS、Android等。 二、特性 自包含性:SQLite3数据库是自包含的,它将所有的数据和数据库管理功能封装在一个文件中。这意味着你可以将整个数据库文件复制到其他地方,或者将它嵌入到另一个应用程序中,而不需要额外的配置或安装步骤。 数据类型支持:SQLite3支持多种数据类型,包括NULL、INTEGER、REAL、TEXT、BLOB和NUMERIC等,以满足不同类型数据的存储需求。同时,它也是一个动态类型的数据库引擎,允许在同一列中存储不同类型的值。 事务支持:SQLite3支持事务处理,允许从多个进程或线程安全地访问数据库。 ACID兼容性:SQLite3的事务是完全兼容ACID(原子性、一致性、隔离性、持久性)的,确保了数据的一致性和可靠性。 简单易用:SQLite3使用简单的SQL语言进行数据操作,不需要独立的管理工具或复杂的设置过程。 三、应用场景 移动应用:SQLite3是许多移动操作系统的默认数据库,适用于iOS和Android应用程序的本地存储。 桌面应用:许多桌面应用程序,如文本编辑器、图像编辑软件等,使用SQLite作为其本地数据库,简化数据管理。 嵌入式系统:由于其小巧的特性,SQLite3非常适合嵌入式设备,如家庭自动化系统、智能家居设备和汽车娱乐系统。 开发与测试:SQLite3在开发和测试环境中也非常流行,方便开发者在不需要复杂数据库服务器的情况下进行数据测试和调试。 四、内置或外带DLL 将数据库引擎代码,嵌入到EXE中,EXE文件会增大几MB大小。 外带DLL时,你发布软件需要带着SQLite3的DLL,可以随时更新到最新版DLL 五、打开一个数据库文件 If SQLiteBox1.Open("c:\数据库文件.dp") =0 Then Print "打开失败" 使用完成后,需要关闭数据库 SQLiteBox1.Close 打开有密码的数据库 If SQLiteBox1.Open("c:\数据库文件.dp","密码") =0 Then Print "打开失败" 六、查询数据库 注意1:查询代码分W字符版和UTF8字符版,可以根据自己的需要使用,例题说明不提及UTF8字符版 注意2:返回的字符文字全部是 UTF8字符格式,使用时需要转换字符编码 查询相关参数说明 Table 表名 如果特殊字符,比方包含空格、关键词、中文等,可以添加双引号 "表名" 或 [表名] 不然会报错 SQLiteBox1.Find("表名".....普通表名 SQLiteBox1.Find("""表名""".....特殊表名 SQLiteBox1.Find("[表名]".....特殊表名 SQLiteBox1.Find("表名1,表名1".....多表联合查询 Cond 条件 如ID>0 等等,就是字段名>、= 、<、<= 、>= 某值 还有 or and 等,和我们代码的 if 同样道理,无条件将查出全部 还有 id IN(2,10,30) 等列表条件,可以查阅相关的 SQL 条件说明 LIKE '%AA%' 模糊查找,%号表示任意字符,模糊条件不区分大小写。 字符串用单引号( ' ),如同 B语法的双引号,遇到值是单引号( ' ) ,那么和 B语法一样,用连续2个单引号 ( '' ) 表示1个单引号的值。 SQLiteBox1.Find("表名","id>3".... 普通数值查询 SQLiteBox1.Find("表名", "(id>3 And id<10) Or id=10 "....表达式查询,网上搜索SQL命令 ,和 Basic的条件语法很相似 SQLiteBox1.Find("表名","[字段名]='文本'".... 字符查询 SQLiteBox1.Find("表名"," [字段名] LIKE '%文本%'".... 字符模糊查询,%号表示任意字符,模糊条件不区分大小写 SQLiteBox1.Find("表名", " id IN(2,10,30) "....多值查询,等通于:id = 2 Or id = 10 Or id = 30 rs() 返回查出的内容 1:查询多行时是2维数组,rs(行,列) 0行为字段名称:如 rs(0,0 rs(0,1) 数据从 rs(1,x) 开始 2:查询单行时是1维数组 rs(列) 3:变量类型是 String ,不表示是 A字符,是原始数据,如果字段是字符,需要转换后使用。 如果字段是数字,用 val() valint() 转换,如果是字符,用 Utf8toStr 或Utf8toStringW 转换 Col 字段名称(列名) 需要查询出什么字段,可以用 字段名1,字段名2,... 查出结果为指定列,将影响 rs() 结果 SQLiteBox1.Find(表名, 条件, rs(), "*"....全部字段 SQLiteBox1.Find(表名, 条件, rs(), "字段名1,字段名2,字段名2"....部分字段,为了节约查询时间,提供查询速度 Orderby 查出的数据按那个字段排序 这里是 字段名称(列名) 默认升序,倒序:字段名 DESC ,字段名称+空格+DESC ,默认值是ASC 可以多字段排序:字段名1,字段名2,字段名3 等等,也可以加 DESC 倒序,先排序 字段1,字段1里的内容字段2排序...... SQLiteBox1.Find(表名, 条件, rs(), "*", "字段名1"....查出结果按[字段名1]从小到大排序 SQLiteBox1.Find(表名, 条件, rs(), "*", "字段名1 DESC"....查出结果按[字段名1]从大到小排序 SQLiteBox1.Find(表名, 条件, rs(), "*", "字段名1,字段名2,字段名3"....先按[字段名1]排序,字段1相同的按[字段名2]排序,以此类推。 Page 分页查询 第 Page 页(最小是 1页),每页 Pagesize 行。不设置 Pagesize ,将查出全部内容。 Pagesize 1页多少条数据 SQLiteBox1.Find(表名, 条件, rs(), 字段, 排序, 1,100) 查询第1页,每页100行 查询的行数太多,建议用分页查询,来保障软件执行效率。 六-1、查询多行数据 Dim rs() as String Dim as Long x,y If SQLiteBox1.Find("表名","条件", rs()) Then Print “行数=” &UBound(rs) & “,列数=” & UBound(rs, 2) For y = 0 To UBound(rs) ' y = 0 时将显示字段名 dim bb as String For x = 0 To UBound(rs, 2) bb &=rs(y, x) & " , " ; '如果是文本,因为是 UTF8 编码,需要转换后输出 Next Print bb Next Else Print "出错:" End If 六-2、查询单行数据 有时候,只需要一行数据,返回全部字段 Dim rs() as String Dim as Long x,y If SQLiteBox1.FindOne("表名","条件", rs()) Then dim bb as String For x = 0 To UBound(rs) bb &= rs(x) & " , " ; Next Else Print "出错:" End If 六-3、查询单字段数据 查询出一行当中的一个字段,假如查询出多个字段,就返回第一个字段,当返回空时,表示查询失败。 uid = ValInt(Form1.SQLiteBox1.FindOnly("User" ,"uName='" & 账号 & "'" ,"uID")) 六-4、查询带二进制字段的数据 当字段中,有一个二进制字段,就需要使用二进制查询来查,不然无法返回二进制内容 SQLiteBox1.FindByte 查询多行 SQLiteBox1.FindOneByte 查询单行 SQLiteBox1.FindOnlyByte 查询单字段 使用方法参考 六-1 -2 -3 ,方法一样。方法内容也是一样。只是把二进制字段保存在 Str字符串中。 七、统计行数 和查询一样,这只是返回行数,条件参数查看查询里的说明。 行数=SQLiteBox1.Count(表名,条件) 八、新增记录(一行) 返回=SQLiteBox1.AddItem(表名, 字段赋值列表) 字段赋值列表 有字段名和值组成,用英文逗号隔开 返回=SQLiteBox1.AddItem(表名, "字段名1=值1,字段名2=值2,字段名3=值3,字段名4=值4") 如果字段名是特殊字符,比如SQL命令里的关键词、非法字符等,用双引用或中括号 ”字段名“ 或 [字段名] 如果”值“是字符串,用单引用包裹,如:'文字内容' ,假如文字是单引用,那么用 2个单引号代表1个单引号 如果数据库表中字段没在赋值列表中,那么就按数据库表的默认值自动赋值。也就是说,字段有 10个,你只给1个字段赋值,那么其它的就按默认赋值。 返回: 当有自增主键(通常是 ID字段)就返回当前新增的ID,当无这样的字段,返回可能是0。当新增失败,返回0. 九、删除记录(多行) 返回行数= SQLiteBox1.DeleteItem(表名, 条件) 条件:参考查询里的条件说明,就是查询出的所有行,被删除 返回:假如失败,返回 -1,成功返回 删除了多少行。 十、更新记录(修改记录) 普通更新 返回= SQLiteBox1.Update(表名, 条件,更新列表) 表名: 参考查询 条件: 参考查询 更新列表: 参考新增中的 字段赋值列表 返回: 假如失败,返回 -1,成功返回 更新了多少行。 二进制数据更新 SQLiteBox1.UpdateByte(表名, 条件,字段名,数据指针,数据长度) 二进制数据一次只能更新一个,假如你有多个字段,就需要多次执行这个代码。 假如新增记录时,有二进制数据字段,那些,先新增,取的 ID字段值,然后再执行更新操作来写入数据。 十一、内存数据库 将数据库全部加载到内存中使用,加快数据库速度 SQLiteBox1.MemOpen(数据库文件,密码,同步) 允许同步后,关闭数据库后会自动更新到文件中,不同步的话,需要自己执行以下代码 SQLiteBox1.MemSave 当数据库文件为空,那么创建一个无文件的空的内存数据库 十二、事务(大量数据操作) 当你有大量的新增或更新操作,你会发现执行速度非常慢,为了解决这个问题,就有了事务操作,看操作的数量,速度可能要快几十倍,几百倍的速度。 SQLiteBox1.TransactionBegin() ........大量更新和新增操作 SQLiteBox1.TransactionEnd() 十二、直接执行SQL SQLiteBox1.SqlFind (sql命令,返回()) 假如命令中有返回,比如查询,就有返回内容,假如命令中无返回,比如更新,这个返回就无效。 注意: SQL命令是 UTF8 编码的字符,返回的也是UTF8 其它更多功能 除了以上基本功能,本控件还封装了好多实用功能,需要自己来测试研究,这里就不再把所有的功能都介绍一遍,因为都带有简单是中文说明,很容易明白 功能:创建表、新增字段、创建索引、读取\保存配置、求和,整理数据库 等等
2026年-1月-21日
177 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic控件_Miniblink 小型谷歌浏览器
一个标准谷歌浏览器,需要几百MB的附带文件,而这个只附带一个DLL,才 30MB 大小。 我们知道IE浏览器不支持现代浏览器特征,尤其很多CSS、JS 代码无法使用。而这个简化版可以支持大多数现代浏览器特征。唯一缺点,就是需要跟随一个 DLL文件,发行软件时,必须带上这个DLL才可以。 编译软件后,在EXE文件同文件夹下,会有一个相关DLL。 显示网页 设置网址 Miniblink1.URL ="http://www.yfvb.com" 本地网页 Miniblink1.LoadFile("X:\index.html") 直接设置网页代码 Dim bb As String bb = "<html>" & vbCrLf & _ " <head>" & vbCrLf & _ " <title>网页标题 </title>" & vbCrLf & _ " <body>" & vbCrLf & _ " 网页显示内容" & vbCrLf & _ " </body>" & vbCrLf & _ "</html>" & vbCrLf & _ Miniblink1.LoadHTML(bb) '显示此内容 让网页执行JS代码 可以让浏览器执行JS代码,实现软件和浏览器交互。 Miniblink1.RunJS("这里是JS的代码") 响应浏览器操作 比方,浏览器里有一个按钮,点击按钮,这里可以获取到按钮点击。网页中按钮代码为 <a href="按钮1" target="_blank">按钮文字</a> 事件中: Function Form1_Miniblink1_CreateView(hWndForm As hWnd, hWndControl As hWnd,WebView As wkeWebView,navigationType As Integer,url As CWSTR,windowFeatures as wkeWindowFeatures)As wkeWebView Function = WebView End Function 浏览器的功能非常多,我只是稍微知道一点皮毛,里面的事件和属性非常多,需要更深入的,只能自己研究了。
2026年-1月-21日
66 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic控件_WebView Edge浏览器
Edge内核的浏览器,只支持 WIN10 或以后系统,其它系统由于没带此内核无法使用。 由于IE已经无法支持现代网页,而Edge都是支持,而且是系统自带,我们写的软件就不需要附带非常大的浏览器引擎了。 注意: 本控件还处于初级研究,对里面很多东西,我并不了解,只实现了几个简单的功能。不建议日常使用
2026年-1月-20日
47 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic控件_WebBrowser IE浏览器
传统的IE浏览器,虽然IE已经过时,但是好在操作系统提供,我们开发的软件可以不附带任何东西,显示传统的网页,还是非常不错的。 显示网页 设置网址 WebBrowser1.Navigate("http://www.yfvb.com") 本地网页 WebBrowser1.Navigate("file:///X:/index.html") 直接设置网页代码 WebBrowser1.Navigate "about:blank" ’先清空网页 AfxDoEvents ‘IE 是多线程,需要等待一个消息周期,让网页清空生效 Dim bb As String bb = "<html>" & vbCrLf & _ " <head>" & vbCrLf & _ " <title>网页标题 </title>" & vbCrLf & _ " <body>" & vbCrLf & _ " 网页显示内容" & vbCrLf & _ " </body>" & vbCrLf & _ "</html>" & vbCrLf & _ WebBrowser1.WriteHtml(bb) '显示此内容 获取网页文本框输入的内容 比方,网页中有一个文本框,用户输入了文字,那么我们如何获取输入的文字呢? 网页中的代码 <html> <body> <input type="text" id="myInput"> </body> </html> 我们VFB里的获取代码 Print WebBrowser1.GetElementValueById("myInput") 让网页执行JS代码 可以让浏览器执行JS代码,实现软件和浏览器交互。 WebBrowser1.RunJs("这里是JS的代码") 响应浏览器操作 导航之前事件,可以先确定网址,然后由你决定是否开启这个网址 Sub Form1_WebBrowser1_BeforeNavigate2(ByRef pWebCtx As CWebCtx, ByRef pdisp As IDispatch, ByRef Url As Variant, ByRef Flags As Variant, ByRef TargetFrameName As Variant, ByRef PostData As Variant, ByRef Headers As Variant, ByRef pbCancel As Variant_BOOL) End Sub 弹出新网页时,可以由你决定是否弹出,或同个网页打开 Sub Form1_WebBrowser1_NewWindow3(ByRef pWebCtx As CWebCtx,ppDisp As IDispatch Ptr Ptr,ByRef pbCancel As Variant_BOOL,dwFlags As ULong,ByRef pwszUrlContext As WString,ByRef pwszUrl As WString) End Sub 比方,浏览器里有一个按钮,点击按钮,这里可以获取到按钮点击。网页中按钮代码为 <a href="按钮1" target="_blank">按钮文字</a> 事件中: Sub Form1_WebBrowser1_NewWindow3(ByRef pWebCtx As CWebCtx,ppDisp As IDispatch Ptr Ptr,ByRef pbCancel As Variant_BOOL,dwFlags As ULong,ByRef pwszUrlContext As WString,ByRef pwszUrl As WString) If pwszUrl = "按钮1" Then 这里执行点击按钮后要执行的代码 pbCancel = VARIANT_TRUE End If End Sub 浏览器的功能非常多,我只是稍微知道一点皮毛,里面的事件和属性非常多,需要更深入的,只能自己研究了。 其它常用属性 WebBrowser1.Refresh 刷新网页 WebBrowser1.GoBack 后退 WebBrowser1.GoForward 向前
2026年-1月-20日
43 阅读
0 评论
VisualFreeBasic编程文档
2026-1-20
VisualFreeBasic控件_IpControl IP址地
这个一个 Txt文件控件扩展出的一个控件,用来输入 IP地址。 此控件为输入IP地址专用控件,没有什么可以特别说明。
2026年-1月-20日
41 阅读
0 评论
VisualFreeBasic编程文档
16
17
18
19
20