TreeView DblClick-Event

  • Word

    TreeView DblClick-Event

    Ich habe eine Userform in einem MS Word 2003 Template. Darauf befindet sich ein TreeView Control (MS TreeView Control Version 6.0). Ausserdem befindet sich auf der Userform ein ControlButton. Im Click-Ereignis des ControlButton wird die Userform auf dem Bildschirm verschoben und das Application.ActiveWindow von Word wird entsprechend in seiner Grösse angepasst, dass beide Fenster nebeneinander liegen. Bei erneutem Click auf den ControlButton wird Application.ActiveWindow.WindowState = wdWindowStateMaximize und die Userform in die Bildschirmmitte verschoben. Die Userform ist ShowModal = False. Soweit funktioniert alles.

    Im DblClick Ereignis des TreeView wird je nach TreeView.SelectedItem eine Datei in das aktive Worddokument eingefügt, danach wird die Userform beendet. Soweit funktionierts immer noch.

    Nun soll im DblClick Ereignis nebst dem Einfügen des Textes das Application.ActiveWindow maximiert werden und zwar mittels Application.ActiveWindow.WindowState = wdWindowStateMaximize. Dies funktioniert nicht. Im Debugmodus im Einzelschrittmodus ausgeführt, klappt's wunderbar, kein fehler, gar nix. Strange.

    Irgendwie habe ich den Eindruck, dass es mit den Messages zu tun haben könnte, da entweder die Reihenfolge nicht stimmt oder für VBA irgendwas zu schnell passiert.

    Har irgendwer eine Idee, woran es liegen könnte, das das Maximieren im ControlButton_Click funktioniert, im TreeView_DblClick nicht, ausser im Debugmodus?

    Code:

    Quellcode

    1. Private Sub TreeView_MenuStructure_DblClick()
    2. ' Status: test
    3. On Error GoTo Err_TreeView_MenuStructure_DblClick
    4. Dim lngStartOffset As Long
    5. Dim strFileName As String
    6. Dim strFieldFileName As String
    7. Dim objTreeNode As Object
    8. ' MsgBox "activewindow=" & ActiveWindow.Caption & vbNewLine & "windowstate=" & ActiveWindow.WindowState
    9. Set objTreeNode = Me![TreeView_MenuStructure].SelectedItem
    10. If Not objTreeNode Is Nothing Then
    11. If objTreeNode.Children = 0 Then
    12. If objTreeNode.Tag <> "" Then
    13. strFileName = strTBBaseFolder & "\" & GetTopLevelNode(objTreeNode).Text & "\" & objTreeNode.Tag
    14. If FileExists(strFileName) Then
    15. If ActiveWindow.WindowState <> wdWindowStateMaximize Then ActiveWindow.WindowState = wdWindowStateMaximize
    16. lngStartOffset = Selection.Start
    17. Selection.InsertFile FileName:=strFileName, ConfirmConversions:=False, Link:=False, Attachment:=False
    18. ActiveDocument.Range(lngStartOffset, lngStartOffset).Select
    19. Selection.Collapse wdCollapseStart
    20. Set objTreeNode = Nothing
    21. ' Debug.Print "active:" & ActiveWindow.Active
    22. Call Me.Quit
    23. GoTo Exit_TreeView_MenuStructure_DblClick
    24. Else
    25. MsgBox "File: " & strFileName & " does not exist."
    26. End If
    27. End If
    28. End If
    29. End If
    30. Exit_TreeView_MenuStructure_DblClick:
    31. Set objTreeNode = Nothing
    32. Exit Sub
    33. Err_TreeView_MenuStructure_DblClick:
    34. LogError "MainForm::TreeView_MenuStructure:DblClick", Err
    35. If Err.Number = 0 Then
    36. GoTo Exit_TreeView_MenuStructure_DblClick
    37. Else
    38. Resume Exit_TreeView_MenuStructure_DblClick
    39. End If
    40. End Sub
    41. Private Sub btnSticky_Click()
    42. On Error GoTo Err_btnSticky_Click
    43. Application.ScreenUpdating = False
    44. If Not boolIsSticky Then
    45. Call PlaceSticky
    46. Else
    47. Call PlaceUnSticky
    48. End If
    49. Call SetFocusToWindow(Me.Caption)
    50. SendKeys "{TAB}"
    51. Exit_btnSticky_Click:
    52. Application.ScreenUpdating = True
    53. Application.ScreenRefresh
    54. Exit Sub
    55. Err_btnSticky_Click:
    56. LogError "MainForm::btnSticky_Click", Err
    57. If Err.Number = 0 Then
    58. GoTo Exit_btnSticky_Click
    59. Else
    60. Resume Exit_btnSticky_Click
    61. End If
    62. End Sub
    63. Public Sub PlaceSticky()
    64. On Error GoTo Err_PlaceSticky
    65. Dim intWordWidth As Integer
    66. Dim intWordHeight As Integer
    67. ActiveWindow.WindowState = wdWindowStateMaximize
    68. oldFormCoords.Top = Me.Top
    69. oldFormCoords.Left = Me.Left
    70. oldFormCoords.Width = Me.Width
    71. oldFormCoords.Height = Me.Height
    72. oldTVCoords.Top = Me![TreeView_MenuStructure].Top
    73. oldTVCoords.Left = Me![TreeView_MenuStructure].Left
    74. oldTVCoords.Width = Me![TreeView_MenuStructure].Width
    75. oldTVCoords.Height = Me![TreeView_MenuStructure].Height
    76. intWordWidth = ActiveWindow.Width
    77. intWordHeight = ActiveWindow.Height
    78. ActiveWindow.WindowState = wdWindowStateNormal
    79. ActiveWindow.Top = 0
    80. ActiveWindow.Left = 0
    81. ActiveWindow.Height = intWordHeight
    82. ActiveWindow.Width = intWordWidth - Me.Width
    83. Me.Height = intWordHeight
    84. Me![TreeView_MenuStructure].Height = oldTVCoords.Height + (Me.Height - oldFormCoords.Height)
    85. ActiveWindow.View.Zoom.PageFit = wdPageFitBestFit
    86. If Me.Top = -5.25 And Me.Left = -5.25 Then
    87. ' von mir gewählte spezialwerte. wenn beide -5.25, dann muss fenstermitte berechnet werden
    88. oldFormCoords.Left = CInt(ActiveWindow.Width / 2)
    89. oldFormCoords.Top = CInt((intWordHeight - oldFormCoords.Height) / 2)
    90. End If
    91. Me.Top = 0
    92. Me.Left = intWordWidth - Me.Width
    93. boolIsSticky = True
    94. Exit_PlaceSticky:
    95. Exit Sub
    96. Err_PlaceSticky:
    97. LogError "MainForm::PlaceSticky", Err
    98. If Err.Number = 0 Then
    99. GoTo Exit_PlaceSticky
    100. Else
    101. Resume Exit_PlaceSticky
    102. End If
    103. End Sub