Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отобразить Tooltip программно? / 9 сообщений из 9, страница 1 из 1
20.10.2010, 19:05
    #36910427
Guest_Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Доброе время суток. Может кто-то делал подскажите пожалуйста. Использую я объект который взял здесь http://sql.ru/forum/actualthread.aspx?tid=455737 . По умолчанию подсказка показывается только когда я на вожу мышкой на элемент. Мне нужно в коде вызвать отображение подсказки элемента для которого я задал. пробовал вызов функции n_ToolTip.of_relaymsg(ado_object) - не работает ((
...
Рейтинг: 0 / 0
21.10.2010, 20:34
    #36913362
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
А Tooltipы не для этого...
...
Рейтинг: 0 / 0
22.10.2010, 10:35
    #36913883
Guest_Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Я понимаю, просто я хотел этим реализовать систему напоминаний. Например если включен Caps Lock при вводе пароля и т.д. Может кто-то подскажет как можно это реализовать по другому? Выводить messagebox или в sle писать не подходит. Для sle нужно место на форме выделять(ну и как то оно не красиво если делать Visible true/false), ну а messagebox прерывает процесс ввода.
...
Рейтинг: 0 / 0
22.10.2010, 10:56
    #36913956
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Guest_DimaЯ понимаю, просто я хотел этим реализовать систему напоминаний. Например если включен Caps Lock при вводе пароля и т.д. Может кто-то подскажет как можно это реализовать по другому? Выводить messagebox или в sle писать не подходит. Для sle нужно место на форме выделять(ну и как то оно не красиво если делать Visible true/false), ну а messagebox прерывает процесс ввода.
Тривиальнее всего сделать sle (ну или специальный объект разработать) в котором сделать по наступлению события visible = true, и запустить таймер который через определенное время сделает visible = false
...
Рейтинг: 0 / 0
22.10.2010, 12:07
    #36914188
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Guest_DimaДоброе время суток. Может кто-то делал подскажите пожалуйста. Использую я объект который взял здесь http://sql.ru/forum/actualthread.aspx?tid=455737 . По умолчанию подсказка показывается только когда я на вожу мышкой на элемент. Мне нужно в коде вызвать отображение подсказки элемента для которого я задал. пробовал вызов функции n_ToolTip.of_relaymsg(ado_object) - не работает ((
А вообще, выбранный Вами объект (n_ToolTip) под мышкой работает?
Если - да, то скопируйте ключевой функционал вызова функции показа "подсказки" из события "ue_mousemove" (или как он там у Вас называется) и вставьте его в событие "getfocus", добавив перед стартом "подсказки" необходимую проверку. И ещё установите таймеры задержки и длительности показа "подсказки".
Где-то так. ;)
...
Рейтинг: 0 / 0
22.10.2010, 15:11
    #36914822
Guest_Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Под мышкой работает. Проблема в том что там используются API функции. И привязка подсказки с объектом выполняется с помощью функции Function integer ToolTipMsg(long hWnd, long uMsg, long wParam, REF TOOLINFO ToolInfo) library "user32.dll" Alias For "SendMessageA"
...
Рейтинг: 0 / 0
22.10.2010, 15:55
    #36914947
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Guest_DimaПод мышкой работает. Проблема в том что там используются API функции. И привязка подсказки с объектом выполняется с помощью функции Function integer ToolTipMsg(long hWnd, long uMsg, long wParam, REF TOOLINFO ToolInfo) library "user32.dll" Alias For "SendMessageA"
А почему вы считаете, что то, что используются API функции - проблема?
В чем именно проблема?
...
Рейтинг: 0 / 0
22.10.2010, 16:54
    #36915113
Guest_Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Anatoly Moskovsky,

Значит смотрите, при открытии окна я прописываю для каждого элемента подсказку
n_ToolTip inv_TooltipDelayTimes
inv_TooltipDelayTimes.of_AddTool( sle_1, "Текст подсказки", inv_TooltipDelayTimes.ttf_subclass )

После при наведении мыши на этот элемент все работает(всплывает подсказка).
А мне нужно что бы эта подсказка всплывала не в тот момент когда навожу мышку, а например когда пришел фокус в этот элемент и выполнилось какое-то условие.

Текст функции n_ToolTip.of_AddTool(DragObject ado_Object, String as_TipText, Integer ai_Flags)

Instance Variables:
Constant long TTM_ADDTOOL = 1028

Local External Functions:
Function long LocalFree(long MemHandle) library "kernel32.dll"
Function integer ToolTipMsg(long hWnd, long uMsg, long wParam, REF TOOLINFO ToolInfo) library "user32.dll" Alias For "SendMessageA"
Function long lstrcpy(long Destination, string Source) library "kernel32.dll"
Function long LocalAlloc(long Flags, long Bytes) library "kernel32.dll"

Код: plaintext
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.
/*****************************************************************************

	Function:		of_AddTool

	Description:	Registers a control within the tooltip control

	Returns:			(none)

	Arguments:		
                        DragObject  ado_Object	Object to register within the tooltip control
			String 	 as_TipText	        Tooltip Text
			Integer	 ai_Flags		Tool creation flags

	Use:				Call from mousemove-event for control

******************************************************************************/

TOOLINFO ToolInfo
Integer	li_Width, li_Height

ToolInfo.cbSize 	=  40 
ToolInfo.uFlags 	= TTF_SUBCLASS	//Flags 
ToolInfo.hWnd		= Handle( ado_Object )
ToolInfo.hInstance=  0  // Not used 
ToolInfo.uID		= ToolID
iul_Handle[ToolID] = ToolInfo.hWnd
ToolID++
ToolInfo.lpszText	= LocalAlloc(  0 ,  120  )
POST LocalFree( ToolInfo.lpszText ) // Free Allocated Memory
lStrCpy( ToolInfo.lpszText, Left( as_tiptext,  120  ) )

//	Define the object as a rectangle
ToolInfo.Rect.Left	=  0 
ToolInfo.Rect.Top 	=  0 
ToolInfo.Rect.Right	= UnitsToPixels( ado_Object.Width, XUnitsToPixels! )
ToolInfo.Rect.Bottom	= UnitsToPixels( ado_Object.Height, YUnitsToPixels! )

If ToolTipMsg( hWndTT, TTM_ADDTOOL,  0 , ToolInfo ) =  0  Then
	MessageBox( "Error", "Cannot register object in the toolwindow control!", StopSign!, Ok! )
	Return( - 1  )
End If

Return ( ToolID -  1  )
...
Рейтинг: 0 / 0
22.10.2010, 19:28
    #36915403
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отобразить Tooltip программно?
Почитайте про работу с тултипами http://msdn.microsoft.com/en-us/library/bb760250%28v=VS.85%29.aspx
Может придумаете какой-то обходной маневр.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отобразить Tooltip программно? / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]