Страница: 1 | 2 |
Вопрос: Как сделать синхронность в 3x ComboBox'ax
Добавлено: 11.03.07 19:50
Автор вопроса: Uksus | ICQ: 407373902
У меня есть три ComBox'a:по именам CB1,CB2 и CB3...
и надо чтоб при выделении любого элемента из CB1 Автоматом выделялись элементы с такими же индексами в CB2 и CB3
И вот тут еще один вопрос как сохранять все элементы которые были добавлены в ComboBox, тоесть чтоб после закрытия программа автоматически сохраняла весь список элементов и при запуске программы они снова стояли на своих местах
ПАМАГИТЕ ЧАЙНИКУ
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #1
Добавлено: 11.03.07 20:47
1.
Combo2.ListIndex = Combo1.ListIndex
Combo3.ListIndex = Combo1.ListIndex
End Sub
2. Делай цикл по каждому комбо и сохраняй в БД или теустовый файл. При запуске проги - считывай.
Номер ответа: 2
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #2
Добавлено: 11.03.07 22:29
вообще вся эта шняга должна быть заточена под работу с какими-нить биндингсурсами или чем-то вроде - не знаю что там в шестом васике. и если это действительно работа с БД, то лучше всё делать стандартными средствами - в дизайнере, почти не прибегая к коду. Тогда и данные во всех трёх комбо не будут дублироваться в памяти, а просто будут ссылаться на единый ресурс. Это правильнее. Уверен и в шестом васике есть возможность всё это сделать таким образом, что синхронизация выделенного будет производится автоматом.
Номер ответа: 3
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #3
Добавлено: 12.03.07 08:00
2Arseny к тебе два вопроса
1й Как лучше это дело зациклить. и
2й нужен такой файл чтоб инфу с него можно было считать только из проги (просто вариантов уйма а нужен такой чтоб после сохранения в этот файл БД Хранила не тока Элементы но и их синхронность)
З.Ы. Я чайник (скажем так), по VB тока начинаю разбираться если можно поподробней, со сносками на Главные моменты (типа 'Это запись в БД, 'А это чтение из БД)... ЗАРАНЕЕ СПАСИБО
Номер ответа: 4
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #4
Добавлено: 12.03.07 18:24
а за чем циклить просто когда он виделяет какой нибудь елемент автоматом виделять і в других CB етот індекс
Пример:
Combo2.ListIndex = Combo1.ListIndex
Combo3.ListIndex = Combo1.ListIndex
End Sub
Private Sub Combo2_Click()
Combo1.ListIndex = Combo2.ListIndex
Combo3.ListIndex = Combo2.ListIndex
End Sub
Private Sub Combo3_Click()
Combo1.ListIndex = Combo3.ListIndex
Combo2.ListIndex = Combo3.ListIndex
End Sub
Private Sub Form_Load()
Combo1.AddItem "Õòî"
Combo2.AddItem "Ïèøå"
Combo3.AddItem "virusu"
End Sub
Номер ответа: 5
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #5
Добавлено: 13.03.07 08:25
2Docal: с Комбиками в твоем коде всё ясно а вот зачем последние строки
Combo1.AddItem "Õòî"
Combo2.AddItem "Ïèøå"
Combo3.AddItem "virusu"
End Sub
Чет я не понял разъясни....
Номер ответа: 6
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #6
Добавлено: 13.03.07 08:35
Да кстати прога выдает ошибку при добавлении строк
Combo3.ListIndex = Combo1.ListIndex
и еще такой прикол у вас такая строка кода
а у меня вот такая
Чет не пойму че с этим сделать то ...
Номер ответа: 7
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #7
Добавлено: 13.03.07 09:11
КОРОЧЕ С СИНХРОНИЗАЦИЕЙ РАЗОБРАЛСЯ НАДО СДЕЛАТЬ ВОТ ТАК
CB2.SelectedIndex() = CB1.SelectedIndex()
CB3.SelectedIndex() = CB1.SelectedIndex()
End Sub
Private Sub CB2_SelectedIndexChanged()
CB1.SelectedIndex() = CB2.SelectedIndex()
CB3.SelectedIndex() = CB2.SelectedIndex()
End Sub
Private Sub CB3_SelectedIndexChanged()
CB1.SelectedIndex() = CB3.SelectedIndex()
CB2.SelectedIndex() = CB3.SelectedIndex()
End Sub
ТЕПЕРЬ НАДО ПОНЯТЬ КАК СОХРАНЯТЬ ЭЛЕМЕНТЫ СПИСКА В БД И ПРИ СЛЕДУЮЩЕМ ЗАПУСКЕ ВЫВОДИТЬ ИХ НА СВОИ МЕСТА В СПИСОК
... КАКИМ МАКАРОМ ЭТО СДЕЛАТЬ НАРОД ...
Номер ответа: 8
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #8
Добавлено: 13.03.07 10:11
Ты на чем пишешь?
В БД 3 поля, БЕЗ всяких индексов.
В первое поле сохраняешь значения комбо1, во второе - комбо2 и т.д.
При загрузке программы встаешь на первую запись и поочередно вносишь (AddItem) в комбо.
Чего непонятно?
Номер ответа: 9
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #9
Добавлено: 13.03.07 11:18
Пишу на VS.NET...
тут такое дело... не правильно поставил вопрос изначально(ай эм СОРРИ, бекоз ай эм чайник)
нужно: 1е - из 3х текстбоксов текст в 3 комбика ЗАСУНУТЬ(
CB1.Items.Insert(0, TB1.Text)
CB2.Items.Insert(0, TB2.Text)
CB3.Items.Insert(0, TB3.Text)
End Sub
это я сделал...
2е - Засинхронить все элементы (с одинак индексами) комбиков
CB2.SelectedIndex() = CB1.SelectedIndex()
CB3.SelectedIndex() = CB1.SelectedIndex()
End Sub
Private Sub CB2_SelectedIndexChanged()
CB1.SelectedIndex() = CB2.SelectedIndex()
CB3.SelectedIndex() = CB2.SelectedIndex()
End Sub
Private Sub CB3_SelectedIndexChanged()
CB1.SelectedIndex() = CB3.SelectedIndex()
CB2.SelectedIndex() = CB3.SelectedIndex()
End Sub
эт я тоже сделал...
Остается сделать вот что:
3е - все элементы комбиков СОХРАНИТЬ в БД(которую кстати я так и не сделал! НЕ ПОЙМУ КАК)
4е - при запуске программы из БД все элементы возвращаются в свои комбики и на свои места...(причем чтобы можно было добавлять новые элементы как в начале из текстбоксов и опять сохранять эти элементы в БД к уже имеющимся там предыдущим элементам)
ПАДСКАЖИ КАК ЭТО ДЕЛО НАРИСОВАТЬ
Номер ответа: 10
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #10
Добавлено: 13.03.07 12:00
раз у тебя БД, тогда чего ты извращаешся ручками это синхронизируя?
кинь на форму три комбика и один BindingSource
Dim tblData As New Data.DataTable() ' single source
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
tblData.Columns.Add("ID", GetType(Integer))
tblData.Columns.Add("NAME", GetType(String))
tblData.Rows.Add(1, "Иванов"
tblData.Rows.Add(2, "Петров"
tblData.Rows.Add(3, "Сидоров"
ComboBox1.DataSource = BindingSource1
ComboBox2.DataSource = BindingSource1
ComboBox3.DataSource = BindingSource1
BindingSource1.DataSource = tblData
ComboBox1.DisplayMember = "NAME"
ComboBox1.ValueMember = "ID"
ComboBox2.DisplayMember = "NAME"
ComboBox2.ValueMember = "ID"
ComboBox3.DisplayMember = "NAME"
ComboBox3.ValueMember = "ID"
End Sub
End Class
DataTable, который я здесь изготавливал и заполнял вручную, тебе даже создавать не придётся - возьмёшь его из своей базы данных (типизированного датасета ли вытащишь или ещё как - не знаю, дело твоё).
В чём соль:
- датасет - набор таблиц и связок между ними
- таблица - хранилище данных
- BindingSource привязывается к таблице и связывает её с теми элементами, которые ссылаются на BindingSource, при этом есть такое понятие, как текущая запись
- все остальные компоненты привязываясь к этому биндингу следуют его текущей записи
понакидай всякого добра на форму, повозись со свойствами объектов в полях Bindings и разными там DataMember, DataValue и через пару дней будешь без проблем лепить простенькие программки, почти не прибегая к коду.
Номер ответа: 11
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #11
Добавлено: 13.03.07 12:21
Блин... Это должно было быть первой строчкой вопроса!
Номер ответа: 12
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #12
Добавлено: 13.03.07 14:55
2Arseny Ну с кем не бывает я ж говорил что я в этом деле Чайнецкий...
Все когда то начинают учиться и хорошо что есть такие люди которые уже это знают и помогут...
Номер ответа: 13
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #13
Добавлено: 13.03.07 15:01
2Neco БД у меня ящё нету! (не врубился я пока как яё сделать)
Номер ответа: 14
Автор ответа:
Uksus
ICQ: 407373902
Вопросов: 10
Ответов: 23
Профиль | | #14
Добавлено: 13.03.07 15:03
2Neco БД у меня ящё нету! (не врубился я пока как яё сделать)может есть какой нить шаблончик БД более подходящий для моего варианта
Номер ответа: 15
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #15
Добавлено: 13.03.07 15:16
там всё в дизайнере
добавить датасурс (в менюхе сверху должно быть)
там выбираешь (чтоб по простому) сиквеловский датафайл, он тебе его сам создаст и там потом создашь таблички (тож в дизайнере), перетащишь их в свой датасет и можешь приступать к комбикам.
если надо подробнее, вечером попробую описать