谢谢解答!

解决方案 »

  1.   

    我又实验了一番,发现空grid输入的时候没有问题
    只是在从数据库读取数据到grid里面的时候,会发生自动合并
    所以可能是数据库读取数据的时候发生了问题,我是这样读取的MSHFlexGrid1.TextMatrix(i, j) = Trim$(rs.Fields(j)) & Space(i)i=行,j=列应该怎样修改?
      

  2.   

    呵呵,终于找到问题了,读数据库和单元格修改的时候加的space不一样新问题:如何设置除了fixrow以外的任何单元格都是左对齐?因为空格的原因,显得很不整齐
      

  3.   

    属性可以修改除FixRow以外的
    用属性CellAlignment可以修改当前Cell对其方式
    MSHFlexGrid1.CellAlignment =flexAlignLeftCenter对齐:
    方法1,
    如果是左对其,空格加在后面;如果右对齐,空格加在左面,
    方法2,
    MSHFlexGrid1.ColAlignment(0) = flexAlignLeftCenter,整列左对其
        MSHFlexGrid1.Col = 0
        MSHFlexGrid1.Row = 0
        MSHFlexGrid1.CellAlignment = flexAlignRightCenter,表头右对其Private Sub Form_Load()
        MSHFlexGrid1.Cols = 2
        MSHFlexGrid1.Rows = 3
        MSHFlexGrid1.TextMatrix(0, 0) = "是一下"
        MSHFlexGrid1.TextMatrix(1, 0) = "是一下"
        MSHFlexGrid1.TextMatrix(2, 0) = "是一下"
        MSHFlexGrid1.ColAlignment(0) = flexAlignLeftCenter
        MSHFlexGrid1.Col = 0
        MSHFlexGrid1.Row = 0
        MSHFlexGrid1.CellAlignment = flexAlignRightCenter
    End Sub
      

  4.   

    建activex dll工程,加入下面的文件,编译,在外接程序-〉外接程序管理器,选中[注释器]Connect.Dsr
    ========================
    VERSION 5.00
    Begin {AC0714F6-3D04-11D1-AE7D-00A0C90F26F4} Connect 
       ClientHeight    =   6090
       ClientLeft      =   1740
       ClientTop       =   1545
       ClientWidth     =   7320
       _ExtentX        =   12912
       _ExtentY        =   10742
       _Version        =   393216
       Description     =   $"Connect.dsx":0000
       DisplayName     =   "注释器"
       AppName         =   "Visual Basic"
       AppVer          =   "Visual Basic 98 (ver 6.0)"
       LoadName        =   "Command Line / Startup"
       LoadBehavior    =   5
       RegLocation     =   "HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0"
       CmdLineSupport  =   -1  'True
    End
    Attribute VB_Name = "Connect"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = True
    Attribute VB_PredeclaredId = False
    Attribute VB_Exposed = True
    Public FormDisplayed            As Boolean
    Public VBInstance               As VBIDE.VBE
    Private mcbMenuCommandBar       As Office.CommandBarControl
    Public WithEvents MenuHandler   As CommandBarEvents
    Attribute MenuHandler.VB_VarHelpID = -1Private Declare Function GetComputerNameA Lib "kernel32" _
       (ByVal lpBuffer As String, nSize As Long) As Long
       
    Private Declare Function GetUserNameA Lib "advapi32.dll" _
       (ByVal lpBuffer As String, nSize As Long) As Long'
    ' Returns the computer's name
    '
    Private Function GetComputerName() As String
       Dim UserName As String * 255   Call GetComputerNameA(UserName, 255)
       GetComputerName = Left$(UserName, InStr(UserName, Chr$(0)) - 1)
    End Function
    Private Function GetUserName() As String
       Dim UserName As String * 255   Call GetUserNameA(UserName, 255)
       GetUserName = Left$(UserName, InStr(UserName, Chr$(0)) - 1)
    End Function
    Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
        On Error GoTo error_handler
        Set VBInstance = Application
        
        Debug.Print VBInstance.FullName    If ConnectMode = ext_cm_External Then
            ProcReMark
        Else
            Set mcbMenuCommandBar = AddToAddInCommandBar("注释器")
            Set Me.MenuHandler = VBInstance.Events.CommandBarEvents(mcbMenuCommandBar)
        End If
      
        If ConnectMode = ext_cm_AfterStartup Then
            If GetSetting(App.Title, "Settings", "DisplayOnConnect", "0") = "1" Then
                ProcReMark
            End If
        End If
      
        Exit Sub
        
    error_handler:
        
        MsgBox Err.Description
        
    End SubPrivate Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
        On Error Resume Next
        mcbMenuCommandBar.Delete
        
        If FormDisplayed Then
            SaveSetting App.Title, "Settings", "DisplayOnConnect", "1"
            FormDisplayed = False
        Else
            SaveSetting App.Title, "Settings", "DisplayOnConnect", "0"
        End IfEnd SubPrivate Sub IDTExtensibility_OnStartupComplete(custom() As Variant)
        If GetSetting(App.Title, "Settings", "DisplayOnConnect", "0") = "1" Then
            ProcReMark
        End If
    End Sub
    Private Sub MenuHandler_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
        ProcReMark
    End SubFunction AddToAddInCommandBar(sCaption As String) As Office.CommandBarControl
        Dim cbMenuCommandBar As Office.CommandBarControl
        Dim cbMenu As Object
      
        On Error GoTo AddToAddInCommandBarErr
        
        Set cbMenu = VBInstance.CommandBars("Add-Ins")
        If cbMenu Is Nothing Then
            Exit Function
        End If
        
        Set cbMenuCommandBar = cbMenu.Controls.Add(1)    cbMenuCommandBar.Caption = sCaption
        
        Set AddToAddInCommandBar = cbMenuCommandBar
        
        Exit Function
        
    AddToAddInCommandBarErr:End FunctionPrivate Sub ProcReMark()
        
        Dim TmpCP                   As CodePane
        Dim i                       As Long
        Dim j                       As Long
        Dim iMax                    As Long
        Dim iBeginLine              As Long
        Dim iEndLine                As Long
        Dim iBeginCol               As Long
        Dim iEndCol                 As Long
        Dim iFlgPro                 As Integer  '0 nono ;1 sub ;2 fun
        Dim StrTmpVar               As String
        Dim strProNm                As String
        Dim strReturn               As String
        Dim mStrArr()               As String
        
        ReDim mStrArr(0)
        Set TmpCP = VBInstance.ActiveCodePane
        
        Call TmpCP.GetSelection(iBeginLine, iBeginCol, iEndLine, iEndCol)
            
        For i = iBeginLine To iEndLine
            StrTmpVar = Trim(TmpCP.CodeModule.Lines(i, 1))
            If StrTmpVar <> vbNullString Then Exit For
        Next i
        If StrTmpVar = vbNullString Then GoTo WayOut
        
        mStrArr = Split(StrTmpVar, Space(1))    iMax = UBound(mStrArr)
        
        For i = 0 To iMax
        
            If UCase(mStrArr(i)) = "SUB" Or UCase(mStrArr(i)) = "FUNCTION" Then
                If UCase(mStrArr(i)) = "SUB" Then
                    iFlgPro = 1
                Else
                    iFlgPro = 2
                    strReturn = mStrArr(iMax)
                End If
                j = InStr(1, mStrArr(i + 1), "(")
                If j <> 0 Then
                    strProNm = Mid(mStrArr(i + 1), 1, j - 1)
                End If
            End If
        Next i
        
        StrTmpVar = "'*******************************************************************************"
        StrTmpVar = StrTmpVar & vbCrLf & "'Function Name:"
        StrTmpVar = StrTmpVar & vbCrLf & "'" & Space(10) & strProNm
        StrTmpVar = StrTmpVar & vbCrLf & "'Function Description:"
        StrTmpVar = StrTmpVar & vbCrLf & "'" & Space(10) & "..."
        StrTmpVar = StrTmpVar & vbCrLf & "'InPara:"
        StrTmpVar = StrTmpVar & vbCrLf & "'"
        StrTmpVar = StrTmpVar & vbCrLf & "'"
        StrTmpVar = StrTmpVar & vbCrLf & "'OutPara:"
        StrTmpVar = StrTmpVar & vbCrLf & "'"
        StrTmpVar = StrTmpVar & vbCrLf & "'"
        StrTmpVar = StrTmpVar & vbCrLf & "'Return:"
        StrTmpVar = StrTmpVar & vbCrLf & "'" & Space(10) & strReturn
        StrTmpVar = StrTmpVar & vbCrLf & "'LastUpdate:"
        StrTmpVar = StrTmpVar & vbCrLf & "'" & Space(10) & Format(Now, "yyyymmdd") & "/" & GetComputerName() & "(" & GetUserName() & ")"
        StrTmpVar = StrTmpVar & vbCrLf & "'*******************************************************************************"    Call TmpCP.CodeModule.InsertLines(iBeginLine, StrTmpVar)
        Call TmpCP.SetSelection(iBeginLine, 1, iBeginLine + 16, 1)
    WayOut:
        Set TmpCP = Nothing    
    End Sub