Что нового

Работа с GUI Combo, Изменение формы в реальном времени

andriy111

Новичок
Сообщения
58
Репутация
0
Здравствуйте!

Есть форма:
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\ЦентрДержРодючість\Програми\Баланс\Balans.kxf
$Balans = GUICreate("Balans", 924, 200, 192, 124)
$AddPole = GUICtrlCreateButton("Поле +", 8, 8, 75, 25)
$Calculate = GUICtrlCreateButton("Порахувати", 96, 8, 75, 25)
$Export = GUICtrlCreateButton("Експорт", 184, 8, 75, 25)
$PoleNum = GUICtrlCreateInput("№ Поля", 16, 48, 65, 21)
$Cultur = GUICtrlCreateCombo("Культура", 88, 48, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
  GUICtrlSetData(-1, "Пшениця озима (богара)|Пшениця озима (зрош)|Жито озиме")
$Area = GUICtrlCreateInput("Площа", 240, 48, 65, 21)
$Urozh = GUICtrlCreateInput("Урож.", 312, 48, 65, 21)
$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 384, 32, 153, 41)
$N = GUICtrlCreateInput("N", 392, 48, 41, 21)
$P = GUICtrlCreateInput("P", 440, 48, 41, 21)
$K = GUICtrlCreateInput("K", 488, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Passport = GUICtrlCreateGroup("Паспорт поля", 544, 32, 201, 41)
$VmistPozh = GUICtrlCreateInput("Вміст пож. реч.", 552, 48, 89, 21)
$Schilnist = GUICtrlCreateInput("Щільність зл.", 648, 48, 89, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Dostupna = GUICtrlCreateGroup("Доступна", 752, 32, 153, 41)
$NDost = GUICtrlCreateInput("N", 760, 48, 41, 21)
$PDost = GUICtrlCreateInput("P", 808, 48, 41, 21)
$KDost = GUICtrlCreateInput("K", 856, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

1 Вопрос: При изменении пункта в $Cultur как автоматически изменять значения в $N $P $K? Каждому пункту в $Cultur соответсвуют значения $N $P $K, их надо будет вывести в форму.
2 Вопрос: Возможно ли при нажатии на кнопку $AddPole добавлять еще часть формы
Код:
$PoleNum = GUICtrlCreateInput("№ Поля", 16, 48, 65, 21)
$Cultur = GUICtrlCreateCombo("Культура", 88, 48, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
  GUICtrlSetData(-1, "Пшениця озима (богара)|Пшениця озима (зрош)|Жито озиме")
$Area = GUICtrlCreateInput("Площа", 240, 48, 65, 21)
$Urozh = GUICtrlCreateInput("Урож.", 312, 48, 65, 21)
$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 384, 32, 153, 41)
$N = GUICtrlCreateInput("N", 392, 48, 41, 21)
$P = GUICtrlCreateInput("P", 440, 48, 41, 21)
$K = GUICtrlCreateInput("K", 488, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Passport = GUICtrlCreateGroup("Паспорт поля", 544, 32, 201, 41)
$VmistPozh = GUICtrlCreateInput("Вміст пож. реч.", 552, 48, 89, 21)
$Schilnist = GUICtrlCreateInput("Щільність зл.", 648, 48, 89, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Dostupna = GUICtrlCreateGroup("Доступна", 752, 32, 153, 41)
$NDost = GUICtrlCreateInput("N", 760, 48, 41, 21)
$PDost = GUICtrlCreateInput("P", 808, 48, 41, 21)
$KDost = GUICtrlCreateInput("K", 856, 48, 41, 21)
. Тоисть, добавлять еще рядок для ввода данных.

Надеюсь на Вашу помощь! Спасибо!
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Re: Работа с GUI Combo, Изминение формы в реальном времени

Начну со 2 вопроса=)
2) - Да можно, если в условие к кнопке установить создание элементов, пример:
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form
$Balans = GUICreate("Balans", 924, 200, 192, 124)
$AddPole = GUICtrlCreateButton("Поле +", 8, 8, 75, 25)
$Calculate = GUICtrlCreateButton("Порахувати", 96, 8, 75, 25)
$Export = GUICtrlCreateButton("Експорт", 184, 8, 75, 25)
$PoleNum = GUICtrlCreateInput("№ Поля", 16, 48, 65, 21)
$Cultur = GUICtrlCreateCombo("Культура", 88, 48, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Пшениця озима (богара)|Пшениця озима (зрош)|Жито озиме")
$Area = GUICtrlCreateInput("Площа", 240, 48, 65, 21)
$Urozh = GUICtrlCreateInput("Урож.", 312, 48, 65, 21)
$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 384, 32, 153, 41)
$N = GUICtrlCreateInput("N", 392, 48, 41, 21)
$P = GUICtrlCreateInput("P", 440, 48, 41, 21)
$K = GUICtrlCreateInput("K", 488, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Passport = GUICtrlCreateGroup("Паспорт поля", 544, 32, 201, 41)
$VmistPozh = GUICtrlCreateInput("Вміст пож. реч.", 552, 48, 89, 21)
$Schilnist = GUICtrlCreateInput("Щільність зл.", 648, 48, 89, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Dostupna = GUICtrlCreateGroup("Доступна", 752, 32, 153, 41)
$NDost = GUICtrlCreateInput("N", 760, 48, 41, 21)
$PDost = GUICtrlCreateInput("P", 808, 48, 41, 21)
$KDost = GUICtrlCreateInput("K", 856, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $AddPole
			$Input1 = GUICtrlCreateInput("Example1", 16, 96, 121, 21)
			$Combo1 = GUICtrlCreateCombo("Example2", 160, 96, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
			GUICtrlSetData(-1, "Line1|Line2")
    EndSwitch
WEnd

Также можно управлять созданными элементами(ставить в условие, устанавливать текст) элементы могут быть любыми
1) я может не совсем понял но тоже приведу пример:
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $TextCultur[3]=["Пшениця озима (богара)","Пшениця озима (зрош)","Жито озиме"];Для удобства использования повторно
Dim $Text[3][3]=[["1","11","111"], _;1 колонка массива - для 1 пункта в ComboBox
		["2","22","22"], _;2 колонка
		["3","33","333"]];3 колонка
#Region ### START Koda GUI section ### Form
$Balans = GUICreate("Balans", 924, 200, 192, 124)
$AddPole = GUICtrlCreateButton("Поле +", 8, 8, 75, 25)
$Calculate = GUICtrlCreateButton("Порахувати", 96, 8, 75, 25)
$Export = GUICtrlCreateButton("Експорт", 184, 8, 75, 25)
$PoleNum = GUICtrlCreateInput("№ Поля", 16, 48, 65, 21)
$Cultur = GUICtrlCreateCombo("Культура", 88, 48, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, $TextCultur[0]&"|"&$TextCultur[1]&"|"&$TextCultur[2]);Чтение из массива данных
$Area = GUICtrlCreateInput("Площа", 240, 48, 65, 21)
$Urozh = GUICtrlCreateInput("Урож.", 312, 48, 65, 21)
$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 384, 32, 153, 41)
$N = GUICtrlCreateInput("N", 392, 48, 41, 21)
$P = GUICtrlCreateInput("P", 440, 48, 41, 21)
$K = GUICtrlCreateInput("K", 488, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Passport = GUICtrlCreateGroup("Паспорт поля", 544, 32, 201, 41)
$VmistPozh = GUICtrlCreateInput("Вміст пож. реч.", 552, 48, 89, 21)
$Schilnist = GUICtrlCreateInput("Щільність зл.", 648, 48, 89, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Dostupna = GUICtrlCreateGroup("Доступна", 752, 32, 153, 41)
$NDost = GUICtrlCreateInput("N", 760, 48, 41, 21)
$PDost = GUICtrlCreateInput("P", 808, 48, 41, 21)
$KDost = GUICtrlCreateInput("K", 856, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Cultur;Если произйдет изменение с элементом $Cultur
			Local $Read=GUICtrlRead($Cultur);Чтение из строки элемента $Cultur
			Switch $Read
				Case $TextCultur[0];Если в ComboBox будет строка Пшениця озима (богара) то текстовые поля заполнятся первой колонкой массива $Text
					GUICtrlSetData($N,$Text[0][0])
					GUICtrlSetData($P,$Text[1][0])
					GUICtrlSetData($K,$Text[2][0])
				Case $TextCultur[1]
					GUICtrlSetData($N,$Text[0][1])
					GUICtrlSetData($P,$Text[1][1])
					GUICtrlSetData($K,$Text[2][1])
				Case $TextCultur[2]
					GUICtrlSetData($N,$Text[0][2])
					GUICtrlSetData($P,$Text[1][2])
					GUICtrlSetData($K,$Text[2][2])
			EndSwitch
    EndSwitch
WEnd
OffTopic:
Наверное подобную тему надо писать в GUI интерфейс а не сюда
 
Автор
A

andriy111

Новичок
Сообщения
58
Репутация
0
Re: Работа с GUI Combo, Изминение формы в реальном времени

Большое спасибо! 1 проблема решена!

Теперь что относится к второй:
У меня это выглядит примерно так:
Код:
Func AddPole()
$PoleNum2 = GUICtrlCreateInput("№ Поля", 16, 72, 65, 21)
$Cultur2 = GUICtrlCreateCombo("Культура", 88, 72, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Area2 = GUICtrlCreateInput("Площа", 240, 72, 65, 21)
$Urozh2 = GUICtrlCreateInput("Урож.", 312, 72, 65, 21)
$Vynos2 = GUICtrlCreateGroup("Винос 1ц / кг", 384, 32, 153, 41)
$N2 = GUICtrlCreateInput("N", 392, 72, 41, 21)
$P2 = GUICtrlCreateInput("P", 440, 72, 41, 21)
$K2 = GUICtrlCreateInput("K", 488, 72, 41, 21)
$VmistPozh2 = GUICtrlCreateInput("Вміст пож. реч.", 552, 72, 89, 21)
$Schilnist2 = GUICtrlCreateInput("Щільність зл.", 648, 72, 89, 21)
$NDost2 = GUICtrlCreateInput("N", 760, 72, 41, 21)
$PDost2 = GUICtrlCreateInput("P", 808, 72, 41, 21)
$KDost2 = GUICtrlCreateInput("K", 856, 72, 41, 21)
EndFunc

Но как мне сделать так функцию чтобы при каждом нажатии переменная становилась на число больше - $KDost2 -> $KDost3, и в параметрах к числу 72 додавалось 24?

Спасибо большое!
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Re: Работа с GUI Combo, Изминение формы в реальном времени

На счет создания новой переменной от "дочернего имени" не предполагаю что делать пока что, а вот к 72+24 это легко:
Код:
Func AddPole()
$PoleNum2 = GUICtrlCreateInput("№ Поля", 16, 72+24, 65, 21)
$Cultur2 = GUICtrlCreateCombo("Культура", 88, 72+24, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Area2 = GUICtrlCreateInput("Площа", 240, 72+24, 65, 21)
$Urozh2 = GUICtrlCreateInput("Урож.", 312, 72+24, 65, 21)
$Vynos2 = GUICtrlCreateGroup("Винос 1ц / кг", 384, 72+24, 153, 41)
$N2 = GUICtrlCreateInput("N", 392, 72+24, 41, 21)
$P2 = GUICtrlCreateInput("P", 440, 72+24, 41, 21)
$K2 = GUICtrlCreateInput("K", 488, 72+24, 41, 21)
$VmistPozh2 = GUICtrlCreateInput("Вміст пож. реч.", 552, 72+24, 89, 21)
$Schilnist2 = GUICtrlCreateInput("Щільність зл.", 648, 72+24, 89, 21)
$NDost2 = GUICtrlCreateInput("N", 760, 72+24, 41, 21)
$PDost2 = GUICtrlCreateInput("P", 808, 72+24, 41, 21)
$KDost2 = GUICtrlCreateInput("K", 856, 72+24, 41, 21)
EndFunc
Этот пример предполагает только 1 вызов функции AddPole, чтобы создавать с помощью нее еще ряды - можно использовать глобальную переменную-счетчик и умножать ее на число 24, а потом прибавлять полученное к 72.


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

А вот, прочитал справку по команде Assign
можно создавать так:
Код:
for $i=1 to 10
    assign("kDost"&$i,'',2)
next;==> после прохождения такого цикла у нас в скрипте будет 10 переменных $kDost1,$kDost2...



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

Код:
Func AddPole()
Global $Trig=1
Local $pos=72+24*$Trig;Вычисляет из тригера сколько раз запускалась функция и вычисляет позицию в переменную
Assign("PoleNum"&$Trig,Execute('GUICtrlCreateInput("№ Поля", 16, $pos, 65, 21)'),2);Создает переменную $PoleNum с указанным числом в триггере, можно сделать и для других
$Cultur1 = GUICtrlCreateCombo("Культура", 88, $pos, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Area1 = GUICtrlCreateInput("Площа", 240, $pos, 65, 21)
$Urozh1 = GUICtrlCreateInput("Урож.", 312, $pos, 65, 21)
$Vynos1 = GUICtrlCreateGroup("Винос 1ц / кг", 384, $pos, 153, 41)
$N1 = GUICtrlCreateInput("N", 392, $pos, 41, 21)
$P1 = GUICtrlCreateInput("P", 440, $pos, 41, 21)
$K1 = GUICtrlCreateInput("K", 488, $pos, 41, 21)
$VmistPozh1 = GUICtrlCreateInput("Вміст пож. реч.", 552, $pos, 89, 21)
$Schilnist1 = GUICtrlCreateInput("Щільність зл.", 648, $pos, 89, 21)
$NDost1 = GUICtrlCreateInput("N", 760, $pos, 41, 21)
$PDost1 = GUICtrlCreateInput("P", 808, $pos, 41, 21)
$KDost1 = GUICtrlCreateInput("K", 856, $pos, 41, 21)
$Trig+=1;Прибавляет к числу еденицу, для установления нового числа в переменной
EndFunc
 
Автор
A

andriy111

Новичок
Сообщения
58
Репутация
0
Re: Работа с GUI Combo, Изминение формы в реальном времени

Код:
Assign("PoleNum"&$Trig,Execute'GUICtrlCreateInput("? ????", 16, $pos, 65, 21)',2) 
Assign("PoleNum"&$Trig,Execute^ ERROR

Не могу найти ошибку...


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

Поправил
Код:
Assign("PoleNum"&$Trig,Execute('GUICtrlCreateInput("№ Поля", 16, $pos, 65, 21)'),2);Создает переменную $PoleNum с указанным числом в триггере, можно сделать и для других


Но пришлось переместить $Trig т.к. обнулял значение при запуске до 1...
Код:
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
Global $Trig=1
    While 1
	   Sleep(10)
    WEnd



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

С GUICtrlCreate все понятно.

Но как можно создавать функции?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Работа с GUI Combo, Изминение формы в реальном времени

andriy111 [?]
Но как можно создавать функции?
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Re: Работа с GUI Combo, Изминение формы в реальном времени

andriy111
Используйте поиск по форуму, там много чего можно найти
http://autoit-script.ru/index.php/topic,12305.msg79587.html#msg79587

Не используйте Assign если это возможно, для этого есть массивы. Функция Execute там вообще не нужна, и без неё должно возвратить число, зачем его ещё и вычислять.
 
Автор
A

andriy111

Новичок
Сообщения
58
Репутация
0
Re: Работа с GUI Combo, Изминение формы в реальном времени

Не могу разобраться почему не отправляет данные:
Код:
GUICtrlSetData(Execute("'$N'&$Trig"),$Text[0][0])


Весь код:
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $TextCultur[26]=["Пшениця озима (богара)","Жито озиме","Озимий ячмінь","Озимий ріпак","Ярий ячмінь","Ярові зернові","Овес","Кукурудза на зерно,","Просо","Гречка","Рис","Горох","Льон-довгунець","Цукрові буряки","Соняшник","Соя","Картопля","Кормові буряки","Цибуля","Морква","Перець","Кукурудза на силос","Однорічні трави (сіно)","Люцерна (сіно)","Конюшина (сіно)","Бобово-злакові (сіно)"];Для удобства использования повторно
Dim $Text[26][3]=[["2,89","1","2,07"], _
		 ["2,78","1,17","2,64"], _
		 ["2,47","1,09","2,26"], _
		 ["6,5","2,4","4,2"], _
		 ["2,62","1,04","2,2"], _
		 ["2,38","0,99","2,01"], _
		 ["2,72","1,27","3,37"], _
		 ["2,41","0,86","2,24"], _
		 ["3,39","0,81","4,55"], _
		 ["3,61","1,37","3,83"], _
		 ["1,73","0,93","2,12"], _
		 ["4,44","1,25","2,8"], _
		 ["6,02","3,28","5,04"], _
		 ["0,42","0,13","0,5"], _
		 ["4,28","1,72","10,43"], _
		 ["7,2","1,4","2"], _
		 ["0,56","0,16","0,78"], _
		 ["0,37","0,09","0,45"], _
		 ["0,29","0,17","0,29"], _
		 ["0,29","0,12","0,41"], _
		 ["0,5","0,14","0,8"], _
		 ["0,32","0,11","0,42"], _
		 ["1,88","0,6","2,33"], _
		 ["2,98","0,57","1,99"], _
		 ["2,43","0,52","1,84"], _
		 ["2,09","0,44","2,06"]]
#Region ### START Koda GUI section ### Form=D:\ЦентрДержРодючість\Програми\Баланс\Balans.kxf
$Balans = GUICreate("Balans", 1016, 477, 190, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
$AddPole = GUICtrlCreateButton("Поле +", 8, 8, 75, 25)
GUICtrlSetOnEvent($AddPole, "AddPole")
$Export = GUICtrlCreateButton("Експорт", 168, 8, 75, 25)
$Calculate = GUICtrlCreateButton("Порахувати", 88, 8, 75, 25)
$PoleNum0 = GUICtrlCreateInput("№ Поля", 8, 48, 49, 21)
$Cultur1 = GUICtrlCreateCombo("Культура", 64, 48, 129, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, $TextCultur[0]&"|"&$TextCultur[1]&"|"&$TextCultur[2]&"|"&$TextCultur[3]&"|"&$TextCultur[4]&"|"&$TextCultur[5]&"|"&$TextCultur[6]&"|"&$TextCultur[7]&"|"&$TextCultur[8]&"|"&$TextCultur[9]&"|"&$TextCultur[10]&"|"&$TextCultur[11]&"|"&$TextCultur[12]&"|"&$TextCultur[13]&"|"&$TextCultur[14]&"|"&$TextCultur[15]&"|"&$TextCultur[16]&"|"&$TextCultur[17]&"|"&$TextCultur[18]&"|"&$TextCultur[19]&"|"&$TextCultur[20]&"|"&$TextCultur[21]&"|"&$TextCultur[22]&"|"&$TextCultur[23]&"|"&$TextCultur[24]&"|"&$TextCultur[25]);Чтение из массива данных
$Area1 = GUICtrlCreateInput("Площа", 200, 48, 65, 21)
$Urozh1 = GUICtrlCreateInput("Урож.", 272, 48, 65, 21)
$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 344, 32, 153, 41)
$N1 = GUICtrlCreateInput("N", 352, 48, 41, 21)
$P1 = GUICtrlCreateInput("P", 400, 48, 41, 21)
$K1 = GUICtrlCreateInput("K", 448, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Passport = GUICtrlCreateGroup("Паспорт поля", 664, 32, 185, 41)
$VmistPozh1 = GUICtrlCreateInput("Вміст пож.реч.", 672, 48, 81, 21)
$Schilnist1 = GUICtrlCreateInput("Щільність зл.", 760, 48, 81, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Dostupna = GUICtrlCreateGroup("Доступна", 856, 32, 153, 41)
$NDost1 = GUICtrlCreateInput("N", 864, 48, 41, 21)
$PDost1 = GUICtrlCreateInput("P", 912, 48, 41, 21)
$KDost1 = GUICtrlCreateInput("K", 960, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Potreba = GUICtrlCreateGroup("Потреба", 504, 32, 153, 41)
$NPotr1 = GUICtrlCreateInput("N", 512, 48, 41, 21)
$PPotr1 = GUICtrlCreateInput("P", 560, 48, 41, 21)
$KPotr1 = GUICtrlCreateInput("K", 608, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###



Global $Trig=1
While 1
   
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case Execute("'$Cultur'&$Trig");Если произйдет изменение с элементом $Cultur
            Local $Read=GUICtrlRead(Execute("'$Cultur'&$Trig"));Чтение из строки элемента $Cultur
			Switch $Read
			    Case $TextCultur[0]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[0][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[0][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[0][2])
                Case $TextCultur[1]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[1][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[1][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[1][2])
                Case $TextCultur[2]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[2][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[2][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[2][2])
					Case $TextCultur[3]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[3][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[3][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[3][2])
                Case $TextCultur[4]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[4][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[4][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[4][2])
                Case $TextCultur[5]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[5][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[5][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[5][2])
					Case $TextCultur[6]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[6][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[6][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[6][2])
                Case $TextCultur[7]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[7][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[7][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[7][2])
                Case $TextCultur[8]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[8][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[8][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[8][2])
					Case $TextCultur[9]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[9][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[9][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[9][2])
                Case $TextCultur[10]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[10][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[10][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[10][2])
                Case $TextCultur[11]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[11][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[11][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[11][2])
					Case $TextCultur[12]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[12][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[12][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[12][2])
                Case $TextCultur[13]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[13][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[13][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[13][2])
                Case $TextCultur[14]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[14][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[14][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[14][2])
					Case $TextCultur[15]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[15][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[15][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[15][2])
                Case $TextCultur[16]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[16][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[16][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[16][2])
                Case $TextCultur[17]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[17][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[17][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[17][2])
					Case $TextCultur[18]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[18][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[18][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[18][2])
                Case $TextCultur[19]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[19][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[19][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[19][2])
                Case $TextCultur[20]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[20][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[20][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[20][2])
					Case $TextCultur[21]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[21][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[21][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[21][2])
                Case $TextCultur[22]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[22][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[22][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[22][2])
                Case $TextCultur[23]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[23][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[23][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[23][2])
					Case $TextCultur[24]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[24][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[24][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[24][2])
                Case $TextCultur[25]
                    GUICtrlSetData(Execute("'$N'&$Trig"),$Text[25][0])
                    GUICtrlSetData(Execute("'$P'&$Trig"),$Text[25][1])
                    GUICtrlSetData(Execute("'$K'&$Trig"),$Text[25][2])
            EndSwitch
		 Case $AddPole
			$Trig+=1;Прибавляет к числу еденицу, для установления нового числа в переменной
			   Local $pos=24+24*$Trig;Вычисляет из тригера сколько раз запускалась функция и вычисляет позицию в переменную
			   Assign("PoleNum"&$Trig,Execute('GUICtrlCreateInput("№ Поля", 8, $pos, 49, 21)'),2)
			   Assign("Cultur"&$Trig,Execute('GUICtrlCreateCombo("Культура", 64, $pos, 129, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))'),2)
			   GUICtrlSetData(-1, $TextCultur[0]&"|"&$TextCultur[1]&"|"&$TextCultur[2]&"|"&$TextCultur[3]&"|"&$TextCultur[4]&"|"&$TextCultur[5]&"|"&$TextCultur[6]&"|"&$TextCultur[7]&"|"&$TextCultur[8]&"|"&$TextCultur[9]&"|"&$TextCultur[10]&"|"&$TextCultur[11]&"|"&$TextCultur[12]&"|"&$TextCultur[13]&"|"&$TextCultur[14]&"|"&$TextCultur[15]&"|"&$TextCultur[16]&"|"&$TextCultur[17]&"|"&$TextCultur[18]&"|"&$TextCultur[19]&"|"&$TextCultur[20]&"|"&$TextCultur[21]&"|"&$TextCultur[22]&"|"&$TextCultur[23]&"|"&$TextCultur[24]&"|"&$TextCultur[25]);Чтение из массива данных
			   Assign("Area"&$Trig,Execute('GUICtrlCreateInput("Площа", 200, $pos, 65, 21)'),2)
			   Assign("Urozh"&$Trig,Execute('GUICtrlCreateInput("Урож.", 272, $pos, 65, 21)'),2)
			   Assign("N"&$Trig,Execute('GUICtrlCreateInput("N", 352, $pos, 41, 21)'),2)
			   Assign("P"&$Trig,Execute('GUICtrlCreateInput("P", 400, $pos, 41, 21)'),2)
			   Assign("K"&$Trig,Execute('GUICtrlCreateInput("K", 448, $pos, 41, 21)'),2)
			   Assign("VmistPozh"&$Trig,Execute('GUICtrlCreateInput("Вміст пож.реч.", 672, $pos, 81, 21)'),2)
			   Assign("Schilnist"&$Trig,Execute('GUICtrlCreateInput("Щільність зл.", 760, $pos, 81, 21)'),2)
			   Assign("NDost"&$Trig,Execute('GUICtrlCreateInput("N", 864, $pos, 41, 21)'),2)
			   Assign("PDost"&$Trig,Execute('GUICtrlCreateInput("P", 912, $pos, 41, 21)'),2)
			   Assign("KDost"&$Trig,Execute('GUICtrlCreateInput("K", 960, $pos, 41, 21)'),2)
			   Assign("NPotr"&$Trig,Execute('GUICtrlCreateInput("N", 512, $pos, 41, 21)'),2)
			   Assign("PPotr"&$Trig,Execute('GUICtrlCreateInput("P", 560, $pos, 41, 21)'),2)
			   Assign("KPotr"&$Trig,Execute('GUICtrlCreateInput("K", 608, $pos, 41, 21)'),2)
					
    EndSwitch
WEnd

Помогите исправить пожалуйста!
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Re: Работа с GUI Combo, Изминение формы в реальном времени

andriy111
Если в '$N' убрать апострофы?
 
Автор
A

andriy111

Новичок
Сообщения
58
Репутация
0
Re: Работа с GUI Combo, Изминение формы в реальном времени

Там должны быть кавычки т. к. мне нужно сложить фразу, а '$N' - это шаблон.

На даный момент скрипт имеет вид :

Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dim $TextCultur[26]=["Пшениця озима (богара)","Жито озиме","Озимий ячмінь","Озимий ріпак","Ярий ячмінь","Ярові зернові","Овес","Кукурудза на зерно,","Просо","Гречка","Рис","Горох","Льон-довгунець","Цукрові буряки","Соняшник","Соя","Картопля","Кормові буряки","Цибуля","Морква","Перець","Кукурудза на силос","Однорічні трави (сіно)","Люцерна (сіно)","Конюшина (сіно)","Бобово-злакові (сіно)"];Для удобства использования повторно
Dim $Text[26][3]=[["2,89","1","2,07"], _
		 ["2,78","1,17","2,64"], _
		 ["2,47","1,09","2,26"], _
		 ["6,5","2,4","4,2"], _
		 ["2,62","1,04","2,2"], _
		 ["2,38","0,99","2,01"], _
		 ["2,72","1,27","3,37"], _
		 ["2,41","0,86","2,24"], _
		 ["3,39","0,81","4,55"], _
		 ["3,61","1,37","3,83"], _
		 ["1,73","0,93","2,12"], _
		 ["4,44","1,25","2,8"], _
		 ["6,02","3,28","5,04"], _
		 ["0,42","0,13","0,5"], _
		 ["4,28","1,72","10,43"], _
		 ["7,2","1,4","2"], _
		 ["0,56","0,16","0,78"], _
		 ["0,37","0,09","0,45"], _
		 ["0,29","0,17","0,29"], _
		 ["0,29","0,12","0,41"], _
		 ["0,5","0,14","0,8"], _
		 ["0,32","0,11","0,42"], _
		 ["1,88","0,6","2,33"], _
		 ["2,98","0,57","1,99"], _
		 ["2,43","0,52","1,84"], _
		 ["2,09","0,44","2,06"]]
#Region ### START Koda GUI section ### Form=D:\ЦентрДержРодючість\Програми\Баланс\Balans.kxf
$Balans = GUICreate("Balans", 1016, 477, 190, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
$AddPole = GUICtrlCreateButton("Поле +", 8, 8, 75, 25)
GUICtrlSetOnEvent($AddPole, "AddPole")
$Export = GUICtrlCreateButton("Експорт", 168, 8, 75, 25)
$Calculate = GUICtrlCreateButton("Порахувати", 88, 8, 75, 25)
$PoleNum0 = GUICtrlCreateInput("№ Поля", 8, 48, 49, 21)
$Cultur0 = GUICtrlCreateCombo("Культура", 64, 48, 129, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, $TextCultur[0]&"|"&$TextCultur[1]&"|"&$TextCultur[2]&"|"&$TextCultur[3]&"|"&$TextCultur[4]&"|"&$TextCultur[5]&"|"&$TextCultur[6]&"|"&$TextCultur[7]&"|"&$TextCultur[8]&"|"&$TextCultur[9]&"|"&$TextCultur[10]&"|"&$TextCultur[11]&"|"&$TextCultur[12]&"|"&$TextCultur[13]&"|"&$TextCultur[14]&"|"&$TextCultur[15]&"|"&$TextCultur[16]&"|"&$TextCultur[17]&"|"&$TextCultur[18]&"|"&$TextCultur[19]&"|"&$TextCultur[20]&"|"&$TextCultur[21]&"|"&$TextCultur[22]&"|"&$TextCultur[23]&"|"&$TextCultur[24]&"|"&$TextCultur[25]);Чтение из массива данных
$Area0 = GUICtrlCreateInput("Площа", 200, 48, 65, 21)
$Urozh0 = GUICtrlCreateInput("Урож.", 272, 48, 65, 21)
$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 344, 32, 153, 41)
$N0 = GUICtrlCreateInput("N", 352, 48, 41, 21)
$P0 = GUICtrlCreateInput("P", 400, 48, 41, 21)
$K0 = GUICtrlCreateInput("K", 448, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Passport = GUICtrlCreateGroup("Паспорт поля", 664, 32, 185, 41)
$VmistPozh0 = GUICtrlCreateInput("Вміст пож.реч.", 672, 48, 81, 21)
$Schilnist0 = GUICtrlCreateInput("Щільність зл.", 760, 48, 81, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Dostupna = GUICtrlCreateGroup("Доступна", 856, 32, 153, 41)
$NDost0 = GUICtrlCreateInput("N", 864, 48, 41, 21)
$PDost0 = GUICtrlCreateInput("P", 912, 48, 41, 21)
$KDost0 = GUICtrlCreateInput("K", 960, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Potreba = GUICtrlCreateGroup("Потреба", 504, 32, 153, 41)
$NPotr0 = GUICtrlCreateInput("N", 512, 48, 41, 21)
$PPotr0 = GUICtrlCreateInput("P", 560, 48, 41, 21)
$KPotr0 = GUICtrlCreateInput("K", 608, 48, 41, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###



Global $Trig=0
While 1
   
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		 Case Execute('"$Cultur"&$Trig');Если произйдет изменение с элементом $Cultur
			
			Local $Read=GUICtrlRead(Execute('"$Cultur"&$Trig'));Чтение из строки элемента $Cultur
			Switch $Read
			    Case $TextCultur[0]
			        GUICtrlSetData(Execute('"$N"&$Trig'),$Text[0][0])
					ConsoleWrite (Execute('"$N"&$Trig'))
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[0][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[0][2])
                Case $TextCultur[1]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[1][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[1][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[1][2])
                Case $TextCultur[2]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[2][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[2][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[2][2])
					Case $TextCultur[3]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[3][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[3][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[3][2])
                Case $TextCultur[4]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[4][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[4][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[4][2])
                Case $TextCultur[5]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[5][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[5][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[5][2])
					Case $TextCultur[6]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[6][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[6][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[6][2])
                Case $TextCultur[7]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[7][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[7][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[7][2])
                Case $TextCultur[8]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[8][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[8][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[8][2])
				 Case $TextCultur[9]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[9][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[9][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[9][2])
                Case $TextCultur[10]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[10][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[10][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[10][2])
                Case $TextCultur[11]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[11][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[11][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[11][2])
					Case $TextCultur[12]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[12][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[12][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[12][2])
                Case $TextCultur[13]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[13][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[13][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[13][2])
                Case $TextCultur[14]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[14][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[14][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[14][2])
					Case $TextCultur[15]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[15][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[15][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[15][2])
                Case $TextCultur[16]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[16][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[16][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[16][2])
                Case $TextCultur[17]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[17][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[17][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[17][2])
					Case $TextCultur[18]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[18][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[18][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[18][2])
                Case $TextCultur[19]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[19][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[19][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[19][2])
                Case $TextCultur[20]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[20][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[20][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[20][2])
					Case $TextCultur[21]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[21][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[21][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[21][2])
                Case $TextCultur[22]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[22][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[22][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[22][2])
                Case $TextCultur[23]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[23][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[23][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[23][2])
					Case $TextCultur[24]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[24][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[24][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[24][2])
                Case $TextCultur[25]
                    GUICtrlSetData(Execute('"$N"&$Trig'),$Text[25][0])
                    GUICtrlSetData(Execute('"$P"&$Trig'),$Text[25][1])
                    GUICtrlSetData(Execute('"$K"&$Trig'),$Text[25][2])
            EndSwitch
		 Case $AddPole
			$Trig+=1;Прибавляет к числу еденицу, для установления нового числа в переменной
			   Local $pos=24+24*$Trig;Вычисляет из тригера сколько раз запускалась функция и вычисляет позицию в переменную
			   Assign("PoleNum"&$Trig,Execute('GUICtrlCreateInput("№ Поля", 8, $pos, 49, 21)'),2)
			   Assign("Cultur"&$Trig,Execute('GUICtrlCreateCombo("Культура", 64, $pos, 129, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))'),2)
			   GUICtrlSetData(-1, $TextCultur[0]&"|"&$TextCultur[1]&"|"&$TextCultur[2]&"|"&$TextCultur[3]&"|"&$TextCultur[4]&"|"&$TextCultur[5]&"|"&$TextCultur[6]&"|"&$TextCultur[7]&"|"&$TextCultur[8]&"|"&$TextCultur[9]&"|"&$TextCultur[10]&"|"&$TextCultur[11]&"|"&$TextCultur[12]&"|"&$TextCultur[13]&"|"&$TextCultur[14]&"|"&$TextCultur[15]&"|"&$TextCultur[16]&"|"&$TextCultur[17]&"|"&$TextCultur[18]&"|"&$TextCultur[19]&"|"&$TextCultur[20]&"|"&$TextCultur[21]&"|"&$TextCultur[22]&"|"&$TextCultur[23]&"|"&$TextCultur[24]&"|"&$TextCultur[25]);Чтение из массива данных
			   Assign("Area"&$Trig,Execute('GUICtrlCreateInput("Площа", 200, $pos, 65, 21)'),2)
			   Assign("Urozh"&$Trig,Execute('GUICtrlCreateInput("Урож.", 272, $pos, 65, 21)'),2)
			   Assign("N"&$Trig,Execute('GUICtrlCreateInput("N", 352, $pos, 41, 21)'),2)
			   Assign("P"&$Trig,Execute('GUICtrlCreateInput("P", 400, $pos, 41, 21)'),2)
			   Assign("K"&$Trig,Execute('GUICtrlCreateInput("K", 448, $pos, 41, 21)'),2)
			   Assign("VmistPozh"&$Trig,Execute('GUICtrlCreateInput("Вміст пож.реч.", 672, $pos, 81, 21)'),2)
			   Assign("Schilnist"&$Trig,Execute('GUICtrlCreateInput("Щільність зл.", 760, $pos, 81, 21)'),2)
			   Assign("NDost"&$Trig,Execute('GUICtrlCreateInput("N", 864, $pos, 41, 21)'),2)
			   Assign("PDost"&$Trig,Execute('GUICtrlCreateInput("P", 912, $pos, 41, 21)'),2)
			   Assign("KDost"&$Trig,Execute('GUICtrlCreateInput("K", 960, $pos, 41, 21)'),2)
			   Assign("NPotr"&$Trig,Execute('GUICtrlCreateInput("N", 512, $pos, 41, 21)'),2)
			   Assign("PPotr"&$Trig,Execute('GUICtrlCreateInput("P", 560, $pos, 41, 21)'),2)
			   Assign("KPotr"&$Trig,Execute('GUICtrlCreateInput("K", 608, $pos, 41, 21)'),2)
					
    EndSwitch
WEnd


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

Проблема вроде бы в том что
Код:
Execute('"$N"&$Trig')

возвращает в формулу
Код:
GUICtrlSetData(Execute('"$N"&$Trig'),$Text[0][0])

не так как задумывается :
Код:
GUICtrlSetData($N0,$Text[0][0])

а :
Код:
GUICtrlSetData("$N0",$Text[0][0])


Это только догадки....но если так,как такое исправить?
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Re: Работа с GUI Combo, Изминение формы в реальном времени

andriy111
Забудь про Assign, создай массив, где $Trig будет индексом ячейки массива.
Жди, я попытаюсь распутать твою заморочку.

Начальный смысл идеи... делаю дальше.
Обновил 5 раз
Код:
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
Global $aPole2D[2][15] = [[1]]
; Таблица ячеек массива
; 0 - PoleNum
; 1 - Cultur
; 2 - Area
; 3 - Urozh
; 4 - N
; 5 - P
; 6 - K
; 7 - VmistPozh
; 8 - Schilnist
; 9 - NDost
; 10 - PDost
; 11 - KDost
; 12 - NPotr
; 13 - PPotr
; 14 - KPotr
Local $TextCultur[26] = ["Пшениця озима (богара)", "Жито озиме", "Озимий ячмінь", "Озимий ріпак", "Ярий ячмінь", "Ярові зернові", "Овес", "Кукурудза на зерно,", "Просо", "Гречка", "Рис", "Горох", "Льон-довгунець", "Цукрові буряки", "Соняшник", "Соя", "Картопля", "Кормові буряки", "Цибуля", "Морква", "Перець", "Кукурудза на силос", "Однорічні трави (сіно)", "Люцерна (сіно)", "Конюшина (сіно)", "Бобово-злакові (сіно)"];Для удобства использования повторно
Local $Text[26][3] = [["2,89", "1", "2,07"], _
		["2,78", "1,17", "2,64"], _
		["2,47", "1,09", "2,26"], _
		["6,5", "2,4", "4,2"], _
		["2,62", "1,04", "2,2"], _
		["2,38", "0,99", "2,01"], _
		["2,72", "1,27", "3,37"], _
		["2,41", "0,86", "2,24"], _
		["3,39", "0,81", "4,55"], _
		["3,61", "1,37", "3,83"], _
		["1,73", "0,93", "2,12"], _
		["4,44", "1,25", "2,8"], _
		["6,02", "3,28", "5,04"], _
		["0,42", "0,13", "0,5"], _
		["4,28", "1,72", "10,43"], _
		["7,2", "1,4", "2"], _
		["0,56", "0,16", "0,78"], _
		["0,37", "0,09", "0,45"], _
		["0,29", "0,17", "0,29"], _
		["0,29", "0,12", "0,41"], _
		["0,5", "0,14", "0,8"], _
		["0,32", "0,11", "0,42"], _
		["1,88", "0,6", "2,33"], _
		["2,98", "0,57", "1,99"], _
		["2,43", "0,52", "1,84"], _
		["2,09", "0,44", "2,06"]]

; Формируем строку для комбо (ну как обычно в цикле)
Local $sDataCombo
For $i =0 To 25
	$sDataCombo &= $TextCultur[$i] & "|"
Next
$sDataCombo = StringTrimRight($sDataCombo, 1)
; Конец формирования строки

#region GUI Начало
$Balans = GUICreate("Balans", 1016, 477, 190, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
$AddPole = GUICtrlCreateButton("Поле +", 8, 8, 75, 25)
GUICtrlSetOnEvent($AddPole, "AddPole")
$Export = GUICtrlCreateButton("Експорт", 168, 8, 75, 25)
$Calculate = GUICtrlCreateButton("Порахувати", 88, 8, 75, 25)

$Vynos = GUICtrlCreateGroup("Винос 1ц / кг", 344, 32, 153, 41)
$Passport = GUICtrlCreateGroup("Паспорт поля", 664, 32, 185, 41)
$Dostupna = GUICtrlCreateGroup("Доступна", 856, 32, 153, 41)
$Potreba = GUICtrlCreateGroup("Потреба", 504, 32, 153, 41)

Local $tmp, $Trig = 0
_AddPole()

GUISetState(@SW_SHOW)

#endregion GUI Конец

; #include <Array.au3>
; _ArrayDisplay($aPole2D, 'Массив') ; Просмотр массива
While 1
	$nMsg = GUIGetMsg()
	For $i = 1 To $Trig
		If $nMsg = $aPole2D[$i][1] Then ; Если произйдет изменение с элементом $Cultur
			$tmp = GUICtrlRead($aPole2D[$i][1]);Чтение из строки элемента $Cultur
			For $d = 0 To 25
				If $tmp = $TextCultur[$d] Then
					GUICtrlSetData($aPole2D[$i][4], $Text[$d][0])
					ConsoleWrite($aPole2D[$i][4])
					GUICtrlSetData($aPole2D[$i][5], $Text[$d][1])
					GUICtrlSetData($aPole2D[$i][6], $Text[$d][2])
				EndIf
			Next
		EndIf
	Next
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $AddPole
			_AddPole()
	EndSwitch
WEnd

Func _AddPole()
	$Trig += 1;Прибавляет к числу еденицу, для установления нового числа в переменной
	ReDim $aPole2D[$Trig + 1][15]
	Local $pos = 24 + 24 * $Trig;Вычисляет из тригера сколько раз запускалась функция и вычисляет позицию в переменную
	$aPole2D[$Trig][0] = GUICtrlCreateInput("№ Поля", 8, $pos, 49, 21) ; PoleNum
	$aPole2D[$Trig][1] = GUICtrlCreateCombo("Культура", 64, $pos, 129, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL)) ; Cultur
	GUICtrlSetData(-1, $sDataCombo) ; Чтение из массива данных
	$aPole2D[$Trig][2] = GUICtrlCreateInput("Площа", 200, $pos, 65, 21) ; Area
	$aPole2D[$Trig][3] = GUICtrlCreateInput("Урож.", 272, $pos, 65, 21) ; Urozh
	$aPole2D[$Trig][4] = GUICtrlCreateInput("N", 352, $pos, 41, 21) ; N
	$aPole2D[$Trig][5] = GUICtrlCreateInput("P", 400, $pos, 41, 21) ; P
	$aPole2D[$Trig][6] = GUICtrlCreateInput("K", 448, $pos, 41, 21) ; K
	$aPole2D[$Trig][7] = GUICtrlCreateInput("Вміст пож.реч.", 672, $pos, 81, 21) ; VmistPozh
	$aPole2D[$Trig][8] = GUICtrlCreateInput("Щільність зл.", 760, $pos, 81, 21) ; Schilnist
	$aPole2D[$Trig][9] = GUICtrlCreateInput("N", 864, $pos, 41, 21) ; NDost
	$aPole2D[$Trig][10] = GUICtrlCreateInput("P", 912, $pos, 41, 21) ; PDost
	$aPole2D[$Trig][11] = GUICtrlCreateInput("K", 960, $pos, 41, 21) ; KDost
	$aPole2D[$Trig][12] = GUICtrlCreateInput("N", 512, $pos, 41, 21) ; NPotr
	$aPole2D[$Trig][13] = GUICtrlCreateInput("P", 560, $pos, 41, 21) ; PPotr
	$aPole2D[$Trig][14] = GUICtrlCreateInput("K", 608, $pos, 41, 21) ; KPotr
	
	ControlMove($Balans, '', $Vynos, 344, 32, 153, 17 + 24 * $Trig)
	ControlMove($Balans, '', $Passport, 664, 32, 185, 17 + 24 * $Trig)
	ControlMove($Balans, '', $Dostupna, 856, 32, 153, 17 + 24 * $Trig)
	ControlMove($Balans, '', $Potreba, 504, 32, 153, 17 + 24 * $Trig)
EndFunc   ;==>_AddPole
 
Автор
A

andriy111

Новичок
Сообщения
58
Репутация
0
Re: Работа с GUI Combo, Изминение формы в реальном времени

AZJIO
Жду, спасибо за внимание и уделенное время!


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

Большое спасибо!
Можешь еще помочь, в стиле твоей идеи, В цикле умножыть функцией например $NPotr * $Urozh, во всех созданых рядах. Спасибо!
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Re: Работа с GUI Combo, Изминение формы в реальном времени

andriy111
Вот теперь смотри. Теперь создаёт новую строку и обновляет элементы при выборе в Combo. Убрал длинную простыню, в цикле оно в разы компактней. Немного подчистил и группы увеличиваются в размере.

умножыть функцией например $NPotr * $Urozh
Код:
For $i = 1 To $Trig
	$tmp = $aPole2D[$i][3] * $aPole2D[$i][12]
Next

В чём проблема? Смотри по таблице индекс нужного тебе элемента и перемножай.


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

Смотри ещё раз, строка для Combo формируется в цикле. Я бы вообще не разделял два массива, которые по 26 элементов, чувствуется это одна и та же размерность, соответственно всегда легче разбираться в будущем. Просто рядом с инициализацией массива указываешь назначение колонок.
 
Автор
A

andriy111

Новичок
Сообщения
58
Репутация
0
Большое спасибо!! Стараюсь дорабатывать сам...
 
Верх