Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Moin!

1. Kann ich in einer Variable festhalten, ob ich ein Tree-Level geöffnet bzw. geschlossen habe?

2. Kann ich das Level automatisch schließen, wenn das letzte Element den Fokus verliert?

Und mit dem CD-ROM bin ich, trotz einiger Tipps, noch nicht weitergekommen. :(

Original geschrieben von Narf!

1. Kann ich in einer Variable festhalten, ob ich ein Tree-Level geöffnet bzw. geschlossen habe?

Du kannst mit CTreeCtrl::GetItemState testen, ob ein bestimmtes Element geöffnet bzw. geschlossen ist:

if( m_deinTreeCtrl.GetItemState(hItem, TVIS_EXPANDED ) == TVIS_EXPANDED ) {

// aufgeklappt

}

else {

// nicht aufgeklappt

}

hItem ist hier das HTREEITEM des Elements, dessen Status Du prüfen willst.

2. Kann ich das Level automatisch schließen, wenn das letzte Element den Fokus verliert?
Ja, auch wenn sich mir der Sinn nicht ganz erschließt. In dem TNV_SELCHANGING-Handler kannst Du über pNMTreeView->itemOld.hItem an das HTREEITEM des Elements kommen, das jetzt nicht mehr selektiert ist:

HTREEITEM hOld = pNMTreeView->itemOld.hItem;
if( hOld ) {
if( !m_deinTreeCtrl.GetNextSiblingItem( hOld ) ) {
// es war das letzte
HTREEITEM hParent = m_deinTreeCtrl.GetParentItem( hOld );
if( hParent ) {
m_deinTreeCtrl.Expand( hParent, TVE_COLLAPSE );
}
}
}[/CODE]
[b]Kann ich feststellen, in welchem Level ich mich befinde?[/b]
Dafür solltest Du einen Handler für TVN_ITEMEXPANDED einrichten. Das geht analog zu TVN_SELCHANGING. Da drin kannst Du dann prüfen, wie oft Du GetParentItem aufrufen kannst:
[CODE]if( (pNMTreeView->action & TVE_EXPAND) == TVE_EXPAND ) {
// aufgeklappt
}
else {
// zugeklappt
}

int level = 0;
HTREEITEM hParent = m_deinTreeCtrl.GetParentItem( pNMTreeView->itemNew.hItem );
while( hParent ) {
level++;
hParent = m_deinTreeCtrl.GetParentItem( hParent );
}

Und mit dem CD-ROM bin ich, trotz einiger Tipps, noch nicht weitergekommen. :(
Dann solltest Du in dem entsprechenden Thread schreiben, wo genau Probleme auftauchen.
  • Autor

Hallöchen!

Ich möchte das CD-Laufwerk

1. prüfen, ob eine CD drin ist,

2. prüfen, ob es offen oder geschlossen ist

3. selbst öffnen oder schließen

4. Den Volume-Name speichern

Danke für die Tree-Tipps, ich glaube ich hab jetzt alle Probleme damit gelöst. :cool:

Original geschrieben von Narf!

Ich möchte das CD-Laufwerk

1. prüfen, ob eine CD drin ist,

2. prüfen, ob es offen oder geschlossen ist

3. selbst öffnen oder schließen

4. Den Volume-Name speichern

Wie ich schon sagte, schreib bitte in dem Thread, in dem Du die Fragen ursprünglich gestellt hattest, was die konkreten Probleme sind. Wenn ein anderer Benutzer mal ein ähnliches Problem hat, soll er sich die Antworten nicht über mehrere Threads verteilt zusammensuchen müssen.
  • Autor

Moin moin!

Ich möchte aus einer Datei einen String auslesen und den in der Tree-Ansicht suchen und, wenn gefunden, markieren. Sozusagen ein Rücksprung auf das letzte genutze Item, nach dem das Programm beendet und wieder gestartet wurde.

  • 1 Monat später...

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.