vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen & Antworten rund um sev-Komponenten
sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Woellmi
Datum: 11.09.15 12:14

Hallo zusammen,

ich arbeite unter XP (comctl32.dll v>2.80.xx) mit dem sevDataGrid 2.2.0.160 im ListMode
und möchte mehrzeilige ToolTips als BalloonTip anzeigen.

Dazu nutze ich das sevGrid_OnMouseMove Ereignis, wobei ich in der
INIT-Methode (unter Form_Load) u.a. folgendes einstelle.

.BallonTip = TRUE
.ToolTipIcon = ttInfoIcon
Im sevGrid_OnMouseMove Ereignis werte ich Zeile und Spalte aus und weise
dann der ToolTipText-Eigenschaft einen Text zu.

.ToolTipText = "Text1" & vbCrLF & "Text2"
Sobald einen nicht gewünschte Col/Row Kombination erkannt wird, lösche ich den Text.

.ToolTipText = ""
Folgende Fragen:
- Es wird ein ToolTipText an den korrekten Stelle angezeigt, aber kein BallonToolTip.
Habe ich die Vorraussetzungen falsch/unvollständig erfasst (W2k/XP + comctl32 Version)?

- Mein "Deaktivieren" hat zur Folge, dass trotzem kurz ein Leerer ToolTip aufflackert.
Gibt es eine empfohlene Methode?

- Mehrzeilige Texte funktionieren auf meinem Weg nicht.
Ist dies überhaupt mgl. / so vorgesehen, oder muss ich einen anderen Weg nutzen?
Bin aktuell noch nicht so richtig fündig geworden.

Vielen Dank schon jetzt.

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: ModeratorDieter (Moderator)
Datum: 11.09.15 12:20

Das OnMouseMove Ereignis stellt doch bereits ein ToolTip-Parameter zur Verfügung, d.h. du brauchst hier lediglich den ToolTip-Parameter mit dem gewünschten Text füllen. Die "allgemeine ToolTipText" Eigenschaft des Controls (diese besitzen ALLE Controls, da sie direkt von der Entwicklungsumgebung bereitgestellt werden) ist die absolute falsche Wahl.

Also so:
Private Sub Grid1_OnMouseMove(ByVal nRow As Long, ByVal nCol As Long, _
  ByVal Button As Integer, ByVal Shift As Integer, sToolTip As String)
 
  With Grid1
    ' Abfrage...
    If ... Then
      sToolTip = "Zeile 1" & vbCrLf & "Zeile 2"
    Else
      sToolTip = ""
    End If
  End With
End Sub

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Woellmi
Datum: 11.09.15 12:54

Hi Dieter,

ich habe es geahnt, den Parameter im Ereignisheader habe ich total
übersehen (Fehlinterpretiert, da in der Hilfe ja gesehen, aber nicht
sogleich verstanden). (.ToolTipText war irgendwie bekannter)

Jetzt klappt es ohne Nebeneffekte. Sieht prima aus.

Ich hatte noch kurz den Nebeneffekt, dass, sobald ich eine Zelle angeklickt habe,
zusätzlich ein "normaler" ToolTip resultierte (obwohl keine Zuweisung existiert),
aber dies nun auch weg.

Vielen Dank für den schnellen Hinweis.

Aber so ist dies mit dem "Wald vor lauter Bäumen" manchmal.

Also nochmal vielen Dank!

P.S. Ich habe Probleme mit den "Senden" Button im Formular, wenn ich vorher die Vorschau
eingesehen habe. (Button ist dann nicht mehr verfügbar "sichtbar aber Disabled))
Kann das am Browser liegen? (IE10+W8)

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Woellmi
Datum: 11.09.15 12:56

Hi Dieter,

ich meine im "P.S." natürlich das Formular im Forum.

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: ModeratorDieter (Moderator)
Datum: 11.09.15 13:18

Problem behoben - Danke für den Hinweis

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Woellmi
Datum: 11.09.15 13:34

Hi Dieter,

es klappt nun alles wunderbar. Jetzt taucht eine Zusatzfrage auf.

Ich bekomme den ToolTipText so angezeigt, wie ich das möchte, OK.
Ist es möglich den Inhalt des angezeigten Textes ohne die Maus zu bewegen
zu aktualisieren? (also Mauszeiger auf gewünschte Zelle stehen lassen und
ToolTipText verändert sich dynamisch)

Hintergrund:
Ich habe ein Datengrid, welches sich verändernde Messwerte anzeigt.
Nun gibt es auch solche Werte, die einer Bitauflösung bedürfen, um dem
Anwender eine "lesbare" Info zu geben.
Also ToolTipText mit Beschreibung + aktuellem Wert der Zelle befüllt. Alles OK
bisher. Nun soll aber der ToolTipText stehen bleiben (Maus bleibt nat. an Position)
und gemäß veränderlichem Zellinhalt aktualisiert werden.
Dazu müßte ein Zugriff auf das ToolTipObjekt (z.B. über sToolTip) möglich sein.
Geht dies überhaupt?

Also z.B. ein mgl. ToolTipInfo Ballon: (Die "1" Werte sollen erklärt werden)
_______________________________________
|Titel: Statusregisterinhalt           |
|Aktueller Wert: 0000 0010 0001 0001   |
|Bit-00 = 1  Bemerkung für dieses Bit  |
|Bit-04 = 1  Bemerkung für dieses Bit  |
|Bit-09 = 1  Bemerkung für dieses Bit  |
|  ____________________________________|
 V
Wäre toll wenn dies geht. Alternativ muss ich mir etwas anders ausdenken.

Vielen Dank schon jetzt.

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: ModeratorDieter (Moderator)
Datum: 11.09.15 19:20

Nein, das geht nicht.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Woellmi
Datum: 14.09.15 12:42

Hi Dieter,

danke für Deine Antwort.

Da werde ich mal versuchen eine andere Lösung zu finden.

Aktuell behelfe ich mich mit einem Trick in der Bedienung:
=> Aus dem aktuellen Verhalten wird nun ein Feature!

- Mit der Maus auf die gewünschte Zeile im Grid navigieren
- warten, bis der BalloonToolTipp erscheint
- Es wird nun der zum Zeitpunkt der Anzeige gültige Wert im Tooltip
angezeigt und/bzw. detailliert aufgeschlüsselt
- Will man den nach einer Wertänderung resultierenden neuen Wert aus
der DataGridZelle im ToolTip angezeigt bekommen, so bewegt man einfach
die Maus ein wenig (ein kleiner "Schups" genügt) und in der Folge wird das
Event erneut ausgelöst.
Da die Maus die aktuelle Zelle jedoch nicht verlässt, bleibt der
BalloonToolTip stehen aber eben mit dem wichtigen neuen Wert.
Dieser kann dann vom Anwender in aller Ruhe analysiert werden.
Mal sehen, wie dieses Vorgehen (nun als Feature verkauft angenommen wird.

Alternativ kann ich ja mal andere Wege probieren. Ein schöner
BalloonToolTip hat sich nur eben als "einfachste" Variante angeboten.

Also dann vielen Dank nochmal.

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Manfred X
Datum: 14.09.15 16:26

Hallo!

Kannst Du bei einer Änderung des Wertes Windows nicht
per Programmcode mitteilen, daß die Maus einen kleinen "Schubs"
benötigt?

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: sevDataGrid2 + BalloonToolTipText + ListMode 
Autor: Woellmi
Datum: 14.09.15 17:26

Hi ManfredX,

theoretisch ja, eine interessante Idee.
Doch bei der Überlegung zu meiner Absicht:

"Der Anwender soll eine Wertänderung nicht nur optisch sehen, sondern
auch analysieren können."

.. wäre eine Änderung u.U. nicht mehr lesbar, oder nur für "Schnellleser".
Eine sofortige Reaktion des ToolTip-Inhaltes hätte dann evtl. eine negative
"Lesbarkeitszeit" zur Folge.

Also ist die Frage, der ich mich gegenübersah:
1. geht eine automatische Aktualisierung prinzipiell mit dem ToolTip?
Ja/Nein (erste Idee hinsichtlich Umsetzbarkeit) => AW: Nein
2. Wenn ja, macht dies sinn? (hinsichtlich Deutbarkeit)
Hier hängt die Antwort natürlich vom Inhalt ab.

Ich will einen 16-Bit Wert Binär auflösen und mit Text versehen, damit
der Anwender jedes Einzelbit hinsichtlich seiner Funktion/Bedeutung deuten kann.
Dies geht ja und vom Platzbedarf ist es auch OK.

Im Grid sieht das dann auszugsweise z.B. so aus:
__________________________________________________
|Beschreibung................|....... Wert........| 
---------------------------------------------------
|Signalqualitätsregister.....|0000 0100 0000 0001 |
---------------------------------------------------
Jetz geht der Anwender mit der Maus auf die Werte-Zelle und bekommt einen
BalloonTip angezeigt: (Texte fiktiv ohne echte Bedeutung)

  __________________________________________________
 | [Icon] Beschreibung                              |
 | Wert: numerisch                                  |
 | Details:                                         |
 | BIT-00: TRUE => Error: Signal out of range!      |
 | BIT-10: TRUE => Error: Sensor-1 DC to low!       |
 |__   _____________________________________________|
    \ /
     V
Wenn ich so z.B. nur "1", nur "0" oder gar beides auswerte/anzeige,
ergeben sich u.U. ne Menge Infos, die man auch lesen können will. (Zeit)

Das der Wert sich im DataGrid (Zelle) ändert sieht der Anwender ja trotzdem.
Will er nun wissen, was der neue Wert bedeutet, bewegt er die Maus minimal.
Und dies dann wenn und wann der Anwender es will. (frozen Info)
Lasse ich die Maus nun automatisch die Position ändern, ist evtl. zu wenig
Zeit zum Lesen. Muss ich aber mal testen.

Aber ein interessanter Aspekt, dass mit dem automatischen Maus-Position Ändern.
Adererseits hatte ich schon überlegt, ob man den Zeiger auf "sToolTip" im Parameter-Set
des OnMouseMove Events nicht einfach irgendwo ablegt, damit dann in Abhängigkeit
von evtl. Wertänderungen über einen Zeiger der Inhalt "verbogen" werden kann.

Hier fehlt mir aber aktuell die Kenntnis bzw. Tests, ob der Zeiger konstant bleibt,
da ja das Datagridobjekt ja instanziert ist und ja auch bleibt.

Mir ging es bisher um Realisierungvarianten, und ich denke, dass die automatische
Aktualisierung für meinen aktuellen Fall nicht so geht wie angedacht, hat ja etwas gutes.
Ich muss nun nicht überlegen, wie ich die Aktualisierung für "Langsamleser" triggere

Danke für die Idee!

Tschaui
Woellmi

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel