Что нового

Элементы GUI Как сделать, чтобы ToolTip не моргал

smsgeorge

Новичок
Сообщения
63
Репутация
0
Здравствуйте! Есть такой код, как сделать, чтобы ToolTip не моргал? Функция вызывается AdlibRegister('_Poluchaem_znachenie',50)
Код:
Func _Poluchaem_znachenie()
   ConsoleWrite("df")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   local  $aInfo = GUIGetCursorInfo($mainwindow_1_zakaz)
   local $cursor=MouseGetPos ()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   Switch $aInfo[4]
   case $iEdit_1_zakaz[1]
         ToolTip (StringRegExpReplace($Dannie_elementov_Edit[1], '[\r\n]', ''), $cursor[0]+20,$cursor[1])
         If (_IsPressed("01")) Then
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            animaciya_kopirivaniya($iEdit_1_zakaz[1],GUICtrlRead($iEdit_1_zakaz[1]));;;;;;;;;;;;;;;;;;;;;;;;
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ClipPut(StringRegExpReplace($Dannie_elementov_Edit[1], '[\r\n]', ''))
         EndIf

   case $iEdit_1_zakaz[2]
         ToolTip ($Dannie_elementov_Edit[2], $cursor[0]+20,$cursor[1])
         If (_IsPressed("01")) Then
            ClipPut($Dannie_elementov_Edit[2])
            animaciya_kopirivaniya($iEdit_1_zakaz[2],GUICtrlRead($iEdit_1_zakaz[2]))
         EndIf

   case $iEdit_1_zakaz[3]
         ToolTip ($Dannie_elementov_Edit[3], $cursor[0]+20,$cursor[1])
         If (_IsPressed("01")) Then
            ClipPut($Dannie_elementov_Edit[3])
            animaciya_kopirivaniya($iEdit_1_zakaz[3],GUICtrlRead($iEdit_1_zakaz[3]))
         EndIf
EndSwitch

Сообщение автоматически объединено:

Какие еще есть варианты, как можно сделать правильнее?
Код:
Switch $aInfo[4]
     
   case $iEdit_1_zakaz[1]

   if $timer==0 then
      $timer_ToolTip = TimerInit()
      $timer=1
      $timer_ToolTip1 = TimerInit()
   EndIf
  
   if TimerDiff($timer_ToolTip)>1000 then  ; чтобы появилась через секунду
      if TimerDiff($timer_ToolTip1)>100 then  ; чтобы обновление происходило каждые 100 милисек, чтобы отрисовывать, вдруг мышка изменила положение 
         ToolTip (StringRegExpReplace($Dannie_elementov_Edit[1], '[\r\n]', ''), $cursor[0]+20,$cursor[1])
         $timer_ToolTip1 = TimerInit()
      EndIf
   EndIf

Case Else
           $timer_ToolTip = TimerInit()
           $timer=0
           $timer1=0
           ToolTip("")
EndSwitch

Сообщение автоматически объединено:

вот так понравилось больше
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   local  $aInfo = GUIGetCursorInfo($mainwindow_1_zakaz)
   local $cursor=MouseGetPos ()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   Switch $aInfo[4]

   case $iEdit_1_zakaz[1]

      if $cursor_save_x_1<>$cursor[0] or $cursor_save_y_1<>$cursor[1]  then
         ToolTip (StringRegExpReplace($Dannie_elementov_Edit[1], '[\r\n]', ''), $cursor[0]+20,$cursor[1])
         $cursor_save_x_1=$cursor[0]
         $cursor_save_y_1=$cursor[1]
      EndIf
 
Последнее редактирование:

damien2008

Осваивающий
Сообщения
173
Репутация
34
может проще сделать маленькое окно без заголовка и таскать его за курсором и перерисовывать с двойной буферизацией?
тогда моргания точно не будет
когда что-то меняется отображать, и скрывать по таймеру
 
Автор
S

smsgeorge

Новичок
Сообщения
63
Репутация
0
а как сделать, чтобы такое окно размеры само меняло, в зависимости от длинны текста.
 
Верх