Aktuelle Zeit: 19.10.2019 14:13

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ListIconGadget - ToolTip mit Zeilenumbruch
BeitragVerfasst: 28.09.2015 15:34 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Hola,

ich habe ein ListIconGadget und möchte gerne ToolTips auf die Einträge setzen.
Es ist per WinAPI möglich, ToolTips bei langen Einträgen per Mouseover automatisch anzuzeigen:
Code:
EnableExplicit

If OpenWindow(0, 0, 0, 250, 200, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), "", 200, 0)
 
  AddGadgetItem(1, -1, "Überall dieselbe alte Leier.  Das Layout ist fertig, der Text lässt auf sich warten.", 0, 0)
  AddGadgetItem(1, -1, "Überall dieselbe alte Leier. " + Chr(13) + " Das Layout ist fertig, der Text lässt auf sich warten.", 0, 0)
 
  SendMessage_(GadgetID(1), #LVM_SETEXTENDEDLISTVIEWSTYLE, 0, #LVS_EX_LABELTIP)
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf


Nun möchte ich gerne Zeilenumbrüche in ToolTips einfügen, aber leider werden die Zeilenumbrüche nicht angezeigt. Weiß jemand, wie man trotzdem einen mehrzeiligen ToolTip-Text anzeigen lassen kann?

Alternativ gibt es auch: http://www.rsbasic.de/aktualisierung/wi ... umbruch.pb
Nur habe ich das Problem, dass ich die Item-ID vom ListIconGadget nicht kenne.

Ich hoffe, jemand kann mir helfen und vielen Dank im Voraus. :)

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget - ToolTip mit Zeilenumbruch
BeitragVerfasst: 28.09.2015 23:40 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Da ich wirklich keine Lösung fand, erstelle ich nun mein eigenes ToolTip-Fenster. So geht es aus:
Code:
EnableExplicit

Global ListIconProc
Global ToolTipWindow
Global LastListIconItemX
Global LastListIconItemY

Procedure CreateToolTipWindow(Window, Gadget)
  Protected TOOLINFO.TOOLINFO
 
  ToolTipWindow = CreateWindowEx_(0, #TOOLTIPS_CLASS, 0, #WS_POPUP | #TTS_ALWAYSTIP, 0, 0, 0, 0, WindowID(Window), 0, GetModuleHandle_(0), 0)
 
  TOOLINFO.TOOLINFO\cbSize = SizeOf(TOOLINFO)
  TOOLINFO\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  TOOLINFO\hwnd = WindowID(Window)
  TOOLINFO\uId = GadgetID(Gadget)
  TOOLINFO\lpszText = @""
  SendMessage_(ToolTipWindow, #TTM_ADDTOOL, 0, TOOLINFO)
  SendMessage_(ToolTipWindow, #TTM_ACTIVATE, 0, 0)
  SendMessage_(ToolTipWindow, #TTM_SETMAXTIPWIDTH, 0, 1024)
  SendMessage_(ToolTipWindow, #TTM_SETDELAYTIME, #TTDT_INITIAL, 0)
  SendMessage_(ToolTipWindow, #TTM_SETDELAYTIME, #TTDT_AUTOPOP, 30000)
  SendMessage_(ToolTipWindow, #TTM_SETMAXTIPWIDTH, 0, 500)
 
EndProcedure

Procedure ChangeToolTipWindow(Window, Gadget, Text.s)
  Protected TOOLINFO.TOOLINFO
 
  TOOLINFO.TOOLINFO\cbSize = SizeOf(TOOLINFO)
  TOOLINFO\uFlags = #TTF_IDISHWND | #TTF_SUBCLASS
  TOOLINFO\hWnd = WindowID(Window)
  TOOLINFO\uId = GadgetID(Gadget)
  TOOLINFO\lpszText = @Text
  SendMessage_(ToolTipWindow, #TTM_SETTOOLINFO, 0, TOOLINFO)
 
EndProcedure

Procedure ListIconProc(hWnd, uMsg, wParam, lParam)
  Protected LVHITTESTINFO.LVHITTESTINFO
 
  Select uMsg
    Case #WM_MOUSELEAVE
      SendMessage_(ToolTipWindow, #TTM_ACTIVATE, 0, 0)
      LastListIconItemX = -1
    Case #WM_MOUSEMOVE
      LVHITTESTINFO\pt\x = lparam & $FFFF
      LVHITTESTINFO\pt\y = lparam >> 16
      SendMessage_(hwnd, #LVM_SUBITEMHITTEST, 0, LVHITTESTINFO)
     
      If LVHITTESTINFO\iItem = -1
        SendMessage_(ToolTipWindow, #TTM_ACTIVATE, 0, 0)
        LastListIconItemX = -1
      Else
        If LastListIconItemX <> LVHITTESTINFO\iItem Or LastListIconItemY <> LVHITTESTINFO\iSubItem
          SendMessage_(ToolTipWindow, #TTM_ACTIVATE, 1, 0)
          SendMessage_(ToolTipWindow, #TTM_POPUP, 0, 0)
          ChangeToolTipWindow(0, GetProp_(hWnd, "PB_ID"), GetGadgetItemText(GetProp_(hWnd, "PB_ID"), LVHITTESTINFO\iItem, LVHITTESTINFO\iSubItem))
         
          LastListIconItemX = LVHITTESTINFO\iItem
          LastListIconItemY = LVHITTESTINFO\iSubItem
        EndIf
      EndIf
     
  EndSelect
 
  ProcedureReturn CallWindowProc_(ListIconProc, hWnd, uMsg, wParam, lParam)
EndProcedure

If OpenWindow(0, 0, 0, 250, 200, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(1, 0, 0, WindowWidth(0), WindowHeight(0), "Spalte", 200, 0)
 
  AddGadgetItem(1, -1, "Überall dieselbe alte Leier. " + Chr(13) + "Das Layout ist fertig, der Text lässt auf sich warten.", 0, 0)
  AddGadgetItem(1, -1, "Das Layout ist fertig, der Text lässt auf sich warten. " + Chr(13) + "Überall dieselbe alte Leier.", 0, 0)
 
  CreateToolTipWindow(0, 1)
  ListIconProc = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @ListIconProc())
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ListIconGadget - ToolTip mit Zeilenumbruch
BeitragVerfasst: 29.09.2015 18:44 
Offline

Registriert: 13.05.2010 09:26
Wohnort: Berlin
Cool. 8)
Vielen Dank, dass Du die Lösung hier gepostet hast!

_________________
Dieser Satz ist falsch.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye