2009-06-09 8 views
0

Wie kann ich in clientseitigen Windows-Apps eine nicht modale verschiebbare Benachrichtigungsleiste wie Firefox, Beyond Compare und VMware Workstation 6.5 verwenden?Nicht modale Benachrichtigungsleisten?

Jede Sprache oder Rahmen ist für jetzt in Ordnung; Meine aktuelle App ist in Delphi/C++ Builder, aber ich bin auch daran interessiert, Frameworks zu vergleichen und einige UIs zu erstellen.

In Verbindung stehende Frage: This question fragt darüber in Java.

Antwort

1

Beyond Compare's Benachrichtigungsleiste rutscht nicht, es öffnet sich nur, so dass ich keine Hilfe anbieten kann. Die Benachrichtigungsleiste selbst ist nur ein TPanel mit einem TImage und TLabel für das Bild/den Text. Es wird zur Entwurfszeit im Hauptfenster platziert und ist so eingestellt, dass es unten ausgerichtet ist. Normalerweise ist es ausgeblendet, und wenn eine Nachricht angezeigt wird, setzen wir die Visible-Eigenschaft auf true.

Es gibt verschiedene Möglichkeiten, die Benachrichtigung zu verbergen, je nachdem, wie sie sich verhalten soll. In BC installieren wir Tastatur- und Maus-Hooks (SetWindowsHookEx mit WH_KEYBOARD oder WH_MOUSE) und verstecken sie bei Tastenereignissen und Maustastenereignissen. Alternativ, wie Mark sagte, könnten Sie es nach einer Verzögerung verstecken, eine Schließen-Schaltfläche an die Seite hinzufügen oder einfach nach bestimmten Ereignissen in Ihrer App Ausschau halten und sie dann manuell ausblenden.

0

In Delphi glaube ich, dass Sie eine Eigenschaft auf dem Dialog selbst ändern können (ändern Sie den Fenstertyp weg von "Dialog" und wählen Sie die Standard-Fensteralternative). Entschuldigung, ich kann nicht genauer sein, es ist ungefähr zwei Jahre her, seit ich zum letzten Mal an einer Delphi-App gearbeitet habe.

+0

Einen nicht-modalen Dialog zu erstellen ist einfach; Ich bin stattdessen an einer einfachen Möglichkeit interessiert, Benachrichtigungsleisten zu erstellen, die Teil des übergeordneten Fensters sind. –

+0

Hoppla, tut mir leid. Können Sie nicht einfach eine Statusleiste am unteren Rand platzieren und die Texteigenschaft der Statusleiste ändern? Oder ein Paneel, dessen Höhe geändert wurde, um es zu öffnen und nach einiger Zeit wieder auf Null zurückzuschalten? –