如何在VB中实现Undo、Redo功能???

bamboo 2000-04-23 05:47:00
有什么稍为简便的办法,在VB中实现Undo、Redo功能???
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snymph 2000-04-29
  • 打赏
  • 举报
回复
和我联系,会给你满意的答复!
强力胶
snymph_qiy@263.net
zjml 2000-04-27
  • 打赏
  • 举报
回复
简单,如果是在编辑框中使用windows的消息,WM_UNDO,和WM_REDO
008 2000-04-26
  • 打赏
  • 举报
回复
monday说的有道理。不过你到底要做什么?
monday 2000-04-25
  • 打赏
  • 举报
回复
不管你undo什么,我认为先给操作步骤定义一个编号,设定一数组什么的保存每一个操作的编号,对这个数组进行管理就可实现undo, redo的功能。
Un1 2000-04-24
  • 打赏
  • 举报
回复
你要做什么的Undo, Redo?
Grid++Report 报表控件适用于VB.NET、C#、VB、VC、Delphi、C++Builder、Foxpro(VFP)、易语言等一切支持 COM 的开发工具。除了提供报表的统计分析、打印、打印预览、数据导出等功能,还提供独有的报表查询显示功能,让报表查询显示、打印、打印预览及数据导出等功能集成一体化实现。轻松实现通用报表、表格报表、动态报表、多层表头、票据与发票套打、交叉表、表表及各种特殊报表等。提供详尽帮助文档与各种编程平台下的丰富例子,安装包括可直接运行例子程序,安装后即刻体验此报表工具。包括简体文版、繁体文版与英文版。经过数年的发展,已经被国内多家有影响力的通用软件厂商采用,其用户遍布各行各业,已经成为用户受众面最广的国产报表开发工具。Grid++Report 报表组件具有如下特点:1、适用范围广:VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、易语言等一切支持 COM 的开发工具。2、功能强大:实现普通格式报表、表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,非常适合开发通用软件的动态报表。3、独有的报表查询显示功能:除了提供报表的打印、打印预览、数据导出等功能,还提供独有的报表查询显示功能,既提供报表查询与输出的集成一次性实现,又能保证数据的一致性与完整性。4、特有的分组单元格合并功能,轻松实现常见的国式报表分组在列展现并垂直居。5、提供图表功能,在报表直接实现图表功能。包括:饼图、叠加饼图、柱状图,连线图、散列点图等。6、报表数据导出格式丰富,格式包括:Excel、PDF、图像、HTML、文本,CSV 等。7、提供脚本编程功能,直接在报表模板自定义报表行为,采用通用的 VBScript 与 JScript 脚本引擎。8、支持参数化报表查询SQL语句,轻松实现动态过滤条件筛选报表数据。9、报表查询显示时提供报表内容文字查找功能。10、全文界面,针对国报表进行了很多专门实现,如:报表表格线、财务金额线、大写金额、发票打印圆圈画叉图标、负数红字显示、多层表头等。很多在国外报表控件很难实现功能在本报表控件可以轻易实现。11、组件提供丰富交互事件,轻松实现报表穿透(透视)查询和报表交互。12、重新发布简单:只需分发两个 DLL 文件。13、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。14、编写了完整详尽的帮助文档。提供了丰富例程,包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、文编程易语言。15、为 Delphi、C++Builder 编写专门的包装类,象使用 VCL 控件一样使用 Grid++Report。16、支持所有常规条形码,打印条形码精度高易读取。
ArcGIS Engine开发-自定义图层类型 3 ArcGIS Engine开发-取得ArcMap文档缩略图 3 ArcSDE直接取得图层几何类型 4 ArcGIS Server常见问题之一 5 IFeatureLayer.DataSourceType Property [C#] 11 IQueryFilter接口的SubFileds属性的使用 12 用程序实现从带高程的点数据到等高线的转换 13 空间查询的实现 14 创建带Z值的Feature 15 在AO或者ENGINE为SHAPEFILE添加SPATIAL INDEX 19 把一个图层ILayer数据COPY到三维Scenecontrol控件(进行相关操作) 20 vb + arcgis engine 用raster生成等值线源码 22 关于IIdentify定义时只能找到面而不能找到点和线的问题 31 使用ArcGIS Engine来实现地图的点击查询并闪烁 32 空间查询的实现 34 如何在同一图层做缓冲选择 35 怎么样使用Engine来保存Mxd文件(几种情况)? 36 在ArcGIS Engine开发时如何改变标注字段 37 对shape文件添加字段 38 在ArcGisEngine 开发如何在Toolbar控件上添加Combobox等其他控件 40 自相交对象的处理 41 在图加入采集点 42 创建拓扑类、投影等等。 43 如何解决shapefile和coverage出现无法导入SDE数据库现象? 44 怎么显示布局控件的标尺 45 把shapefile polygons转为polylines 45 为什么不能编辑raster属性表或添加字段? 46 使用ArcGIS将GTOPO30 DEM数据转换到栅格数据 47 旋转地图 47 给geodatabase或shapefile定义一个投影 49 ArcGIS EngineUndoRedo命令的使用 50 创建带Z值的Feature 50 在Ao如何通过查询获得ITable 53 关于多个实体联合(union)的使用 54 在Ao如何通过查询获得ITable 55 在Visual Basic实现ICommand接口 56 使用ArcObjects程序按照顶点来分割一条线 58 使用AO加载Raster Catalog 61 把不同层的几次的选择结果加到一个选择集 61 如何为ArcObjects扩展出"GroupRenderer"的效果来? 62 在AO或者ENGINE为SHAPEFILE添加SPATIAL INDEX 68 如何ArcObject的环境用程序实现3D环境的查询功能 69 截取任意范围地图区域 71 使用AO新增记录的3种方法 74 如何在ArcEngine环境的SceneControl实现查询功能 75 删除FeatureClass满足一定条件的Feature问题及解决办法! 77 创建孤立的要素类和数据集的要素类 78 SUM Color of vertex symbols in edit 80 要素动态跟踪的算法 83 同时闪烁满足条件的记录n次 86 旋转地图 89 转载-AO代码〔Display) 94 在arcEngine标注字段属性数据 99 IfeatureSelection:SelectFeatures方法介绍 100 AO基本函数集合(很多函数功能) 103 AO画一个多边形 110 AO画带节点的线 111 AO计算Polygon的面积 112 AO缓冲区查询 113 AO画一个圆 114 AO查询被选的实体 116 AO绘制带节点橡皮筋线条 117 AO绘制橡皮筋多边形 123 AO绘制缓冲区 126 vb+ao鹰眼图代码 127 如何利用ao编辑shape文件的某个属性的属性值 129 MO作为B/S客户端控件的开发 130 MO作为B/S服务器端的开发 133 两点间画线 135 创建Personal Geodatabase 136 ArcObject学习的重要工具--Object Model Diagrams 137 ArcObject学习的重要工具--Object Model Diagrams (二) 139 AO开发感想 141 AO的组件库(1) 143
----------------------- 'False_VB教程:VB制作带撤销功能的记事本 QQ:5333784 '应网友要求,今天给大家带来一个用VB做带有撤销功能的记事本 'VB写记事本网上已经有很多教程了 '但是却很少有撤销功能的 '今天我就给大家做一个 '我们开始吧 '编辑菜单 '好了, '下面我们添加一个模块 '代码我已经测试好了 '也会给大家打包的 '下面来写入代码 '好了,这些是记事本最基本的应用 '希望大家可以写出一个属于自己的更多功能的记事本 '今天的教程就到这里了 '我们下次见 '以下是代码: '----------------------------------华丽的分割线------------------------------------------------- Dim sFind As String'生命查找变量 Dim FileType, FiType As String '----------------------------------华丽的分割线------------------------------------------------- Public Property Get UndoType() As ERECUndoTypeConstants UndoType = SendMessageLong(rtfText.hwnd, EM_GETUNDONAME, 0, 0) End Property Public Property Get RedoType() As ERECUndoTypeConstants RedoType = SendMessageLong(rtfText.hwnd, EM_GETREDONAME, 0, 0) End Property Public Property Get CanPaste() As Boolean CanPaste = SendMessageLong(rtfText.hwnd, EM_CANPASTE, 0, 0) End Property Public Property Get CanCopy() As Boolean If rtfText.SelLength > 0 Then CanCopy = True End If End Property Public Property Get CanUndo() As Boolean CanUndo = SendMessageLong(rtfText.hwnd, EM_CANUNDO, 0, 0) End Property Public Property Get CanRedo() As Boolean CanRedo = SendMessageLong(rtfText.hwnd, EM_CANREDO, 0, 0) End Property '----------------------------------华丽的分割线------------------------------------------------- Private Sub Form_Load()'窗体加载时 Dim lStyle As Long lStyle = TM_RICHTEXT Or TM_MULTILEVELUNDO Or TM_MULTICODEPAGE SendMessageLong rtfText.hwnd, EM_SETTEXTMODE, lStyle, 0 End Sub '----------------------------------华丽的分割线------------------------------------------------- Private Function TranslateUndoType(ByVal eType As ERECUndoTypeConstants) As String Select Case eType Case ercUID_UNKNOWN TranslateUndoType = "Last Action" Case ercUID_TYPING TranslateUndoType = "Typing" Case ercUID_PASTE TranslateUndoType = "Paste" Case ercUID_DRAGDROP TranslateUndoType = "Drag Drop" Case ercUID_DELETE TranslateUndoType = "Delete" Case ercUID_CUT TranslateUndoType = "Cut" End Select End Function '----------------------------------华丽的分割线------------------------------------------------- '----------------------------------多了个华丽的分割线------------------------------------------- '新建文件 rtfText.Text = "" '清空文本框 FileName = "未命名" Me.Caption = FileName '----------------------------------华丽的分割线------------------------------------------------- '打开文件 CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*" CommonDialog1.ShowOpen rtfText.Text = "" '清空文本框 FileName = CommonDialog1.FileName rtfText.LoadFile FileName Me.Caption = "个人专用记事本:" & FileName '----------------------------------华丽的分割线------------------------------------------------- '保存文件 Open App.Path & "\False_VB教程.txt" For Append As #1 Print #1, rtfText.Text Close #1 '----------------------------------华丽的分割线------------------------------------------------- '另保存文件 CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*" CommonDialog1.ShowSave FileType = CommonDialog1.FileTitle FiType = LCase(Right(FileType, 3)) FileName = CommonDialog1.FileName Select Case FiType Case "txt" rtfText.SaveFile FileName, rtfText Case "rtf" rtfText.SaveFile FileName, rtfRTF Case "*.*" rtfText.SaveFile FileName End Select Me.Caption = "个人专用记事本:" & FileName '----------------------------------华丽的分割线------------------------------------------------- '撤销 SendMessageLong rtfText.hwnd, EM_UNDO, 0, 0 End Sub '----------------------------------华丽的分割线------------------------------------------------- '重做 SendMessageLong rtfText.hwnd, EM_REDO, 0, 0 '----------------------------------华丽的分割线------------------------------------------------- '复制 SendMessageLong rtfText.hwnd, WM_COPY, 0, 0 '----------------------------------华丽的分割线------------------------------------------------- '粘贴 SendMessageLong rtfText.hwnd, WM_PASTE, 0, 0 '----------------------------------华丽的分割线------------------------------------------------- '清除 rtfText.SelText = Empty '----------------------------------华丽的分割线------------------------------------------------- '剪切 SendMessageLong rtfText.hwnd, WM_CUT, 0, 0 '----------------------------------华丽的分割线------------------------------------------------- '全选 rtfText.SelStart = 0 rtfText.SelLength = Len(rtfText.Text) '----------------------------------华丽的分割线------------------------------------------------- '时间日期 rtfText.Text = rtfText.Text & " " & Now '----------------------------------华丽的分割线------------------------------------------------- '查找 sFind = InputBox("请输入要查找的字、词:", "查找内容", sFind) rtfText.Find sFind '----------------------------------华丽的分割线------------------------------------------------- '继续查找 rtfText.SelStart = rtfText.SelStart + rtfText.SelLength + 1 rtfText.Find sFind, , Len(rtfText) '----------------------------------华丽的分割线------------------------------------------------- '关于 MsgBox "作者QQ:1302938783 QQ群:26891547 E-mail:falsevb@163.com 欢迎喜欢VB的朋友加入我的QQ群,大家一起讨论,请那些所谓的什么什么黑客要盗什么什么QQ的人自重,这个群只是喜欢VB的朋友一起交流和讨论,了解吗?", 64, "关于" '----------------------------------华丽的分割线------------------------------------------------- '防止在切换输入法时字体自变 Private Sub rtfText_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeySpace Then rtfText.SelFontName = CommonDialog1.FontName End If End Sub '----------------------------------华丽的分割线------------------------------------------------- '模块 Public Enum ERECViewModes ercDefault = 0 ercWordWrap = 1 ercWYSIWYG = 2 End Enum '// Undo Types Public Enum ERECUndoTypeConstants ercUID_UNKNOWN = 0 ercUID_TYPING = 1 ercUID_DELETE = 2 ercUID_DRAGDROP = 3 ercUID_CUT = 4 ercUID_PASTE = 5 End Enum '// Text Modes Public Enum TextMode TM_PLAINTEXT = 1 TM_RICHTEXT = 2 ' /* default behavior */ TM_SINGLELEVELUNDO = 4 TM_MULTILEVELUNDO = 8 ' /* default behavior */ TM_SINGLECODEPAGE = 16 TM_MULTICODEPAGE = 32 ' /* default behavior */ End Enum Public Const WM_COPY = &H301 Public Const WM_CUT = &H300 Public Const WM_PASTE = &H302 Public Const WM_USER = &H400 Public Const EM_SETTEXTMODE = (WM_USER + 89) Public Const EM_UNDO = &HC7 Public Const EM_REDO = (WM_USER + 84) Public Const EM_CANPASTE = (WM_USER + 50) Public Const EM_CANUNDO = &HC6& Public Const EM_CANREDO = (WM_USER + 85) Public Const EM_GETUNDONAME = (WM_USER + 86) Public Const EM_GETREDONAME = (WM_USER + 87) Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long '----------------------------------结束华丽的分割线--------------------------------------------

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧