[B+] ToolTips für Canvas Elemente

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

EPS

Betreff: [B+] ToolTips für Canvas Elemente

BeitragFr, Nov 11, 2005 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier meine Lösung um ToolTips für Canvas Elemente zu erzeugen. Nicht gerade die eleganteste Lösung, aber eine Lösung.

Code: [AUSKLAPPEN]
;==============================================================================================================
; ToolTip für Canvas Elemente (by East-Power-Soft) für Blitz+.
;
; Benötigt die WinAPI Funktion SetWindowPos. Das muß in die user32.decls:
;
; .lib "user32.dll"
; api_SetWindowPos% (hwnd%, hWndInsertAfter%, x%, y%, cx%, cy%, wFlags%) : "SetWindowPos"
;
;==============================================================================================================
Global tooltip                              ;--> Handle des ToolTip Fensters
Global tooltipcnv                              ;--> Canvas des ToolTip
Global showtip                              ;--> Flag für ToolTip
Global clr_tooltip_back   = $FFCF91                  ;--> Tooltip Hintergrundfarbe
Global clr_tooltip_text   = $000000                  ;--> Tooltip Textfarbe
Global clr_tooltip_border = $816A47                  ;--> Tooltip Rahmenfarbe
Global tooltipfont = LoadFont("Tahoma.ttf",13,1)         ;--> Schriftart des ToolTip
Global tooltiptimer = CreateTimer(1)


;--> Ein Fenster
Global hWnd = CreateWindow("ToolTips",300,200,500,150,Desktop())
;--> 2 Canvas Elemente zur Demonstration
Global cnv1 = CreateCanvas(2,20,50,50,hWnd)
Global cnv2 = CreateCanvas(100,20,50,50,hWnd)


;--> Das ToolTipfenster (erzeugen, verstecken, 'AlwaysOnTop' setzen und Fokus zurück auf Fenster)
tooltip = CreateWindow("",0,0,10,10,hWnd,0): HideGadget tooltip
api_SetWindowPos(QueryObject(tooltip,1),-1,0,0,0,0,$3)
tooltipcnv = CreateCanvas(0,0,1,1,tooltip)
ActivateGadget hWnd


;--> Los gehts
Repeat
   event = WaitEvent()
   If event Then
      Select event
         Case $803: End
         ;--> MouseEnter, Wenn Maus über einem Canvas, aktiviere ToolTip
         Case $205
            Select EventSource()
               Case cnv1: ShowToolTip("Dieser Tooltip ist nur für Canvas Elemente.")
               Case cnv2: ShowToolTip("nicht die Eleganteste Lösung, aber eine Lösung.")
            End Select
         ;--> MouseLeave, beim verlassen eines Canvas wird der ToolTip deaktiviert
         Case $206
            HideToolTip()
         ;--> TimerTick, wenn ToolTip länger wie 4 Sek. angezeigt, deaktiviere ihn.
         Case $4001
            If showtip Then If TimerTicks(tooltiptimer) > 4 Then HideToolTip()
      End Select
   End If
Forever


Function ShowToolTip(tip$="")
;==============================================================================================================
; Tooltip aktivieren
;==============================================================================================================
   If Not(showtip) Then
   
      showtip = True
   
      SetBuffer CanvasBuffer(tooltipcnv)
      SetFont tooltipfont
   
      Local width = StringWidth(tip$) + 10
      Local height = FontHeight() + 2

      SetGadgetShape tooltip,MouseX()+15,MouseY()-height-2,width,height
      If tooltipcnv Then FreeGadget tooltipcnv
      tooltipcnv = CreateCanvas(0,0,width,height,tooltip)
   
      SetBuffer CanvasBuffer(tooltipcnv)
      Color 0,0,clr_tooltip_back
      Rect 0,0,width,height,1
      Color 0,0,clr_tooltip_border
      Rect 0,0,width,height,0
      SetFont tooltipfont
      Color 0,0,clr_tooltip_text
      Text width/2,height/2,tip$,1,1
      FlipCanvas tooltipcnv

      ShowGadget tooltip
      ActivateGadget hWnd

      ResetTimer tooltiptimer

   End If
End Function


Function HideToolTip()
;==============================================================================================================
; ToolTip deaktivieren
;==============================================================================================================
   HideGadget tooltip
   showtip = False
End Function
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group