Вверх ↑
Этот топик читают: Гость
Ответов: 65
Рейтинг: 1
#1: 2010-08-28 16:51:04 ЛС | профиль | цитата
Никак не получается считывать и записывать значения из Combobox в ini файл
Выходит или запись или чтение, посмотрите пожалуйста где допускаю ошибку.
(При выборе значений в Combobox1 загружаются разные значения в Combobox2)

code_20262.txt


карма: 1

0
файлы: 1code_20262.txt [2KB] [185]
Ответов: 1946
Рейтинг: 174
#2: 2010-08-28 17:13:48 ЛС | профиль | цитата
Radio, у тебя ошибка с параметром DataType у ComboBox. Надо решить, что ты хочешь видеть на выдаче - индексы элементов или сами элементы. У тебя стоят индексы, а индекс первого элемента в списке=0 (второго=1 и т. д.). Однако если DataType поставить =String, то с простым StrList придётся исправлять, потому что там ты ищешь по индексу.
------------ Дoбавленo в 17.13:
Я думаюб, лучше испольовать только индексы список, а не значения элементов, тогда будет так:


Add(MainForm,9534881,44,245)
{
link(onCreate,14848569:doRead,[(109,265)(109,279)])
}
Add(StrList,3967647,289,182)
{
Strings=#3:A|B|3:C|D|0:|
Point(onGetString)
Point(doGetString)
Point(doGetIndex)
link(onGetString,12469287:doReplace,[])
}
Add(ComboBox,15041023,142,182)
{
Left=10
Top=30
Width=90
Height=21
Strings=#1:1|1:2|
Text=""
ReadOnly=0
Point(doSelectString)
Point(doSelect)
link(onClick,10326597:doEvent1,[(204,195)(204,216)])
}
Add(Replace,12469287,338,189)
{
SubStr="|"
DestStr="
"
link(onReplace,2011833:doText,[(386,195)(386,209)])
}
Add(ComboBox,2011833,401,182)
{
Left=130
Top=30
Width=85
Height=21
Text=""
ReadOnly=0
Point(doSelectString)
Point(doSelect)
link(onClick,7746652:doWrite,[])
}
Add(Ini,14848569,142,273)
{
FileName="test.ini"
Section="1"
Key="b"
Type=1
link(onResult,12056046:doCompare,[])
}
Add(If_else,12056046,191,273)
{
Type=5
link(onTrue,8039482:doEvent1,[])
}
Add(Hub,8039482,240,273)
{
link(onEvent1,15041023:doSelect,[(266,279)(266,258)(130,258)(130,237)])
link(onEvent2,5250698:doRead,[])
}
Add(Ini,5250698,436,280)
{
FileName="test.ini"
Section="1"
Key="a"
Type=1
link(onResult,3676224:doCompare,[])
}
Add(If_else,3676224,492,280)
{
Type=5
link(onTrue,10108802:doEvent1,[])
}
Add(Hub,10108802,541,280)
{
link(onEvent1,10326597:doEvent2,[(567,286)(567,254)(221,254)(221,223)])
link(onEvent2,2011833:doSelect,[(567,293)(567,265)(389,265)(389,237)])
}
Add(Hub,10326597,233,210)
{
InCount=2
link(onEvent1,8225670:doWrite,[(259,216)(259,188)(221,188)(221,160)])
link(onEvent2,3967647:doGetString,[(268,223)(268,230)])
}
Add(Ini,8225670,233,147)
{
FileName="test.ini"
Section="1"
Key="b"
Type=1
}
Add(Ini,7746652,457,182)
{
FileName="test.ini"
Section="1"
Key="a"
Type=1
}
Add(Label,15391592,142,126)
{
Left=20
Top=60
Width=60
Height=17
Caption="Combobox1"
}
Add(Label,7347846,394,126)
{
Left=135
Top=60
Width=60
Height=17
Caption="Combobox2"
}
карма: 10
1
Голосовали:Radio
Ответов: 65
Рейтинг: 1
#3: 2010-08-28 19:37:18 ЛС | профиль | цитата
3042
Не работает ваш пример так после перезапуска приложения значения в Combobox2 стоит неправильное, значения между Combobox1 и 2 должны быть привязаны друг к другу.

Изложу что хотел бы в конечном итоге:
При выборе значения из Combobx1 должны загружаться за ранее определенные значения из StrList в Combobx2 (значения между Combobox1 и 2 должны быть привязаны друг к другу.)
Значения должны сохранятся в ini файле и если в ini файле значения уже есть то в Combobox при запуске приложения они уже должны быть выбраными.
Значения в ini файле должны хранится не в виде индексов а в виде значений из StrList.
карма: 1

0
Разработчик
Ответов: 26303
Рейтинг: 2146
#4: 2010-08-28 19:51:26 ЛС | профиль | цитата
Radio, я так и не понял, что тебе надо -- записать и считать весь Combo, или записывать только выбранное
карма: 22

0
Ответов: 65
Рейтинг: 1
#5: 2010-08-28 19:54:50 ЛС | профиль | цитата
nesco
подправил выше, что хотел в конечном итоге.
записывать в ini только то что выбрано в combo и чтобы автоматом combo становились на те значения которые указаны в ini.
карма: 1

0
Ответов: 1946
Рейтинг: 174
#6: 2010-08-28 20:09:34 ЛС | профиль | цитата
А так?


Add(MainForm,9534881,-100,246)
{
link(onCreate,14848569:doRead,[(-35,266)(-35,280)])
}
Add(StrList,3967647,145,162)
{
Strings=#3:A|B|3:C|D|0:|
Point(onGetString)
Point(doGetString)
Point(doGetIndex)
link(onGetString,12469287:doReplace,[])
}
Add(ComboBox,15041023,-2,162)
{
Left=10
Top=30
Width=90
Height=21
Strings=#1:1|1:2|
Text=""
ReadOnly=0
Point(doSelectString)
Point(doSelect)
link(onClick,10326597:doEvent1,[(60,175)(60,196)])
}
Add(Replace,12469287,194,169)
{
SubStr="|"
DestStr="
"
link(onReplace,2011833:doText,[(242,175)(242,189)])
}
Add(ComboBox,2011833,257,162)
{
Left=130
Top=30
Width=85
Height=21
Text=""
DataType=1
ReadOnly=0
Point(doSelectString)
Point(doSelect)
link(onClick,7746652:doWrite,[])
}
Add(Ini,14848569,-2,274)
{
FileName="test.ini"
Section="1"
Key="b"
Type=1
link(onResult,12056046:doCompare,[])
}
Add(If_else,12056046,47,274)
{
Type=5
link(onTrue,8039482:doEvent1,[])
}
Add(Hub,8039482,96,274)
{
OutCount=3
link(onEvent1,15041023:doSelect,[(122,280)(122,248)(-14,248)(-14,217)])
link(onEvent2,10326597:doEvent2,[(122,287)(122,245)(77,245)(77,203)])
link(onEvent3,5250698:doRead,[])
}
Add(Ini,5250698,292,288)
{
FileName="test.ini"
Section="1"
Key="a"
Type=1
link(onResult,3676224:doCompare,[])
}
Add(If_else,3676224,348,288)
{
Type=5
link(onTrue,2011833:doSelect,[(392,294)(392,256)(245,256)(245,217)])
}
Add(Hub,10326597,89,190)
{
InCount=2
link(onEvent1,8225670:doWrite,[(115,196)(115,168)(77,168)(77,140)])
link(onEvent2,3967647:doGetString,[(124,203)(124,210)])
}
Add(Ini,8225670,89,127)
{
FileName="test.ini"
Section="1"
Key="b"
Type=1
}
Add(Ini,7746652,313,162)
{
FileName="test.ini"
Section="1"
Key="a"
Type=1
}
Add(Label,15391592,-2,106)
{
Left=20
Top=60
Width=60
Height=17
Caption="Combobox1"
}
Add(Label,7347846,250,106)
{
Left=135
Top=60
Width=60
Height=17
Caption="Combobox2"
}


карма: 10
1
Голосовали:Radio
Ответов: 65
Рейтинг: 1
#7: 2010-08-28 20:38:58 ЛС | профиль | цитата
3042

Если выбрать к примеру
Combo1: 2
Combo2: D
то после перезапуска в Combo2 неправильное значение:
Combo1: 2
Combo2: C а должно быть также D.
карма: 1

0
Ответов: 1946
Рейтинг: 174
#8: 2010-08-28 20:40:38 ЛС | профиль | цитата
code_20269.txt
карма: 10
1
файлы: 1code_20269.txt [1.9KB] [338]
Голосовали:Radio
Ответов: 65
Рейтинг: 1
#9: 2010-08-28 21:18:34 ЛС | профиль | цитата
3042
Все почти получилось, спасибо, за исключением того что Combo1 в ini файле хранит значение по прежнему в виде индекса а необходимо было в виде выбраного значения из того же Combo1.
карма: 1

0
Ответов: 1946
Рейтинг: 174
#10: 2010-08-28 22:24:50 ЛС | профиль | цитата
code_20275.txt
карма: 10
1
файлы: 1code_20275.txt [2.1KB] [299]
Голосовали:Radio
Ответов: 65
Рейтинг: 1
#11: 2010-08-28 22:41:40 ЛС | профиль | цитата
3042
Спасибо огромное, теперь все выполняется как задумывалось!
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#12: 2010-08-29 11:15:59 ЛС | профиль | цитата
Radio, так вроде красивей.
code_20284.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_20284.txt [1.6KB] [239]
Голосовали:Radio
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)