Что нового

[Окна, Диалоги] Привязка Combo к txt или ini файлам

prokazzza

Новичок
Сообщения
160
Репутация
2
Привет всем :smile: , есть вот такой диалог:

add47a10d00c.png


подскажите есть ли возможность автоматического заполнения каждого Combo из разных текстовых или ini файлов.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
есть ли возможность автоматического заполнения каждого Combo из разных текстовых или ini файлов.
Есть.

Код:
$INI1 = IniRead(@ScriptDir & '\1.ini', '11111', '22222222', '')
$INI2 = IniRead(@ScriptDir & '\2.ini', 'efqwwldjqo;wid', 'fewfwefwef', '') 
;и.т.д
GuiCtrlSetData($Combo1, $INI1)
GuiCtrlSetData($Combo4, $INI2)
;и.т.д
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
madmasles

Я про пример приведенный выше Zaramot'om
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
prokazzza [?]
заполнения каждого Combo из разных текстовых или ini файлов
[?]
ввод данных будет браться не из ini, а из скрипта.
Вот вам madmasles и предложил изначально определится, откуда будут браться данные!!!
А вы, опять двадцать пять! :blink:
Я про пример приведенный выше Zaramot'om
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Ребят вы меня конешно извините, но вы что все вместе жестко бухали сеня чтоли ?? Пример Zaramot мне не подходит, так как он предлагает брать данные из срипта, а мне нужно чтоб он брал из INI или TXT:

подскажите есть ли возможность автоматического заполнения каждого Combo из разных текстовых или ini файлов.

Лучше примерчик какой-нить подкинули, пол дня уже голову ломаю.

PS Изменил 3 пост.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
prokazzza [?]
Ребят вы меня конешно извините, но вы что все вместе жестко бухали сеня чтоли ??
А помоему батенька вы хамите!!! :mad:
Читайте справку в таком случае! В частности по макросам и функциям для работы с файлами, и INI файлами!!!
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
prokazzza
Пример Zaramot выводит данные из прилагаемых ini файлов - если Вы проверяли. Естественно Что бы заполнялось по порядку значения должны быть разделены чертой |
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Medic84

Я бы не стал отписываться если бы все заработало, но:

19432575af8b.png
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
prokazzza [?]
Я бы не стал отписываться если бы все заработало, но:
А файлик то создал?
Код:
$INI1 = IniRead(@ScriptDir & '\1.ini', '11111', '22222222', '')
$INI2 = IniRead(@ScriptDir & '\2.ini', 'efqwwldjqo;wid', 'fewfwefwef', '')

В файле 1.ini должна существовать секция 11111 и значение для 22222222
А в файле 2.ini должна существовать секция efqwwldjqo;wid и значения для fewfwefwef

OffTopic:
P.S. Нда, полегче назвать ну вообще никак было :(
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Вот сам скриптик:

Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1_1 = GUICreate("Form1", 354, 572, 821, 257)
$Button1 = GUICtrlCreateButton("Button1", 24, 520, 129, 25)
$Combo1 = GUICtrlCreateCombo("Combo1", 16, 208, 153, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Pic1 = GUICtrlCreatePic("C:\1.jpg", 0, 0, 353, 169)
$Group1 = GUICtrlCreateGroup("Group1", 8, 184, 169, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("Button2", 200, 520, 129, 25)
$Combo2 = GUICtrlCreateCombo("Combo2", 16, 272, 321, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Group2 = GUICtrlCreateGroup("Group2", 8, 248, 337, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Combo3 = GUICtrlCreateCombo("Combo3", 16, 336, 321, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Group3 = GUICtrlCreateGroup("Group3", 8, 312, 337, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Group4", 8, 464, 337, 97)
$Input1 = GUICtrlCreateInput("Input1", 16, 488, 321, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("Label1", 144, 376, 36, 17)
$Pic2 = GUICtrlCreatePic("C:\2.jpg", 8, 376, 129, 81)
$Group5 = GUICtrlCreateGroup("Group5", 184, 184, 161, 57)
$Combo4 = GUICtrlCreateCombo("Combo4", 192, 208, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

$INI1 = IniRead(@ScriptDir & '\1.ini', '[commands]', 'section', '')
$INI2 = IniRead(@ScriptDir & '\2.ini', '[drivers]', 'intel', '') 
GuiCtrlSetData($Combo1, $INI1)
GuiCtrlSetData($Combo4, $INI2)

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

	EndSwitch
WEnd
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
$INI1 = IniRead(@ScriptDir & '\1.ini', '[commands]', 'section', '')
$INI2 = IniRead(@ScriptDir & '\2.ini', '[drivers]', 'intel', '')

Неверная запись!
Имя секции записывается без скобок!
 
Автор
P

prokazzza

Новичок
Сообщения
160
Репутация
2
Тьфу, моя глупость, точно. Medic84 благодарю!!!

Собственно возникло 2 вопроса:

Как сделать чтобы 1 значение из ini уже стояло в Combo, а не как сейчас: Combo1, Combo2 и т.д.
И 2 вопрос как сделать ComboBox недоступным для внешнего редактирования, чтоб оставался только выбор, немного смущает то что случайно нажав на клаве какую нить кнопку, значение перезаписывается в ComboBox, знаю что это ничего не менят, но всеравно мешает.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
prokazzza
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1_1 = GUICreate("Form1", 354, 572, 821, 257)
$Button1 = GUICtrlCreateButton("Button1", 24, 520, 129, 25)
$Combo1 = GUICtrlCreateCombo("", 16, 208, 153, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
$Pic1 = GUICtrlCreatePic("C:\1.jpg", 0, 0, 353, 169)
$Group1 = GUICtrlCreateGroup("Group1", 8, 184, 169, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("Button2", 200, 520, 129, 25)
$Combo2 = GUICtrlCreateCombo("Combo2", 16, 272, 321, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
$Group2 = GUICtrlCreateGroup("Group2", 8, 248, 337, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Combo3 = GUICtrlCreateCombo("Combo3", 16, 336, 321, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
$Group3 = GUICtrlCreateGroup("Group3", 8, 312, 337, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Group4", 8, 464, 337, 97)
$Input1 = GUICtrlCreateInput("Input1", 16, 488, 321, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("Label1", 144, 376, 36, 17)
$Pic2 = GUICtrlCreatePic("C:\2.jpg", 8, 376, 129, 81)
$Group5 = GUICtrlCreateGroup("Group5", 184, 184, 161, 57)
$Combo4 = GUICtrlCreateCombo("", 192, 208, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST))
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

$INI1 = IniRead(@ScriptDir & '\1.ini', 'commands', 'key', '')
$INI2 = IniRead(@ScriptDir & '\2.ini', 'drivers', 'key2', '') 
GuiCtrlSetData($Combo1, $INI1, StringRegExpReplace($INI1, '^(.*?)\|.*', '\1'))
GuiCtrlSetData($Combo4, $INI2, StringRegExpReplace($INI2, '^(.*?)\|.*', '\1'))

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

    EndSwitch
WEnd

1.ini
Код:
[commands]
key=уке|hsgh|65456|bva4e5|dsf-dfh

2.ini
Код:
[drivers]
key2=ghkfjty|hsg324536yu4nh|dfghdf|yuwre|456-ytujrt
 

Dm666

Осваивающий
Сообщения
221
Репутация
48
prokazzza [?]
как сделать ComboBox недоступным для внешнего редактирования, чтоб оставался только выбор
Код:
$Combo1 = GUICtrlCreateCombo("Combo1", 16, 208, 153, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$CBS_DROPDOWNLIST))
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
prokazzza
Там ещё можно поменять две строчки
Код:
GuiCtrlSetData($Combo1, $INI1, StringLeft($INI1, StringInStr($INI1&'|', '|')-1))
GuiCtrlSetData($Combo4, $INI2, StringLeft($INI2, StringInStr($INI2&'|', '|')-1))


Во первых строчные функции работают быстрее регулярных выражений, во вторых если в добавляемом списке один элемент, то регулярное выражение в том примере не сработает, хотя это можно решить добавлением

Код:
&'|'
 
Верх