Servus,
hat jemand sowas schon mal realisiert? Am besten wohl bei :enter()?
showBalloonTip() bei XbpPushButton()
Moderator: Moderatoren
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2120
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 70 Mal
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: showBalloonTip() bei XbpPushButton()
jedes XbPart hat eine iVar o:tooltipText welcher jedochWerner_Bayern hat geschrieben:hat jemand sowas schon mal realisiert? Am besten wohl bei :enter()?
vielmehr benutzt Alaska im Sample c:\ALASKA\XPPW32\Source\samples\solution\TOOLTIP\Tooltip.prg die iVar o:helpLink.Die Instanzvariable :toolTipText wird gegenwärtig nicht vom Laufzeitsystem verwendet.
gruss by OHR
Jimmy
Jimmy
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2120
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 70 Mal
Re: showBalloonTip() bei XbpPushButton()
Wird vom Laufzeitsystem aber nicht unterstützt.AUGE_OHR hat geschrieben:jedes XbPart hat eine iVar o:tooltipText
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- brandelh
- Foren-Moderator
- Beiträge: 15688
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: showBalloonTip() bei XbpPushButton()
aktuell nicht genutzt ist wohl der bessere Ausdruck.
Wenn man dort aber den gewünschten Text hinterlegt und diesen in eigenem Code nutzt, besteht die Möglichkeit, dass irgendwann einmal Xbase++ automatisch die Tooltips anzeigt.
Wenn man dort aber den gewünschten Text hinterlegt und diesen in eigenem Code nutzt, besteht die Möglichkeit, dass irgendwann einmal Xbase++ automatisch die Tooltips anzeigt.
Gruß
Hubert
Hubert
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2120
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 70 Mal
Re: showBalloonTip() bei XbpPushButton()
Hat das schon mal jemand erweitert? Mehrzeilig, schöneres Aussehen? Versch. Fonts im Tooltip?AUGE_OHR hat geschrieben:vielmehr benutzt Alaska im Sample c:\ALASKA\XPPW32\Source\samples\solution\TOOLTIP\Tooltip.prg die iVar o:helpLink.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: showBalloonTip() bei XbpPushButton()
JA.Werner_Bayern hat geschrieben:Hat das schon mal jemand erweitert? Mehrzeilig, schöneres Aussehen? Versch. Fonts im Tooltip?AUGE_OHR hat geschrieben:vielmehr benutzt Alaska im Sample c:\ALASKA\XPPW32\Source\samples\solution\TOOLTIP\Tooltip.prg die iVar o:helpLink.
es geht dabei ja "nur" um das malen
Code: Alles auswählen
METHOD MagicHelp:PaintTheTip( cText, aPos )
LOCAL aAreaAttr, aStringAttr
LOCAL oPS
LOCAL aPoints
LOCAL aTest
LOCAL nTest := 0
LOCAL aSize := { 0, 0 }
// neu dazu
LOCAL aRows := AtInside( ";", cText )
LOCAL i, iMax
LOCAL nXright
LOCAL nXleft
LOCAL nYtop
LOCAL nYbottom
iMax := LEN( aRows )
FOR i := 1 TO iMax
oPS := ::oTip:lockPS()
aTest := GraQueryTextBox( oPS, aRows[ i ] )
::oTip:unlockPS()
IF aTest[ 3, 1 ] > nTest
nTest := aTest[ 3, 1 ]
aPoints := ACLONE( aTest )
ENDIF
NEXT
nXright := aPoints[ 3, 1 ]
nXleft := aPoints[ 1, 1 ]
aSize[ 1 ] := nXright - nXleft
nYtop := aPoints[ 1, 2 ]
nYbottom := aPoints[ 2, 2 ]
aSize[ 2 ] := nYtop - nYbottom
//
// hier Höhe Festlegen
//
IF cText = "(nil)"
aPos[ 2 ] -= 30
ELSEIF iMax = 1
aPos[ 2 ] -= 30
ELSE
aPos[ 2 ] -= aSize[ 2 ] * (iMax-1)
ENDIF
//
// jetzt die Box immer mittig unter dem Cursor
//
::oTip:setPosAndSize( { aPos[ 1 ] - ( aSize[ 1 ] / 2 ), aPos[ 2 ] }, { aSize[ 1 ], aSize[ 2 ] * iMax }, .F. )
oPS := ::oTip:lockPS()
aAreaAttr := ARRAY( GRA_AA_COUNT )
aAreaAttr[ GRA_AA_COLOR ] := XBPSYSCLR_INFOBACKGROUND
GraSetAttrArea( oPS, aAreaAttr )
GraBox( oPS, { 0, 0 }, { aSize[ 1 ] - 1, ( aSize[ 2 ] * iMax ) - 1 }, GRA_OUTLINEFILL )
aStringAttr := ARRAY( GRA_AS_COUNT )
aStringAttr[ GRA_AS_COLOR ] := XBPSYSCLR_INFOTEXT
GRASETATTRSTRING( oPS, aStringAttr )
nTest := INT( ( aSize[ 2 ] - 1 ) / iMax )
//
// die ganze Schleife
//
FOR i := 1 TO iMax
IF i = imax
aStringAttr := ARRAY( GRA_AS_COUNT )
aStringAttr[ GRA_AS_COLOR ] := GRA_CLR_DARKBLUE
GRASETATTRSTRING( oPS, aStringAttr )
IF i = 1
GraStringAt( oPS, { 4, 4 }, aRows[ i ] )
ELSE
GraStringAt( oPS, { 4, INT( ( nTest + 4 + 4 + 4 ) * ( i - 1 ) ) + 8 }, aRows[ i ] )
ENDIF
ELSE
GraStringAt( oPS, { 4, INT( ( nTest + 4 + 4 + 4 ) * ( i - 1 ) ) + 4 }, aRows[ i ] )
ENDIF
NEXT
::oTip:unLockPS( oPS )
RETURN ( SELF )
auf langsamen PC können "unkontrollierte" Thread Probleme machen wenn gleichzeitig im Main "umfangreiche" Aktionen ablaufen.
verwendet man nun "in" einem Thread auch noch Magichelp dann kann es kritisch werden.
die Verwendung von einer DBF ( MHELP.DBF ) als Quelle für Magichelp ist auch nicht ideal weil viel zu langsam.
wenn der User von einem Xbpart zum nächsten wechselt funktioniert es mit dem Keyboard bei TAB
aber mit der Maus könnte ich in der Zeit über mehrere XbParts gefahren sein.
IMHO sollte man die DBF in ein Array schaufeln und das als Quelle für Magichelp benutzen.
p.s. das ganze funktioniert nur wenn in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
"EnableBalloonTips" auf 1 steht
gruss by OHR
Jimmy
Jimmy