Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
TreeView: Status der Checkboxen im Event nicht zu ändern
zurück: Feldnamen + Inhalt mehrer Felder in 1 Formularfeld ausgeben weiter: Problem mit einem If Befehl Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
juliaxx
Gast


Verfasst am:
27. Okt 2008, 10:49
Rufname:

TreeView: Status der Checkboxen im Event nicht zu ändern - TreeView: Status der Checkboxen im Event nicht zu ändern

Nach oben
       Version: Office 2003

Hallo,

ich hoffe wirklich inständig dass mir hier jemand helfen kann. Ich habe folgendes Problem:
Ich habe in einer UserForm ein TreeView-Objekt mit Checkboxen. Wenn ich eine Checkbox anklicke, springe ich ins TreeView_check- Event, wenn ich den Eintrag anklicke ins TreeView-Click Event, das dann das Check-Event aufruft.
Code:
Private Sub TreeView1_NodeCheck(ByVal node As MSComctlLib.node)
    If node.Checked Then
        MsgBox "Node gecheckt"
        node.Checked = False
      Else
        MsgBox "Node nicht gecheckt"
        node.Checked = True
    End If
End Sub

Private Sub TreeView1_NodeClick(ByVal node As MSComctlLib.node)
    node.Checked = Not node.Checked
    TreeView1_NodeCheck ByVal node
End Sub
Das wirklich seltsame Problem, das ich nicht verstehe ist:
KLICKE ich einen Eintrag an, funktioniert das alles so wie es soll. CHECKE ich einen Knoten, kommt zwar die Messagebox, der Knoten bleibt aber auf dem gleichen Check-Status.
Beim Debuggen habe ich allerdings festgestellt, dass der Status ordnungsgemäß geändert wird, aber sobald End Sub des Check-Events ausgeführt ist, wird der Status wieder auf den Urzustand gesetzt.

Wird vor dem Event eine Kopie angelegt um die hinterher wieder herzustellen? Oder hat es was mit ByVal zu tun? Und warum geht es wenn ich über das Click-Event gehe?

Hatte jemand zufällig mal das gleiche Problem? Ich wäre wirklich sehr dankbar für Hilfe....

Lg Julia
Nouba
nicht ganz unwissend :)


Verfasst am:
27. Okt 2008, 14:58
Rufname:
Wohnort: Berlin


AW: TreeView: Status der Checkboxen im Event nicht zu ändern - AW: TreeView: Status der Checkboxen im Event nicht zu ändern

Nach oben
       Version: Office 2003

Hallo,

was erwartest Du denn anderes, wenn der Zustand des Kontrollkästchens eines Knotens mit der Maus geändert wird, und Du im Kode kurz danach diesen Zustand wieder invertierst?

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
juliaxx
Gast


Verfasst am:
28. Okt 2008, 10:12
Rufname:

AW: TreeView: Status der Checkboxen im Event nicht zu ändern - AW: TreeView: Status der Checkboxen im Event nicht zu ändern

Nach oben
       Version: Office 2003

Hallo,

Das ist ja nur zum Test dieses Programm.
Wenn ich den Knoten "angecheckt" habe, sieht man das, dann kommt eine MessageBox mit "Node gecheckt" und dann soll das häkchen wieder weggehen. Und dieser letzte Schritt passiert nur, wenn ich über das Click-Event eingestiegen bin und nicht, wenn ich über das Check-Event komme. Ich finde das seltsam...

Wenn ich debugge, geht in beiden Fällen das Häkchen wenn wenn die Zeile ausgeführt wird, der Unterschied ist, dass es nur weg bleibt, wenn ich über das Click-Event kam. Komme ich direkt in das Check-Event, ist das Häkchen, sobald ich End Sub ausgeführt habe wieder da Sad

Hat jemand ne Idee?
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Okt 2008, 17:19
Rufname:
Wohnort: Berlin

AW: TreeView: Status der Checkboxen im Event nicht zu ändern - AW: TreeView: Status der Checkboxen im Event nicht zu ändern

Nach oben
       Version: Office 2003

Hallo,

da muss man sich wohl einen Timer zur Hilfe nehmen.

Code:
Option Compare Database
Option Explicit

Private Declare Function LockWindowUpdate Lib "user32.dll" ( _
                                          ByVal hWnd As Long) As Long

Private m_tv As Object
Private m_nd As Object

Private Sub Form_Load()
  Dim i As Long

  'plaziere ein Treeview Steuerelement im Formular mit Namen: tvctl
  Set m_tv = Me.tvctl.Object
  For i = 0 To 25
    m_tv.Nodes.Add , , , String$(10, Chr$(i + 65))
  Next
End Sub

Private Sub Form_Timer()
  Me.TimerInterval = 0
  If Not m_nd Is Nothing Then
    MsgBox m_nd.Text & ": " & IIf(m_nd.Checked, "", "nicht ") & "gechecked"
    m_nd.Checked = Not m_nd.Checked
    MsgBox m_nd.Text & ": " & IIf(m_nd.Checked, "", "nicht ") & "gechecked"
    Set m_nd = Nothing
  End If
End Sub

Private Sub tvctl_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, _
                            ByVal x As Long, ByVal y As Long)
  LockWindowUpdate m_tv.hWnd  'verhindert "Flackern" der Treeview-Darstellung
End Sub

Private Sub tvctl_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _
                          ByVal x As Long, ByVal y As Long)
  If Me.TimerInterval = 0 Then
    LockWindowUpdate 0        'Neuzeichnen des Treeviews erlauben
  End If
End Sub

Private Sub tvctl_NodeCheck(ByVal Node As Object)
  'Nur das Checken jedes 2. Knotens erlauben
  If Asc(Node.Text) Mod 2 Then
    Set m_nd = Node
    Me.TimerInterval = 50
  End If
End Sub

Private Sub tvctl_NodeClick(ByVal Node As Object)
  Node.Checked = Not Node.Checked
  tvctl_NodeCheck Node
End Sub

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
juliaxx
Gast


Verfasst am:
27. Nov 2008, 11:06
Rufname:


AW: TreeView: Status der Checkboxen im Event nicht zu ändern - AW: TreeView: Status der Checkboxen im Event nicht zu ändern

Nach oben
       Version: Office 2003

Hi Nouba,

vielen Dank für den Tip mit dem Timer und dass du dich damit beschäftigt hast.

Ich habe erst mit Timern rumprobiert, aber es wollte nicht zufriedenstellend klappen. Ich habe es jetzt anders gelöst. Allerdings auch noch mit ein paar PRoblemen.
Code:
Private m_nd As Node
Public TimerInterVal

Private Sub TreeView1_MouseUp(ByVal Button As Integer, _
                              ByVal Shift As Integer, _
                              ByVal x As stdole.OLE_XPOS_PIXELS, _
                              ByVal y As stdole.OLE_YPOS_PIXELS)
    'MsgBox "MouseUp"
    If Not m_nd Is Nothing Then
        m_nd.Checked = False
    End If
    Set m_nd = Nothing
End Sub

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
    'MsgBox "NodeCheck"
    If Node.Index <= 6 Then
        Set m_nd = Node
      Else
        Set m_nd = Nothing
    End If
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    Node.Checked = Not Node.Checked
    TreeView1_NodeCheck Node
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer
   
    For i = 0 To 25
        TreeView1.Nodes.Add , , , String$(10, Chr$(i + 65))
    Next i
End Sub
Da das Check-Event vor dem MouseUp Event ausgelöst wird, funktioniert das ganz gut und es muss nicht ständig im Hintergrund eine Funktion pollen.

Also falls jemand das gleiche Problem hat, ich denke die Lösung ist ganz annehmbar. Einziges Problem ist noch, dass wenn man auf der Checkbox klickt, und dann den Zeiger wegzieht und loslässt, geht es nicht.

WErd mal sehen, ob ich da noch was machen kann um zu schauen, indem ich die Koordinaten von Mouse Down und Mouse Up vergleiche.

Vielen Dank trotzdem, LG Julia
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Wert per Abfrage ändern 3 Crunker 685 22. Okt 2007, 16:40
Pino Wert per Abfrage ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Mit Kontrollkästchen die Farbe eines Feldes ändern 8 MarcoX 996 24. Sep 2007, 20:35
MarcoX Mit Kontrollkästchen die Farbe eines Feldes ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Feldeigenschaften per SQL ändern? 1 Aquerias 1486 06. Sep 2007, 15:13
Nouba Feldeigenschaften per SQL ändern?
Keine neuen Beiträge Access Tabellen & Abfragen: Id Wert nachträglich nochmals ändern 13 arcos00 1108 27. Jun 2007, 11:57
Nouba Id Wert nachträglich nochmals ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mehrerer Checkboxen & eines Textfeldes 4 typh00n 508 25. Apr 2007, 08:58
KlausMz Abfrage mehrerer Checkboxen & eines Textfeldes
Keine neuen Beiträge Access Tabellen & Abfragen: Anfügeabfrage Ziel unter VB ändern 1 Werner Laun 570 02. Apr 2007, 15:37
Thomas2007 Anfügeabfrage Ziel unter VB ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert ändern 0 derhoeppi 815 21. Nov 2006, 13:30
derhoeppi Autowert ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Datumsformat ändern in mmm jjjj (januar 2006) 2 Gast 2699 23. Aug 2006, 09:17
Gast Datumsformat ändern in mmm jjjj (januar 2006)
Keine neuen Beiträge Access Tabellen & Abfragen: benutze Tabellen in Abfrage ändern? 15 MBarthel 1397 04. Aug 2006, 13:30
MBarthel benutze Tabellen in Abfrage ändern?
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikat-Abgleich in Kunden-DB; Bei Dublette: Status ändern 0 deadlink 1011 30. März 2006, 22:13
deadlink Duplikat-Abgleich in Kunden-DB; Bei Dublette: Status ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Daten über eine Schleife im gefilterten Formular ändern 1 Alwin 707 21. März 2006, 09:28
mapet Daten über eine Schleife im gefilterten Formular ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Feldname ändern? 9 Chriz1985 5469 30. Jan 2006, 08:23
Chriz1985 Feldname ändern?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Web Editor Forum