Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Уменьшить время появления ToolTipText  [new]
bguo_reminder
Member

Откуда:
Сообщений: 32
Реально ли без танцев сделать сабж ?
13 авг 21, 12:21    [22359080]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
bguo_reminder
Member

Откуда:
Сообщений: 32
хотелось бы сделать чтобы подсказка появлялась моментально
13 авг 21, 12:27    [22359082]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
d7i
Member

Откуда:
Сообщений: 577
Без бубна вряд ли получится. Но всё в наших силах:

TTM_SETDELAYTIME
wParam = (WPARAM) uFlag;
lParam = (LPARAM) (int) iDelay;

The TTM_SETDELAYTIME message sets the initial, reshow, and autopopup durations for a tooltip control.
13 авг 21, 20:43    [22359311]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
bguo_reminder
Member

Откуда:
Сообщений: 32
чет ну никак

#define TTM_SETDELAYTIME 0x0403

  DECLARE LONG SendMessage IN user32;   
  	INTEGER hWnd,;   
  	INTEGER Msg,;  
  	INTEGER wParam,;  
  	LONG lParam
        

*TTDT_AUTOPOP = 2	Устанавливает время видимости, пока указатель мыши находится в прямоугольнике окна. Для возвращения времени видимости в значение по умолчанию используйте значение -1
*TTDT_INITIAL = 3	Устанавливает время задержки появления подсказки на экране. Для возвращения времени задержки в значение по умолчанию используйте значение -1
*TTDT_RESHOW = 1	Устанавливает время, необходимое для повторного показа подсказки после перемещения мыши с одного объекта на другой. Для возвращения времени в значение по умолчанию используйте значение -1
*TTDT_AUTOMATIC = 0	Устанавливает все три значения времени в пропорциональные состояния по умолчанию. Приняты следующие пропорции: autopop = 10*initial, reshow = initial/5


SendMessage(thisform.HWnd, TTM_SETDELAYTIME,  3, 10000)
SendMessage(thisform.HWnd, TTM_SETDELAYTIME,  2, 1000)


SCREEN у меня OFF
где туплю ? HWND и со скрина брал, ничего не меняется, подсказки работают по стандарту
21 авг 21, 21:56    [22362650]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
d7i
Member

Откуда:
Сообщений: 577
Ещё раз:

TTM_SETDELAYTIME
wParam = (WPARAM) uFlag;
lParam = (LPARAM) (int) iDelay;

The TTM_SETDELAYTIME message sets the initial, reshow, and autopopup durations for a tooltip control.

HWND - указатель на ToolTip, а не на окно. Как его получить в Фоксе я не знаю, извините...

Вот так на С++ (Power++) я делал многострочный ToolTip:
    WToolTip * tooltip = textb_1->GetToolTip();
    tooltip->SendMessage(WMessage(0x418,0,200));
    textb_1->SetToolTipText("Multiline !!!\nThis is simple sample");
22 авг 21, 14:39    [22362795]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
bguo_reminder
Member

Откуда:
Сообщений: 32
короче тяжелый случай как говорится
23 авг 21, 13:06    [22363104]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
d7i
Member

Откуда:
Сообщений: 577
bguo_reminder, в Фоксе точно тяжелый случай.
Я почитал про свойство ToolTip для Фокса в интернете и
убедился что Фокс есть УГ (извините за грубость, но это медицинский факт)...
В Фоксе стандартный ToolTip убогий и все, кто хочет управляемый, просто рисуют свой.
P.S. Переходите на С++, не пожалеете. Уж в нем-то возможно всё.
23 авг 21, 13:51    [22363125]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
Dima T
Member

Откуда:
Сообщений: 16072
bguo_reminder
HWND и со скрина брал, ничего не меняется, подсказки работают по стандарту

Судя по примеру d7i 22362795 надо брать HWND контрола (у него textbox), на котором ToolTipText выводится. Фокс его не дает.
23 авг 21, 14:01    [22363134]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
d7i
Member

Откуда:
Сообщений: 577
Можно попробовать получить идентификатор ToolTip через сообщение:

TTM_GETTOOLINFO 
wParam = 0; 
lParam = (LPARAM) (LPTOOLINFO) lpti; 

The TTM_GETTOOLINFO message retrieves the information that a tooltip control maintains about a tool.

lpti - Pointer to a TOOLINFO structure. When sending the message, the hwnd and uId members identify a tool,
and the cbSize member must specify the size of the structure. 
If the tooltip control includes the tool, the structure receives information about the tool. 

typedef struct {  // ti 
    UINT      cbSize; 
    UINT      uFlags; 
    HWND      hwnd; 
    UINT      uId; 
    RECT      rect; 
    HINSTANCE hinst; 
    LPTSTR     lpszText; 
} TOOLINFO, NEAR *PTOOLINFO, FAR *LPTOOLINFO; 

uId - Application-defined identifier of the tool. 
If uFlags includes the TTF_IDISHWND value, uId must specify the window handle to the tool. 


Т.е. посылаем окну с ToolTip сообщение TTM_GETTOOLINFO и получаем структуру TOOLINFO.
Берем из неё uId и ему посылаем сообщение TTM_SETDELAYTIME.

Можно попробовать и если uId будет не NULL всё должно получиться... :-)
23 авг 21, 15:32    [22363172]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1595
d7i
Можно попробовать получить идентификатор ToolTip через сообщение:
Благородные доны, похоже, совсем не в курсе того, в фоксе контролы являются рисованными картинками и они ни разу не виндовые окна. Со всеми вытекающими из этого последствиями.
23 авг 21, 16:26    [22363199]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
d7i
Member

Откуда:
Сообщений: 577
Sergey Sizov
Благородные доны, похоже, совсем не в курсе того, в фоксе контролы являются рисованными картинками и они ни разу не виндовые окна. Со всеми вытекающими из этого последствиями.

Ну раз Фокс такой рисовальщик (ну и УГ...), остается один путь - рисовать ToolTip самолично и издеваться над ним со всей изощренностью...
23 авг 21, 16:54    [22363216]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
of63
Member

Откуда:
Сообщений: 2
d7i,
Почему сразу 'УГ'? На фоксе можно делать так
x = "SQRT(y)"
y = 4
x = &x
Получится x = 2
5 сен 21, 21:21    [22368140]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить время появления ToolTipText  [new]
Людмila
Member

Откуда: Кировская обл.
Сообщений: 330
Помниться, что-то правила в конфигурационном файле.
7 сен 21, 11:47    [22368735]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить