tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1044
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Hallo Leute,

    wie ihr evtl. wisst, ist es praktisch unmöglich, mit dem Standard ToolTip-Property was anderes als reinen Text auszugeben. Soweit kein Problem, nur benötige ich eines, welches Adresse inkl. Strasse etc. ausgibt, und da benötige ich Zeilenumbrüche.

    Laut Onkel Google ist es tatsächlich nicht so leicht möglich, ToolTips mit Zeilenumbrüchen darzustellen. Leider sind alle gefundene Lösungen entweder unbefriedigend oder passen nicht.

    Kennt jemand einen Weg, wie man wirklich nur das ToolTip simulieren kann?


    Vielen Dank im Voraus für alle Antworten.


    Müller Matthias
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Hab grad kein VB sondern nur MS Access zur Hand. Dort geht es mit vbcrlf
    Code :
    1
    
    Me.MyControl.ControlTipText = "Hallo" & vbCrLf & "Welt"
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Kann jetzt keinen Screenshot machen, aber mit
    Code :
    1
    
    Command1.ToolTipText = "bla" & vbCrLf & "bla"
    oder ähnlichem geht es definitiv nicht.
     

  4. #4
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Naja habs anders gelöst.

    Danke trotzdem für die Antwort.
     

  5. #5
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Da es scheinbar so schwierig ist das zu lösen, wäre es viellicht ganz gut wenn du sagst wie deine Lösung jetzt aussieht.

    Vielleicht hat ja mal jemand anderes auch das Problem!
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  6. #6
    DrMueller DrMueller ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Beiträge
    396
    Naja die Lösung ist neben net schön, man muss auf den Datensatz klicken, damit's erscheint.
    Ist glaube ich original aus vbArchiv, wurde aber eben bei uns bereits in einer DLL verarbeitet.

    Hier der komplette Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    
    Option Explicit
     
    Private Declare Function GetDesktopWindow Lib "user32" () As Long
     
    ' Konstanten zum Erzeugen des ToolTip-Fensters
    Private Const WS_POPUP = &H80000000
    Private Const TTS_ALWAYSTIP = &H1
    Private Const TTS_NOPREFIX = &H2
    Private Const TTS_BALLOON = &H40
    Private Const CW_USEDEFAULT = &H80000000
     
    ' Konstanten zum Ändern/Erstellen der ToolTips
    Private Const WM_USER = &H400
    Private Const TTM_SETDELAYTIME = WM_USER + 3
    Private Const TTM_ADDTOOL = WM_USER + 4
    Private Const TTM_SETTIPBKCOLOR = WM_USER + 19
    Private Const TTM_SETTIPTEXTCOLOR = WM_USER + 20
    Private Const TTM_SETMAXTIPWIDTH = WM_USER + 24
    Private Const TTM_SETTITLE = WM_USER + 32
     
    ' Konstanten zum Setzen der Zeiten, nachdem der ToolTip
    ' erscheint bzw. wieder verschwindet
    Private Const TTDT_AUTOPOP = 2
    Private Const TTDT_INITIAL = 3
     
    ' Konstanten, welche über das Aussehen und das Verhalten
    ' des ToolTip-Fensters bestimmen
    Private Const TTF_IDISHWND = &H1
    Private Const TTF_CENTERTIP = &H2
    Private Const TTF_SUBCLASS = &H10
     
    ' Konstanten zum Setzen der Schriftart des ToolTips
    Private Const WM_SETFONT = &H30
    Private Const LOGPIXELSY = 90
     
    ' Verschiedene Typdeklarationen für die API-Funktionen
    Private Type RECT
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
    End Type
     
    Private Type TOOLINFO
      cbSize As Long
      uFlags As Long
      HWND As Long
      uId As Long
      cRect As RECT
      hinst As Long
      lpszText As String
    End Type
     
    ' API-Funktionsdeklarationen
    Private Declare Function CreateWindowEx Lib "user32.dll" _
      Alias "CreateWindowExA" ( _
      ByVal lExStyle As Long, _
      ByVal strClassName As String, _
      ByVal strWindowName As String, _
      ByVal lStyle As Long, _
      ByVal x As Long, _
      ByVal y As Long, _
      ByVal lWidth As Long, _
      ByVal lHeight As Long, _
      ByVal hWndParent As Long, _
      ByVal hMenu As Long, _
      ByVal hInstance As Long, _
      lParam As Any) As Long
     
    Private Declare Function DestroyWindow Lib "user32.dll" ( _
      ByVal HWND As Long) As Long
     
    Private Declare Function GetClientRect Lib "user32.dll" ( _
      ByVal HWND As Long, _
      lpRect As RECT) As Long
     
    Private Declare Function SendMessage Lib "user32.dll" _
      Alias "SendMessageA" ( _
      ByVal HWND As Long, _
      ByVal wMsg As Long, _
      ByVal wParam As Long, _
      lParam As Any) As Long
     
    Private Declare Function SendMessageLong Lib "user32.dll" _
      Alias "SendMessageA" ( _
      ByVal HWND As Long, _
      ByVal wMsg As Long, _
      ByVal wParam As Long, _
      ByVal lParam As Long) As Long
     
    Private Declare Function SendMessageStr Lib "user32.dll" _
      Alias "SendMessageA" ( _
      ByVal HWND As Long, _
      ByVal wMsg As Long, _
      ByVal wParam As Long, _
      ByVal lParam As String) As Long
     
    Private Declare Function GetDC Lib "user32.dll" ( _
      ByVal HWND As Long) As Long
     
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
     
    Private Declare Function CreateFont Lib "gdi32.dll" _
      Alias "CreateFontA" ( _
      ByVal lHeight As Long, _
      ByVal lWidth As Long, _
      ByVal lEscapement As Long, _
      ByVal lOrientation As Long, _
      ByVal lBold As Long, _
      ByVal lItalic As Long, _
      ByVal lUnderline As Long, _
      ByVal lStrikethrough As Long, _
      ByVal lCharset As Long, _
      ByVal lOutputPrecision As Long, _
      ByVal lClipPrecision As Long, _
      ByVal lQuality As Long, _
      ByVal lPitchAndFamily As Long, _
      ByVal strFontName As String) As Long
     
    Private Declare Function GetDeviceCaps Lib "gdi32.dll" ( _
      ByVal hDC As Long, _
      ByVal nIndex As Long) As Long
     
    Private Declare Function MulDiv Lib "kernel32.dll" ( _
      ByVal lNumber As Long, _
      ByVal lNumerator As Long, _
      ByVal lDenominator As Long) As Long
     
    ' Membervariablen der Klasse
    ' Window-Handle des erzeugten ToolTip-Fensters
    Private m_hWnd As Long
     
    ' Max. erlaubte Breite des ToolTip-Fensters
    Private m_lMaxWidth As Long
     
    ' Aufzählung für das Icon im ToolTip
    Public Enum enumIcon
      NoIcon = 0
      InfoIcon = 1
      WarningIcon = 2
      ErrorIcon = 3
    End Enum
     
    ' Initialisierung
    Private Sub Class_Initialize()
      InitCommonControls
      m_lMaxWidth = 300
    End Sub
     
    ' Beenden
    Private Sub Class_Terminate()
      If m_hWnd <> 0 Then DestroyWindow m_hWnd
    End Sub
     
    ' Setzen der maximalen Breite des ToolTip-Fensters in Pixel
    Public Property Let MaxWidth(ByVal lMaxWidth As Long)
      m_lMaxWidth = lMaxWidth
      SendMessageLong m_hWnd, TTM_SETMAXTIPWIDTH, 0, _
        m_lMaxWidth
    End Property
     
    ' Setzen der Zeit in Millisekunden, wie lange der
    ' ToolTip angezeigt werden soll.
    Public Property Let VisibleTime(ByVal lTime As Long)
      If lTime > 32767 Then lTime = 32767
      If lTime < 0 Then lTime = 0
        
      SendMessageLong m_hWnd, TTM_SETDELAYTIME, _
        TTDT_AUTOPOP, lTime
    End Property
     
    ' Setzen der Zeit in Millisekunden, die vergeht, bis
    ' der ToolTip angezeigt werden soll.
    Public Property Let DelayTime(ByVal lTime As Long)
      If lTime > 32767 Then lTime = 32767
      If lTime < 0 Then lTime = 0
        
      SendMessageLong m_hWnd, TTM_SETDELAYTIME, _
        TTDT_INITIAL, lTime
    End Property
     
    ' Setzen der Text- und Rahmenfarbe für das ToolTip-
    ' Fenster.
    Public Property Let ToolTipTextColor(ByVal lColor As Long)
      SendMessageLong m_hWnd, TTM_SETTIPTEXTCOLOR, lColor, 0
    End Property
     
    ' Hintergrundfarbe für das ToolTip-Fenster
    Public Property Let ToolTipBackColor(ByVal lColor As Long)
      SendMessageLong m_hWnd, TTM_SETTIPBKCOLOR, lColor, 0
    End Property
     
    ' Schriftart für den Text im ToolTip festlegen
    ' Erwartet wird ein Standard Font-Objekt
    Public Property Set Font(ByVal objFont As StdFont)
      Dim hFont As Long
      Dim lHeight As Long
      Dim lItalic As Long
      Dim lBold As Long
      Dim lUnderline As Long
      Dim lStrikethrough As Long
      Dim lDefaultLocaleID As Long
      Dim lRet As Long
      Dim strCodePage As String * 6
      Dim lCodePage As Long
      
      If objFont Is Nothing Then Exit Property
      
      ' Um dem ToolTip-Fenster eine andere Schriftart
      ' unterzujubeln, gibt es leider keine Eigenschaft,
      ' die es ermöglicht, einfach so einen Schriftnamen
      ' oder eine Schriftgröße an das Window-Handle zu
      ' senden. Wir müssen dazu mit der API-Funktion
      ' CreateFont einen Font-Handle erzeugen und diesen
      ' mit Hilfe der Nachricht WM_SETFONT an das ToolTip-
      ' Fenster senden.
     
      ' Um mit der API-Funktion CreateFont einen korrekten
      ' Handle für einen Font zu erzeugen, muss die Größe
      ' des Fonts in Pixel auf dem Ausgabemedium
      ' umgerechnet werden. Dazu wird die untenstehende
      ' Formel verwendet, welche in der MSDN mehrfach zu
      ' finden ist.
      
      lHeight = -MulDiv(objFont.Size, _
        GetDeviceCaps(GetDC(m_hWnd), LOGPIXELSY), 72)
      
      ' Für die Funktion CreateFont müssen die
      ' Schriftattribute "Fett", "Kursiv", "Unterstrichen"
      ' und "Durchgestrichen" noch umdefiniert werden.
      ' Dabei kommt dem Attribut "Fett" eine besondere
      ' Bedeutung zu, da man hier sehr viele verschiedene
      ' Werte zwischen 100 und 900 angeben kann. Dabei
      ' entspricht ein Wert von 400 ungefähr dem
      ' Normaldruck und ein Wert von 700 entspricht etwa
      ' dem Fettdruck.
      
      lItalic = IIf(objFont.Italic, 1&, 0&)
      lBold = IIf(objFont.Bold, 700&, 400&)
      lUnderline = IIf(objFont.Underline, 1&, 0&)
      lStrikethrough = IIf(objFont.Strikethrough, 1&, 0&)
     
      ' Nun kann endlich die erforderliche Schrift mit der
      ' Funktion CreateFont erzeugt werden und mit
      ' SendMessageLong an das ToolTip-Fenster geschickt
      ' werden.
      
      hFont = CreateFont(lHeight, 0&, 0&, 0&, lBold, _
        lItalic, lUnderline, lStrikethrough, _
        0&, 0&, 0&, 0&, 0&, objFont.Name)
     
      lRet = SendMessageLong(m_hWnd, WM_SETFONT, hFont, 1&)
    End Property
     
     
    ' Erzeugt das ToolTip-Fenster
    Public Sub Create(ByVal hWndParent As Long, _
      Optional ByVal bAlwaysTip As Boolean = True, _
      Optional ByVal bBalloonTip As Boolean = True)
     
      Dim nFlags As Long
      Dim lPar As Long
      lPar = GetDesktopWindow()
     
      ' Wir möchten kein normales Fenster :-)
      nFlags = WS_POPUP Or TTS_NOPREFIX
      
      ' Falls der ToolTip auch bei deaktiviertem
      ' Control erscheinen soll...
      If bAlwaysTip Then nFlags = nFlags Or TTS_ALWAYSTIP
      
      ' Falls ein "moderner" Balloon-ToolTip erwünscht...
      If bBalloonTip Then nFlags = nFlags Or TTS_BALLOON
     
      ' Window-Handle erstellen
    '  m_hWnd = CreateWindowEx(0, "tooltips_class32", 0, _
        nFlags, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, _
        CW_USEDEFAULT, hWndParent, 0, App.hInstance, 0)
     
      m_hWnd = CreateWindowEx(0, "tooltips_class32", 0, _
        nFlags, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, _
        CW_USEDEFAULT, lPar, 0, App.hInstance, 0)
     
      ' maximale Fensterbreite festlegen
      SendMessageLong m_hWnd, TTM_SETMAXTIPWIDTH, 0, m_lMaxWidth
      
    End Sub
     
    ' ToolTip zerstören
    Public Sub Destroy()
      DestroyWindow m_hWnd
    End Sub
     
    Public Sub AddControl(ByVal objControl As Object, _
      ByVal strCaption As String, _
      Optional ByVal bCenterToolTip As Boolean = False)
     
      Dim udtToolInfo As TOOLINFO
        
      With udtToolInfo
        GetClientRect objControl.HWND, .cRect
        .HWND = objControl.HWND
        .uFlags = TTF_IDISHWND Or TTF_SUBCLASS
        If bCenterToolTip Then
          .uFlags = .uFlags Or TTF_CENTERTIP
        End If
        .uId = objControl.HWND
        .lpszText = strCaption
        .cbSize = Len(udtToolInfo)
      End With
        
      SendMessage m_hWnd, TTM_ADDTOOL, 0, udtToolInfo
    End Sub
     
    ' ToolTip Icon und Titeltext festlegen
    Public Sub SetToolTipTitle(ByVal strTitle As String, _
      ByVal iTitleIcon As enumIcon)
      
      SendMessageStr m_hWnd, TTM_SETTITLE, _
        iTitleIcon, strTitle
    End Sub
     

Ähnliche Themen

  1. SWT: Mehrzeiliges Textfeld
    Von KlaDi im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 31.01.07, 07:56
  2. Mehrzeiliges Formular
    Von red_devil im Forum PHP
    Antworten: 4
    Letzter Beitrag: 22.06.05, 21:22
  3. Mehrzeiliges ListView-Item
    Von MAN im Forum VisualStudio & MFC
    Antworten: 19
    Letzter Beitrag: 03.04.04, 10:12
  4. Mehrzeiliges Textfeld
    Von Kiramusu im Forum PHP
    Antworten: 3
    Letzter Beitrag: 28.09.03, 18:41
  5. mehrzeiliges Emailscript?
    Von dezign im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.10.01, 07:56