Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • Access控件焦点获得的..
  • The Kill-Bit FAQ: Part 1 o..
  • RichTextBox无法..
  • 一个快速注册 DLL 及 ..
  • 在VB通过vsreport..
  • 在Access中使用Fon..

最新文章

  • 在Access中使用Fon..
  • 完美解决“无法装载这个对象..
  • 快速学习Treeview树..
  • 一个可免注册的Access..
  • Access如何添加引用及..
  • 锐浪报表(Grid++Re..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > ActiveX/第三方控件/插件
ActiveX/第三方控件/插件

ACCESS EXCEL 一个增强Treeview 节点编辑能力的类模块

CTreeViewEdit - ACCESS EXCEL 一个增强Treeview 节点编辑能力的类模块

'-------------------------------------------------------
' The CTREEVIEWEDIT Class module
'
' This class lets you use a regular TextBox control to
' edit a treeview node's label. All you have to do to
' use this class is adding a TextBox control to the same
' form that hosts the TreeView control, and initialize
' an instance of the class from inside the form's Load
' event. In the following example we have a treeview
' control named tvwHierarchy and a support textbox control
' named txtSupport

'  Dim TVEdit As New CTreeViewEdit
'
'  Private Sub Form_Load()
'      TVEdit.Init tvwHierarchy, txtSupport
'  End Sub

' You can then write code in the event procs of txtSupport,
' as you would do with a regular textbox. For example you
' can filter out invalid keys. You can also terminate the
' edit mode by invoking the class's EndLabelEdit method
' (pass True to accept the new value, False to reject it)

'Private Sub txtSupport_KeyPress(KeyAscii As Integer)
'    If KeyAscii >= 48 And KeyAscii <= 57 Then
'        ' filter out numeric keys
'        KeyAscii = 0
'    ElseIf KeyAscii = 8 Then
'        ' the backspace cancels the operation
'        TVEdit.EndLabelEdit False
'    End If
'End Sub
'-------------------------------------------------------

'-------------------------------------------------------
' API Declares
'-------------------------------------------------------
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
    hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hWnd As Long, _
    lpRect As RECT) As Long
Private Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Const TV_FIRST = &H1100
Private Const TVM_GETITEMRECT = (TV_FIRST + 4)
Private Const TVM_GETNEXTITEM = (TV_FIRST + 10)
Private Const TVGN_CARET = 9

'-------------------------------------------------------
' module variables
'-------------------------------------------------------

' the TreeView control
Dim WithEvents TreeView As TreeView
' the hidden textbox control
Dim WithEvents TextBox As TextBox
' the parent form (can be anything)
Dim Parent As Object

' these variables are active when the user is editing the node label
' the previous value of the Node's Text property
Dim saveText As String
' the control that had Default = True
Dim defaultCtrl As Object
' the control that had Cancel = True
Dim cancelCtrl As Object

' Initialize this instance

Sub Init(TView As TreeView, TBox As TextBox)
    Set TreeView = TView
    Set TextBox = TBox
    Set Parent = TextBox.Parent
    TextBox.Visible = False
End Sub

'-------------------------------------------------------
' event procedures
'-------------------------------------------------------

' when the user clicks on a treeview's item
' this procedure gets the control and cancels
' the default operation

Private Sub TreeView_BeforeLabelEdit(Cancel As Integer)
    Cancel = True
    StartLabelEdit
End Sub

' when the user types in the textbox, grow or shrink it

Private Sub TextBox_Change()
    Dim saveFont As StdFont
    Dim wi As Single
    Dim borderWidth As Single
    
    ' temporarily change the parent form's font,
    ' to use its TextWidth method
    Set saveFont = Parent.Font
    Set Parent.Font = TextBox.Font
    wi = Parent.TextWidth(TextBox.Text) + Parent.ScaleX(20, vbPixels, _
        Parent.ScaleMode)
    Set Parent.Font = saveFont
    ' this is the Treeview's border, in the same coordinate
    ' system as the parent form
    borderWidth = Parent.ScaleX(2, vbPixels, Parent.ScaleMode)
    
    ' don't let the textbox grow larger than the treeview
    If TextBox.Left + wi > TreeView.Left + TreeView.Width - borderWidth Then
        wi = TreeView.Left + TreeView.Width - TextBox.Left - borderWidth
    End If
    
    TextBox.Width = wi
    
End Sub

' terminate the edit mode when the user types
' Enter or Escape keys

Private Sub TextBox_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case 13
            EndLabelEdit True
            KeyAscii = 0
        Case 27
            EndLabelEdit False
            KeyAscii = 0
    End Select
End Sub

' terminate the edit mode when the user clicks
' outside of the textbox control

Private Sub TextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, _
    Y As Single)
    If X < 0 Or Y < 0 Or X > TextBox.Width Or Y > TextBox.Height Then
        EndLabelEdit True
    End If
End Sub

'-------------------------------------------------------
' Support routines
'-------------------------------------------------------

' enter edit mode

Private Sub StartLabelEdit()
    ' get the edit rectangle for the selected item
    Dim lpRect As RECT, lpClientRect As RECT
    Dim hNode As Long
    
    ' get the handle of the selected node
    hNode = SendMessage(TreeView.hWnd, TVM_GETNEXTITEM, TVGN_CARET, ByVal 0&)
    ' get the bounding rectangle for this node
    ' the function expects in input the handle of the item
    ' at the beginning of the RECT structure
    lpRect.Left = hNode
    If SendMessage(TreeView.hWnd, TVM_GETITEMRECT, True, lpRect) = 0 Then
        ' a zero value means error
        Exit Sub
    End If

    ' convert coordinates into form coordinates
    With lpRect
        .Left = TreeView.Left + Parent.ScaleX(.Left, vbPixels, Parent.ScaleMode)
        .Top = TreeView.Top + Parent.ScaleY(.Top, vbPixels, Parent.ScaleMode)
        .Right = TreeView.Left + Parent.ScaleX(.Right, vbPixels, _
            Parent.ScaleMode)
        .Bottom = TreeView.Top + Parent.ScaleY(.Bottom, vbPixels, _
            Parent.ScaleMode)
    End With
    
    ' move the textbox in front of the TreeView
    With TextBox
        ' move the textbox in the right position
        .Move lpRect.Left, lpRect.Top, lpRect.Right - lpRect.Left + 200, _
            lpRect.Bottom - lpRect.Top
        .ZOrder
        
        ' transfer the node's text to the TextBox control
        .Text = TreeView.SelectedItem.Text
        .SelStart = 0
        .SelLength = Len(.Text)
        Set .Font = TreeView.Font
        
        ' make the textbox visible and give it the focus
        .Visible = True
        .SetFocus
        
        ' grab the mouse capture
        SetCapture .hWnd
        
        ' disable any button with Default or Cancel property
        ' this is necessary because we want to trap the Enter
        ' and Cancel keys while the user is editing the
        ' node's label.
        Set defaultCtrl = Nothing
        Set cancelCtrl = Nothing
        Dim ctrl As Control
        
        On Error Resume Next
        
        For Each ctrl In Parent.Controls
            If ctrl.Default = False Then
                ' not supported or Default = False
            Else
                Set defaultCtrl = ctrl
                ctrl.Default = False
            End If
            If ctrl.Cancel = False Then
                ' not supported or Cancel = False
            Else
                Set cancelCtrl = ctrl
                ctrl.Cancel = False
            End If
        Next
    
        ' save node's text, then clear it - this is necessary to avoid the 
        ' original
        ' text appears if the editing textbox shrinks
        saveText = TreeView.SelectedItem.Text
        TreeView.SelectedItem.Text = ""
    
    End With

End Sub

' this procedure is called from TextBox event procs
' or by the client application

Sub EndLabelEdit(AcceptIt As Boolean)
    If AcceptIt Then
        ' if not canceled, assign the text to the underlying node
        TreeView.SelectedItem.Text = TextBox.Text
    Else
        ' else restore original text
        TreeView.SelectedItem.Text = saveText
    End If
    ' release mouse capture, and restore form's font
    ReleaseCapture
    
    ' make the TextBox invisible and clear it
    TextBox.Visible = False
    TextBox.Text = ""
    TreeView.SetFocus
    
    ' restore Default and Cancel buttons, if any
    On Error Resume Next
    defaultCtrl.Default = True
    cancelCtrl.Cancel = True
End Sub
 

发布人:admin  
分享到:
点击次数:  更新时间:2013-10-01 20:46:26  【打印此页】  【关闭】
上一条:The Kill-Bit FAQ: Part 1 of 3  下一条:windows 7或其它windows 64位系统里Treeview注册的问题(mscomctl



相关文章

  • • 在Access中使用Font Awesome字符图标
  • • 完美解决“无法装载这个对象”的困扰
  • • 快速学习Treeview树状控件的详细教程
  • • 一个可免注册的Access增强控件库
  • • Access如何添加引用及调整引用的顺序
  • • 锐浪报表(Grid++Report)的一些开发技巧
  • • Grid++Report 锐浪报表开发常见问题解答集锦
  • • RichTextbox控件RTF(富文本格式)的使用及常用语法

热门文章

  • [2017-05-24] 快速学习Treeview树状控件的详细教程access数据库
  • [2013-10-29] 快速注册DLL和OCX的方法【技巧】access数据库
  • [2013-07-03] [经验技巧]Access中使用微软Treeview树形控件的烦恼access数据库
  • [2005-02-04] 注册ActiveX控件的几种方法access数据库
  • [2009-04-21] TreeView控件使用教程5access数据库
  • [2013-10-01] Access的Treeview在 MS10-036 更新后无法使用的问题access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn