Здравствуйте! Как оптимизировать этот код. Задача кода - у меня есть элементы edit в окне, между ними отступы. Нажимая мышкой между отступами и перемещая мышкой начинается изменение размеров ширины edit и перемещение других элементов из-за того, что изменилась ширина. Код работает, но работает не стабильно. Не всегда как будто улавливается нажатие (хотелось бы, чтобы нажал и сработало) а срабатывает, когда с одного, а когда и с 3-5 раз. Сам код делает, что надо. Как сделать, чтобы легко улавливалось нажатие мышкой?
Сделал, рабочую версию выложу позже.
Код:
#include <GuiScrollBars.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Constants.au3>
#include <Array.au3>
#Include <GUIEdit.au3>
#Include <WinAPIEx.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Date.au3>
#include <Timers.au3>
#include <ButtonConstants.au3>
#include <TabConstants.au3>
#include <TreeViewConstants.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#Include <Pop-ups.au3>
#include <WinAPIGdi.au3>
#include <SendMessage.au3>
#NoTrayIcon
global $ToolTip_skrinsoot
Opt("GUIOnEventMode", 1) ; Включает режим OnEvent
TrayCreateItem("Ответы")
TrayItemSetOnEvent(-1, "_spryatat_pokazat_otveti")
TrayCreateItem("Шаблоны ЦФЗ")
TrayItemSetOnEvent(-1, "_Spryatati_okno_shabloni_cfz")
TrayCreateItem("База знаний")
TrayCreateItem("")
TrayCreateItem("Настройки")
TrayItemSetOnEvent(-1, "_spryatat_pokazat_nastroiki")
TrayCreateItem("")
TrayCreateItem("Рестарт")
TrayItemSetOnEvent(-1, "_Restart")
TrayCreateItem("")
TrayCreateItem("Выход")
TrayItemSetOnEvent(-1, "_Exit")
Global $Cvet_fona_4_stadiya = 0xFF2400 ;;;;;; Цвет 4 стадии (красный)
Sozdanie_okna_razmer_zakaza()
;000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ГОРЯЧИЕ КЛАВИШИ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
HotKeySet("{F1}", "Kopirovanie_dannih")
HotKeySet("{F2}", "_spryatat_pokazat_otveti")
HotKeySet("{F3}", "_Spryatati_okno_shabloni_cfz")
HotKeySet("{F4}", "_Exit")
HotKeySet("{F5}", "_Spryatati_okno_bloknot")
HotKeySet("{F6}", "_Spryatati_okno_kartinki")
HotKeySet("{F9}", "_Spryatati_okno_zak_tov")
HotKeySet("^1", "_Bistroe_pereklucnhenie_zakazov_f1")
HotKeySet("^2", "_Bistroe_pereklucnhenie_zakazov_f2")
HotKeySet("^3", "_Bistroe_pereklucnhenie_zakazov_f3")
HotKeySet("^4", "_Bistroe_pereklucnhenie_zakazov_f4")
HotKeySet("^5", "_Bistroe_pereklucnhenie_zakazov_f5")
;000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; РЕЖИМЫ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.
Opt("TrayOnEventMode", 1) ; Включает режим TrayOnEventMode.
;------------------------------------------------------------------------------------------------
TraySetState(1) ; Показывает меню трея
;------------------------------------------------------------------------------------------------;------------------------------------------------------------------------------------------------
AdlibRegister('_Poluchaem_znachenie', 50)
AdlibRegister('Izmenenie_cveta_okon_proverka', 300)
;------------------------------------------------------------------------------------------------
;=====================================================================================================================================================================================================================
;=====================================================================================================================================================================================================================
While 1
Sleep(1000) ; Цикл ожидания
WEnd
Func _Exit()
_Perezapis_txt(0)
Exit
EndFunc
Func Sozdanie_okna_razmer_zakaza()
global $Edit_feik_zakaz[13]
global $LB_feik_zakaz[13]
global $LB_megdu[13]
; Global $Okno_zatemnenie = GUICreate("Настройка размеров", @DesktopWidth, @DesktopHeight,0, 0, $WS_POPUP, $WS_EX_TOPMOST)
Global $Shirina_okna_GL = 700
Global $Visota_okna_GL =400
Global $X_okna_GL = 150
Global $Y_okna_GL =250
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
global $mainwindow_razmer_zakaz = GUICreate("Самокопи", $Shirina_okna_GL, $Visota_okna_GL, $X_okna_GL, $Y_okna_GL, ($GUI_SS_DEFAULT_GUI - $WS_CAPTION)+$WS_CLIPCHILDREN, ($WS_EX_TOPMOST +$WS_EX_COMPOSITED))
GUISetBkColor($Cvet_fona_4_stadiya, $mainwindow_razmer_zakaz)
Global $Razmeri_ellementov_zakaza_shirina[13]
Global $Razmeri_ellementov_tovara_shirina[7]
Global $Razmeri_ellementov_zakaza_x1[13]
Global $Razmeri_ellementov_zakaza_x2[13]
Global $vremenaya_shirina[13]
Global $vremenaya_x[13]
global $otstup_megdu_slovami = 5
global $x_edit_1 = 10
global $y_edit_1 = 20
;;;;;;;;;
global $y_label_1 = 5
;;;;;;;;;
global $razmer_shirina_1 = 50
global $razmer_visota_edit = 20
global $razmer_visota_label =17
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$Razmeri_ellementov_zakaza_shirina[1]=50
$Razmeri_ellementov_zakaza_shirina[2]=50
$Razmeri_ellementov_zakaza_shirina[3]=50
$Razmeri_ellementov_zakaza_shirina[4]=50
$Razmeri_ellementov_zakaza_shirina[5]=50
$Razmeri_ellementov_zakaza_shirina[6]=50
$Razmeri_ellementov_zakaza_shirina[7]=50
$Razmeri_ellementov_zakaza_shirina[8]=50
$Razmeri_ellementov_zakaza_shirina[9]=50
$Razmeri_ellementov_zakaza_shirina[10]=50
$Razmeri_ellementov_zakaza_shirina[11]=50
$Razmeri_ellementov_zakaza_shirina[12]=50
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$narastayshaya=$x_edit_1
$Razmeri_ellementov_zakaza_x2[0]=$x_edit_1
for $i=1 to 12
$narastayshaya=$narastayshaya+$Razmeri_ellementov_zakaza_shirina[$i]
$Razmeri_ellementov_zakaza_x1[$i]=$narastayshaya
$narastayshaya=$narastayshaya+$otstup_megdu_slovami
$Razmeri_ellementov_zakaza_x2[$i]=$narastayshaya
next
for $i=1 to 12
$vremenaya_shirina[$i]= $Razmeri_ellementov_zakaza_shirina[$i]
$vremenaya_x[$i]= $Razmeri_ellementov_zakaza_x2[$i]
next
$Razmeri_ellementov_tovara_shirina[1]=50
$Razmeri_ellementov_tovara_shirina[2]=50
$Razmeri_ellementov_tovara_shirina[3]=50
$Razmeri_ellementov_tovara_shirina[4]=50
$Razmeri_ellementov_tovara_shirina[5]=50
$Razmeri_ellementov_tovara_shirina[6]=50
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
global $narastayshaya
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$narastayshaya=$x_edit_1
for $l=1 to 12
;ConsoleWrite(@CR&" nar "&$narastayshaya)
$Edit_feik_zakaz[$l] = GUICtrlCreateEdit($Razmeri_ellementov_zakaza_shirina[$l],$narastayshaya , 50, $Razmeri_ellementov_zakaza_shirina[$l], $razmer_visota_edit*$l, $ES_NUMBER)
GUICtrlSetOnEvent($Edit_feik_zakaz[$l] , "oo")
$narastayshaya=$narastayshaya+$Razmeri_ellementov_zakaza_shirina[$l]
$LB_megdu[$l] = GUICtrlCreatelabel($l,$Razmeri_ellementov_zakaza_x1[$l], $y_label_1, $otstup_megdu_slovami, $razmer_visota_label)
$narastayshaya=$narastayshaya+$otstup_megdu_slovami
next
;$LB_feik_zakaz[1] = GUICtrlCreatelabel(1,$x_edit_1 , $y_label_1, $Razmeri_ellementov_zakaza_shirina[1], $razmer_visota_label, -1, $GUI_WS_EX_PARENTDRAG)
;$narastaysaya=$narastaysaya+$x_edit_1+$Razmeri_ellementov_zakaza_shirina[1]
;$LB_megdu[1] = GUICtrlCreatelabel(1,$narastaysaya, $y_label_1, $otstup_megdu_slovami, $razmer_visota_label, -1, $GUI_WS_EX_PARENTDRAG)
;$narastaysaya=$narastaysaya+$otstup_megdu_slovami
;;;;;;;;
;$iEdit_1_zakaz[$i] = GUICtrlCreateEdit("",$x_edit_1+($i-1)*($razmer_shirina_1+$otstup_megdu_slovami), $y_edit_1, $razmer_shirina_1, $razmer_visota_edit, $ES_NUMBER)
;;;;;;;;;;;;;;;;;;;;;;;
;GUICtrlSetColor ( $LB_1_zakaz[$i], $Cvet_texta_podpisei )
;GUICtrlSetBkColor ( $iEdit_1_zakaz[$i], $Cvet_fona_dannih_edit )
GUISetState(@SW_SHOW,$mainwindow_razmer_zakaz)
GUISetState(@SW_SHOW,$mainwindow_razmer_zakaz)
AdlibRegister('_Proverka_mishi_rameri', 150)
EndFunc
Func _Proverka_mishi_rameri()
global $CursorInfo_razmerii
global $schet
local $narastayshaya
$schet
$schet=$schet+1
While Not _IsPressed("01")
$poziciya_mishi=MouseGetPos()
$x_ninesnee=$poziciya_mishi[0]
$CursorInfo_razmerii = GUIGetCursorInfo($mainwindow_razmer_zakaz)
$kakoi=1
Switch $CursorInfo_razmerii[0]
case $Razmeri_ellementov_zakaza_x1[1]-10 to $Razmeri_ellementov_zakaza_x2[1]+10
$kakoi=1
case $Razmeri_ellementov_zakaza_x1[2]-10 to $Razmeri_ellementov_zakaza_x2[2]+10
$kakoi=2
case $Razmeri_ellementov_zakaza_x1[3]-10 to $Razmeri_ellementov_zakaza_x2[3]+10
$kakoi=3
case $Razmeri_ellementov_zakaza_x1[4]-10 to $Razmeri_ellementov_zakaza_x2[4]+10
$kakoi=4
case $Razmeri_ellementov_zakaza_x1[5]-10 to $Razmeri_ellementov_zakaza_x2[5]+10
$kakoi=5
case $Razmeri_ellementov_zakaza_x1[6]-10 to $Razmeri_ellementov_zakaza_x2[6]+10
$kakoi=6
case $Razmeri_ellementov_zakaza_x1[7]-10 to $Razmeri_ellementov_zakaza_x2[7]+10
$kakoi=7
case $Razmeri_ellementov_zakaza_x1[8]-10 to $Razmeri_ellementov_zakaza_x2[8]+10
$kakoi=8
case $Razmeri_ellementov_zakaza_x1[9]-10 to $Razmeri_ellementov_zakaza_x2[9]+10
$kakoi=9
case $Razmeri_ellementov_zakaza_x1[10]-10 to $Razmeri_ellementov_zakaza_x2[10]+10
$kakoi=10
case $Razmeri_ellementov_zakaza_x1[11]-10 to $Razmeri_ellementov_zakaza_x2[11]+10
$kakoi=11
case $Razmeri_ellementov_zakaza_x1[12]-10 to $Razmeri_ellementov_zakaza_x2[12]+10
$kakoi=12
EndSwitch
While _IsPressed("01")
$poziciya_mishi=MouseGetPos()
$x_sled=$poziciya_mishi[0]
Switch $kakoi
case 1
GUICtrlSetPos ( $Edit_feik_zakaz[$kakoi], $Razmeri_ellementov_zakaza_x2[0],50,$Razmeri_ellementov_zakaza_shirina[$kakoi]+ ($x_sled-$x_ninesnee),20 )
for $h=2 to 12
GUICtrlSetPos ( $Edit_feik_zakaz[$h], $Razmeri_ellementov_zakaza_x2[$h-1]+$x_sled-$x_ninesnee,50,$Razmeri_ellementov_zakaza_shirina[$h],20 )
next
$vremenaya_shirina[1]=$Razmeri_ellementov_zakaza_shirina[1]+ ($x_sled-$x_ninesnee)
for $h=1 to 12
$vremenaya_x[$h]=$Razmeri_ellementov_zakaza_x2[$h]+$x_sled-$x_ninesnee
next
GUICtrlSetData ($Edit_feik_zakaz[1], $vremenaya_shirina[1])
case 12
GUICtrlSetPos ( $Edit_feik_zakaz[$kakoi], $Razmeri_ellementov_zakaza_x2[$kakoi-1],50,$Razmeri_ellementov_zakaza_shirina[$kakoi]+$x_sled-$x_ninesnee,20 )
$vremenaya_shirina[12]=$Razmeri_ellementov_zakaza_shirina[12]+ ($x_sled-$x_ninesnee)
GUICtrlSetData ($Edit_feik_zakaz[12], $vremenaya_shirina[12])
case else
GUICtrlSetPos ( $Edit_feik_zakaz[$kakoi], $Razmeri_ellementov_zakaza_x2[$kakoi-1],50,$Razmeri_ellementov_zakaza_shirina[$kakoi]+ ($x_sled-$x_ninesnee),20 )
$vremenaya_shirina[$kakoi]=$Razmeri_ellementov_zakaza_shirina[$kakoi]+ ($x_sled-$x_ninesnee)
for $h=$kakoi+1 to 12
GUICtrlSetPos ( $Edit_feik_zakaz[$h], $Razmeri_ellementov_zakaza_x2[$h-1]+$x_sled-$x_ninesnee,50,$Razmeri_ellementov_zakaza_shirina[$h],20 )
next
for $h=$kakoi to 12
$vremenaya_x[$h]=$Razmeri_ellementov_zakaza_x2[$h]+$x_sled-$x_ninesnee
next
GUICtrlSetData ($Edit_feik_zakaz[$kakoi], $vremenaya_shirina[$kakoi])
EndSwitch
WEnd
for $i=1 to 12
$Razmeri_ellementov_zakaza_shirina[$i]=$vremenaya_shirina[$i]
$Razmeri_ellementov_zakaza_x2[$i]=$vremenaya_x[$i]
$Razmeri_ellementov_zakaza_x1[$i]=$vremenaya_x[$i]-5
next
$narastayshaya=$x_edit_1
$Razmeri_ellementov_zakaza_x2[0]=$x_edit_1
for $i=1 to 12
$Razmeri_ellementov_zakaza_shirina[$i]=GUICtrlRead ( $Edit_feik_zakaz[$i] )
GUICtrlSetPos ( $Edit_feik_zakaz[$i], $narastayshaya,50,$Razmeri_ellementov_zakaza_shirina[$i],20 )
$narastayshaya=$narastayshaya+$Razmeri_ellementov_zakaza_shirina[$i]
$Razmeri_ellementov_zakaza_x1[$i]=$narastayshaya
$narastayshaya=$narastayshaya+$otstup_megdu_slovami
$Razmeri_ellementov_zakaza_x2[$i]=$narastayshaya
next
WEnd
EndFunc
Сообщение автоматически объединено:
Сделал, рабочую версию выложу позже.
Последнее редактирование: