wke 易语言WebUI原创简单登录界面源码

wke 易语言WebUI原创简单登录界面源码
通过msi的 静默安装 安装方式, 自己就可以做自动安装驱动的子程序了
相信很多用adodb数据库的朋友, 很多都为此烦恼过吧. 毕竟windows不自带myodbc驱动.
做好的程序 还要单独安装一个驱动. 自用之类的就不用说了, 如果客户是小白, 就把问题指向你的软件问题
我之前是一直用libmysql, 想转用adodb. 就因为这个问题. 不敢用.
只要集成了, 就不用那么麻烦了. 绿色安全, 即下即用
# 介绍 这个模块是最初入坑数据库类软件时, 因为老是需要调用许多模块很麻烦 所以整理的自用模块. 多数东西是在开源模块中拷贝过来使用的. 结合一些自己封装的方便类/命令. 一直是修修补补的 每开发一个项目我基本都会对这个模块进行更新, 虽然也有很多未发现的bug. 但帮助我做了不少项目. 也算是个经验丰富的老司机了 ##为什么很多命令/类是英文名称? 因为在php以及其他编程语言中变换, 所以养成了"能英文的英文, 不能英文的拼音, 拼音难听的中文" 为的是统一自己对几个编程语言的规范吧 # 功能/类 - Connection *adodb连接件* - Recordset *adodb记录集* - Recordset_ *adodb记录集_离线版* - DbModel *自用封装的数据库操作模型, 模仿ThinkPHP的 数据模型* - Regexp *正则* - FileSystemObject *com文件系统对象* - Window *窗口操作(废)* - Drag *拖放对象* - MemLibrary *内存动态链接库* - Xml *精易模块的XML类* - 组合框扩展 - ScriptControl *脚本控制对象* - KeysGainModel *按键hook* - LogModel *日志类* - 以及其他很多方便本人使用的子程序...
前段时间在写一个服务端程序的时候, 需要用到mysql.
客户端连接服务端执行sql分好几种情况, { 查询SQL, 执行SQL, 执行SQL事务, 批量执行支持, 查询执行混合 } …
其中的"批量执行"就有点让我头疼, 玩过sql的都知道, 批量执行一般以";" 终结符算一条sql语句, 以此分割.
难点就是把批量的sql语句, 分割为单条, 一个一个的执行. 估计有的易友可能想到了"分割文本, 发送文本数组"
首先"发送文本数组", 我不喜欢, 有时候显得麻烦.
其次"分割文本", 你可能会遇到这样以下这样的情况, 也就是sql字符串中出现了";", 你能怎么办? 你也很绝望对吧?
复制代码
[font=微软雅黑]INSERT INTO `User`(name) values('剑''齿;虎'); SELECT LAST_INSERT_ID();[/font]
以上问题还有, 字符串中包含单引号就需要用两个单引号表示….
实在不想屈服于前面两种蛋疼的方式, 试着自己封装子程序解析, 忽略字符串什么的. 有时候脑子是个好东西, 可惜我好像没有似的… 感觉设计起来还挺复杂麻烦的, 我没学过什么脚本设计, 编译设计的.
于是前段时间论坛有几个帖子被顶起来了, 一个叫"无间酱"的大佬制作了好几个练手的脚本语言设计,
我灵机一动… 脚本也会遇到这样的问题, 就把源码中的解析终结符部分给抠出来了… 总算说到重点了.
刚开始还不能直接用, 改了改还算可以了.
示例
复制代码
INSERT INTO User (name,pwd) values('剑齿虎;哇', 'aabb');–注释A:插入语句–
SELECT * FROM User; /*注释B:查询*/
UPDATE User SET pwd='ac''c' WHERE uid=1
结果:
数组:3{
“INSERT INTO User (name,pwd) values('剑齿虎;哇', 'aabb');”,
“–注释A:插入语句– SELECT * FROM User;”,
“/*注释B:查询*/ UPDATE User SET pwd='ac''c' WHERE uid=1”
}
易语言编写的装饰管理系统开源-数据库类源码-三叶资源网 http://www.sanye.cx/?id=13191
介绍
我之前有封装过一个比较完善的在线更新程序. 但是需要带上"迅雷SDK"就显得有点大了
在泡论坛时找到了一个Wininet下载模块, 觉得不错就拿来做一个在线更新程序与"XX装饰管理系统"配套使用
引入模块
剑齿虎de模块 v2.65
Wininet (并没有源码)
文件
\update.exe 在线更新程序
\update.ini 本地更新配置文件
\update.xml 网络更新配置文件
\lib\ 因为我的易语言被改造过, 普通编译的支持库会掉落到lib目录中. 所以保留
update.ini
[更新配置]
当前版本=1.0.1
稍微有点常识的人都可以看出来.这是一个配置文件.
保存了这个软件的"当前版本"号, 如果她被更改. 导致与"网络更新配置文件"中的Info\Version值不匹配. 就会触发更新
update.xml
<?xml version="1.0"?>
<Info>
<SoftName>XX装饰信息平台</SoftName>
<ShortName>Zhuang Shi</ShortName>
<MainExe>Client.exe</MainExe>
<Version>1.0.1</Version>
<Log><![CDATA[更新了很多东西!]]></Log>
<DownloadUrl>http://127.0.0.1/update/1.0.1.zip</DownloadUrl>
</Info>
这个是网络配置文件 update.exe 会访问这个文件获取信息与本地比较.
说明
Info\SoftName 软件名称/标题
Info\ShortName 软件英文名称
Info\MainExe 更新后启动的程序 (主程序)
Info\Version 当前最新版本号
Info\Log 更新内容说明
Info\DownloadUrl zip更新包下载地址
如何配置环境
编辑好"update.xml"并上传到你的网站
Shift + 鼠标右键 "在此处打开命令窗口"
键入命令"update.exe http://www.edk24.com/update.xml test" 后面的网址是你的 update.xml文件网址
test是无意义的, 只是需要两个参数
在用Think.PHP的时候, 发现它的数据库操作非常简单. 直接类似这样的写法就可以了.
于是决定用易语言模仿一个, 这个版本只支持 "生成拼装SQL", 下次准备结合ad0o对象. 允许直接操作数据库
制作这么一个东西的初衷是为了 "更快更高效的开发程序", 我们往往在SQL上耽搁了太多时间. 并不是它难. 而是难以维护 难以修改.
[子文本替换拼装], [字符串拼装]…. 这些都用过. 一旦比较长的sql 改懂就比较麻烦
这个类喜欢你能喜欢.
——————————————————
这个模块是用之前我写的简单键值对, 是用 数组+自定义数据类型 弄的. 可以替换掉 其实我早就想换了.
相对以前的版本
[增加] Coun t()
[增加] To p()
[修复] pag e() 分页出现负数
[更新] 抛弃用"类自身" 克0隆, 怕有什么问题. 改用特定方法设置内容
[更新] 简单键值对
2016-12-30:
连夜更新了模块, 已经可以绑定ado对象. 直接操作数据库.
实现几乎完全一样的操作, 除不是若类型语言, 对数据类型的苛刻要求. 无法直接返回数据. 其他基本上差不多了
这个版本暂时不开源, 想体验的朋友可以加群 178569305
2016-12-30:
[废除] 简单键值对, 改 "自定义数据类型->数组"
[废除] 生成组装SQL
[革命] 增加 "绑定adodb连接件对象", "绑定adodb记录集对象"
[革命] 增加 "调试模式" 用于快速定位错误
[增加] 增加 读写模式, "插入", "更新", "读取" 用重复的代码, 改下读写模式就OK~
[革命] 改 "SqlModel" 为 "DbModel"
[废除] val_Single 小数型 (可以直接用Val_double 双精度替代)
[废除] val_All 自定义内容, 可以用在 DbModel->data("字段名", "我是内容") 参数2 替代
[增加] RecordCount (取记录数), FieldCount (取字段数)
写cs程序最讨厌的就是, 分割字节集/ 于是希望把字节集数组保存和还原. 用于网络传输. 效果不错.
感谢 小路, kyozy的帮助/
字节集内存结构: { 成员数量+0, 成员1长度+4, 成员2长度+8, 完整字节集+12 }
02:35 更新一下, 解决数组成员数据为空导致崩溃
阴影是通过wke GDI透明渲染模式 + 制作一个png透明阴影图片 + border-image样式做的
更改窗口尺寸, 就是对元素被鼠标左键按下后做处理, 发送消息 拖拽窗口这个之前已经实现了, 这是最基本的. 不然还怎么愉快的玩wke
什么是HPSocket
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中[1] 。
为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。
— 百度百科
什么是异步, 什么是同步
"HPsocket所有组件都是异步的" 我记得我开始学习HP的时候看见这行字我内心是崩溃的.
我觉得一些聊天室/游戏什么的才用异步, 那么我专门写一些网关中间件什么的. 常用的是"应答式(同步)". 即: 发送<—>响应. 类似http请求, 但不会断开客户端
异步: 专门绑定一个事件, 收到的所有数据都投送给事件处理. 适合聊天室/游戏等等
同步: 发送后等待响应, 获取响应数据后继续向下执行. 不需要绑定事件什么的. 类似post, 不会断开连接就是了
为什么做这个玩意
记得是去年开始学习hp的, 当时在群"怪物乐园"询问如何实现同步. 与某(忘记了)个管理发生了py交易. 他热心的帮助我写了一个"PACK模型"的同步操作例子.
之后应用在一个项目中并不理想, 因为PACK模型是整个包发送, 有大小限制, 还经常出现问题.
今年一个项目想用HP的PULL模型, 所以自己分析那个大神给的例子. 终于魔改封装出了一个"PULL模型"的同步操作类.
之前有易友希望我开源, 其实我早就想开源了的, 因为需要从项目中分离出来太麻烦了, 而且工作忙(上班), 所以就拖到了今天
近期因为要使用这类东西, 找到硬盘里以前某论坛大佬开源的 "超级列表框拟表格",
因为程序集要写很多业务代码, 怕以后阅读起来麻烦并且避免重复造轮子, 于是做了二次修改封装成了类, 程序集写少量事件处理代码即可
可以照例子加入其他组件, 日期框/日历/颜色 等等…