ToolTipText & "PRESS ENTER"
От: maximum28  
Дата: 30.12.03 07:44
Оценка:
Как сделать в ToolTipText'е жесткий разрыв строк? Ни "... & Chr$(13) & ...", ни "... & vbCrLf & ..." не помогает.
Re: ToolTipText & "PRESS ENTER"
От: black hermit Россия  
Дата: 30.12.03 08:39
Оценка:
Здравствуйте, maximum28, Вы писали:

M>Как сделать в ToolTipText'е жесткий разрыв строк? Ни "... & Chr$(13) & ...", ни "... & vbCrLf & ..." не помогает.


По всему выходит, что никак (стандартными VB методами)
Можно попробовать инициализировать CommonControls вручную и самому создавать ToolTips с необходимыми параметрами, но сие есть боль головная.
The darkness around me
Shores of solar sea
Oh how i wish to go down with the sun....
Re: ToolTipText & "PRESS ENTER"
От: mik1  
Дата: 30.12.03 10:45
Оценка:
Здравствуйте, maximum28, Вы писали:

M>Как сделать в ToolTipText'е жесткий разрыв строк? Ни "... & Chr$(13) & ...", ни "... & vbCrLf & ..." не помогает.


Если такое нужно сделать в одном-двух местах, то имеет смысл создать Label, раскрасить ее в цвет системного тултипа, установить ее нужного размера (используя методы TextWidth и TextHeight форм или PictureBoxа), сделать ее топмост окном, и таскать в обработчике MouseMove по этому контролу...
Работы много, в принципе, но разок когда-то такое делал...
Re[2]: ToolTipText & "PRESS ENTER"
От: black hermit Россия  
Дата: 30.12.03 11:01
Оценка:
Здравствуйте, mik1, Вы писали:

M>Здравствуйте, maximum28, Вы писали:


M>>Как сделать в ToolTipText'е жесткий разрыв строк? Ни "... & Chr$(13) & ...", ни "... & vbCrLf & ..." не помогает.


M>Если такое нужно сделать в одном-двух местах, то имеет смысл создать Label, раскрасить ее в цвет системного тултипа, установить ее нужного размера (используя методы TextWidth и TextHeight форм или PictureBoxа), сделать ее топмост окном, и таскать в обработчике MouseMove по этому контролу...

M>Работы много, в принципе, но разок когда-то такое делал...

Вряд ли это выход... Во первых возня с ZOrder, во вторых обработка событий и таймирование, в третьих Label не выйдет за пределы окна, а чато это очень необходимо... ИМХО, овчинка выделки не стоит... Хотя, если очень надо, то можно и извратиться
The darkness around me
Shores of solar sea
Oh how i wish to go down with the sun....
Re[3]: ToolTipText & "PRESS ENTER"
От: mik1  
Дата: 30.12.03 11:03
Оценка:
Здравствуйте, black hermit, Вы писали:

BH>Здравствуйте, mik1, Вы писали:


M>>Здравствуйте, maximum28, Вы писали:


M>>>Как сделать в ToolTipText'е жесткий разрыв строк? Ни "... & Chr$(13) & ...", ни "... & vbCrLf & ..." не помогает.


M>>Если такое нужно сделать в одном-двух местах, то имеет смысл создать Label, раскрасить ее в цвет системного тултипа, установить ее нужного размера (используя методы TextWidth и TextHeight форм или PictureBoxа), сделать ее топмост окном, и таскать в обработчике MouseMove по этому контролу...

M>>Работы много, в принципе, но разок когда-то такое делал...

BH>Вряд ли это выход... Во первых возня с ZOrder, во вторых обработка событий и таймирование, в третьих Label не выйдет за пределы окна, а чато это очень необходимо... ИМХО, овчинка выделки не стоит... Хотя, если очень надо, то можно и извратиться


Ну если Label не вылезет, то формочка с BorderStyle=0 — очень даже вылезет. Все остальное так же, как в первом посте. Так что читсо VB-ными средставми это реализуемо. Но писать прилично придется.
Re[2]: ToolTipText & "PRESS ENTER"
От: al Россия  
Дата: 30.12.03 19:58
Оценка: 1 (1) +1
Здравствуйте, mik1, Вы писали:

M>Если такое нужно сделать в одном-двух местах, то имеет смысл создать Label ... сделать ее топмост окном...


Label — вообще не окно


Re: ToolTipText & "PRESS ENTER"
От: adontz Грузия http://adontz.wordpress.com/
Дата: 31.12.03 00:41
Оценка:
Здравствуйте, maximum28, Вы писали:

Пока не укажешь максимальную ширину переносы строк через 13/10 не работают.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: ToolTipText & "PRESS ENTER"
От: mik1  
Дата: 31.12.03 06:31
Оценка:
Здравствуйте, al, Вы писали:

al>Здравствуйте, mik1, Вы писали:


M>>Если такое нужно сделать в одном-двух местах, то имеет смысл создать Label ... сделать ее топмост окном...


al>Label — вообще не окно


Спасибо за предновогоднее просвещение.
Действительно, Label — это просто текст, выводимый на канву родителя.
Что-то перед НГ стормозил. Но если вместо Label взять TextBox или Form, то все-таки все будет работать.
Re[2]: ToolTipText & "PRESS ENTER"
От: maximum28  
Дата: 31.12.03 07:33
Оценка:
Здравствуйте, adontz, Вы писали:

A>Пока не укажешь максимальную ширину переносы строк через 13/10 не работают.


Максимальную ширину чего и где?
Re[3]: ToolTipText & "PRESS ENTER"
От: adontz Грузия http://adontz.wordpress.com/
Дата: 31.12.03 11:03
Оценка:
Здравствуйте, maximum28, Вы писали:

M>Максимальную ширину чего и где?


Ну я в VB не силён, но на уровне WinAPI у tooltip есть максимальная ширина. Если текст выходит за эту ширину он переносится на следующую строчку. По умолчанию (сразу после создания) там максимальная ширина не ограничена. Так вот если максимальная ширина не ограничена, то и жёсткие переносы не работают. Оконное сообщение для этого дела TTM_SETMAXTIPWIDTHб скорее всего и proprty соответствующий будет.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: ToolTipText & "PRESS ENTER"
От: Frostbitten Россия  
Дата: 31.12.03 15:06
Оценка:
Здравствуйте, adontz, Вы писали:

A>Ну я в VB не силён, но на уровне WinAPI у tooltip есть максимальная ширина.

А в VB тултипы не из комона — у них свои, и TTM_SETMAXTIPWIDTH на них не действует, равно как и все другие TTM_. Можно конечно адски просабклассить, но глядя на код, который хотя бы просто находит hwnd vb-шного тултипа, сразу кисло становиться — проще создать ручками тултип из конома.
Re[5]: ToolTipText & "PRESS ENTER"
От: promsoft Россия www.promsoft.ru
Дата: 01.01.04 06:04
Оценка:
F>А в VB тултипы не из комона — у них свои, и TTM_SETMAXTIPWIDTH на них не действует, равно как и все другие TTM_. Можно конечно адски просабклассить, но глядя на код, который хотя бы просто находит hwnd vb-шного тултипа, сразу кисло становиться — проще создать ручками тултип из конома.

Вот, например, код, который отрубает тултип у TreeView. Что тут кислого?

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
 (ByVal hWND As Long, ByVal wMsg As Long, _
 ByVal wParam As Long, lParam As Any) As Long

Private Const TV_FIRST = &H1100
Private Const TVM_GETTOOLTIPS = (TV_FIRST + 25)

Private Const WM_USER   As Long = &H400
Private Const TTM_ACTIVATE As Long = (WM_USER + 1)

hwndTT = SendMessage(Tree.hWND, TVM_GETTOOLTIPS, 0, 0)
SendMessage hwndTT, TTM_ACTIVATE, 0, 0


И, что характерно,TTM_ работают
... << RSDN@Home 1.1.2 beta 1 >>
Re[6]: ToolTipText & "PRESS ENTER"
От: Frostbitten Россия  
Дата: 01.01.04 10:45
Оценка:
Здравствуйте, promsoft, Вы писали:

P>Вот, например, код, который отрубает тултип у TreeView. Что тут кислого?

Хе-хе-хе. TreeView сам из Win32 Common Controls и tooltip'ы _к его элементам_ тоже комоновые — тут проблем нет.

Нет, речь идет о том, чтобы именно VB-шные тултипы многострочными сделать, то есть те, что, напр., у Command, у Text.

А там фишка в том, что на все контролы в программе создается единственное окно класса VBBubbleRT6 (или VBBubble, если запускаем под VB), причем создается оно не сразу, а только при первом WM_MOUSEMOVE на любом vb-шном контроле. Поэтому поиск этого единственного окна зключается в посылке любому контролу WM_MOUSEMOVE, после чего EnumWindows в поисках окна с классом VBBubbleRT6, принадлежащих данному процессу.

Ничего сложного, конечно, нет, но кисло то, что решить такую задачу, не нарушая Low Cohesion можно только с потерей производительности (на создание отдельной формы с контролом, которому посылать WM_MOUSEMOVE). Но в любом случае эти тултипы не из комона.
Re[7]: ToolTipText & "PRESS ENTER"
От: promsoft Россия www.promsoft.ru
Дата: 01.01.04 13:19
Оценка: 54 (6)
F>Нет, речь идет о том, чтобы именно VB-шные тултипы многострочными сделать, то есть те, что, напр., у Command, у Text.
F>Ничего сложного, конечно, нет, но кисло то, что решить такую задачу, не нарушая Low Cohesion можно только с потерей производительности (на создание отдельной формы с контролом, которому посылать WM_MOUSEMOVE). Но в любом случае эти тултипы не из комона.

вот:
здесь

Это то, о чем тут написано, и, наверное, поможет автору топика
... << RSDN@Home 1.1.2 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.