Option Button

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Option Button

Сообщение sergey-911 » 07.06.2007 (Чт) 15:23

Доброго времени суток уважаемые.
Делаю универсальную форму - фильтр для своих приложений (таблиц к БД). За образец взял фильтр Excel. При загрузке данной формы в ней расположены 2-а комбобокса, где пользователь выбирает названия нужного поля из БД. А между ними расположена логика условий - искать "это И это", либо "это Или это" (переключатели Option Button). Есть ещё кнопка "+", которая добавляет дополнительные условия для ввода информации (если 2-х условий недостаточно) - (см. рис.).
Изображение
Проблема в том, что я не могу сделать так, чтобы в каждых 2-х последующих Option Button пользователь выбирал нужный, оставляя выбранное значение в предыдущих (см. рис.).

Добавляю на форму следующим образом:
Код: Выделить всё

Private Sub cmdAddCondition_Click()
   
    Dim i As Integer
    i = cmbColName.Count
    Load cmbColName(i)
    Load cmbCondition(i)
    cmbColName(i).Top = cmbColName(i - 1).Top + 850
    cmbCondition(i).Top = cmbCondition(i - 1).Top + 850
    cmdAddCondition.Top = cmdAddCondition.Top + 850
    cmbColName(i).Visible = True
    cmbCondition(i).Visible = True
    Call NastrCmb(cmbColName(i))
    Call NastrCmb(cmbCondition(i))
    Set cmbColName(i).RowSource = cmbColName(i - 1).RowSource
    cmbColName(i).SelectedItem = 1
    i = optSovpNo.Count
    Load optSovpNo(i)
    Load optSovpYes(i)
    optSovpNo(i).Top = optSovpNo(i - 1).Top + 850
    optSovpYes(i).Top = optSovpYes(i - 1).Top + 850
    optSovpNo(i).Visible = True
    optSovpYes(i).Visible = True
    optSovpNo(i).Value = True

End Sub


P.S. Пытался Option Buttin поместить во фрейм, но это менее наглядно, и столкнулся с рядом др. проблем... Извините за беспокойство, уважаемые.
С уважением, Сергей.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.06.2007 (Чт) 15:28

Нужно положить каждую пару во фрейм без рамки.
Изображение

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 07.06.2007 (Чт) 15:39

Спасибо tyomitch.
НО!...
Проблема 1 - Не могу положить каждую пару во фрейм, т.к. новая пара помещается в предыдущий фрейм, а не в новый.
Проблема 2 - Не могу убрать рамку у фрейма.

Делал так
Код: Выделить всё

Private Sub cmdAddCondition_Click()

    Dim i As Integer
    i = cmbColName.Count
    Load cmbColName(i)
    Load cmbCondition(i)
    cmbColName(i).Top = cmbColName(i - 1).Top + 850
    cmbCondition(i).Top = cmbCondition(i - 1).Top + 850
    cmdAddCondition.Top = cmdAddCondition.Top + 850
    cmbColName(i).Visible = True
    cmbCondition(i).Visible = True
    Call NastrCmb(cmbColName(i))
    Call NastrCmb(cmbCondition(i))
    Set cmbColName(i).RowSource = cmbColName(i - 1).RowSource
    cmbColName(i).SelectedItem = 1
    i = optSovpNo.Count
    Load SSFrame(i)
    Load optSovpNo(i)
    Load optSovpYes(i)
    SSFrame(i).Top = SSFrame(i - 1).Top + 850
    optSovpNo(i).Top = optSovpNo(i - 1).Top + 850
    optSovpYes(i).Top = optSovpYes(i - 1).Top + 850
    SSFrame(i).Visible = True
    optSovpNo(i).Visible = True
    optSovpYes(i).Visible = True
    optSovpNo(i).Value = True

End Sub
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 07.06.2007 (Чт) 15:43

Вторую проблему решил, просто в качестве фрейма использовал сторонний компонент, а там этого свойства нет.

Но осталась Проблема 1, а это главное...
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.06.2007 (Чт) 15:52

Что-то у меня рисунки не показываются...

В общем, я бы подобное делал на базе одного Grid-a. :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 07.06.2007 (Чт) 16:17

С BorderStyle я разобрался.

Проблема в том, что Option Button помещаются не в НОВЫЙ. а в ПРЕДЫДУЩИЙ фрейм (см. аттач).

В общем, я бы подобное делал на базе одного Grid-a.

Andrey Fedorov, что имелось ввиду?
Вложения
Filtr.rar
Пример фориы поиска, убрал всё лишнеею
(2.82 Кб) Скачиваний: 81
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.06.2007 (Чт) 16:38

sergey-911 писал(а):Andrey Fedorov, что имелось ввиду?


Реализовал бы твою форму на базе одного Grid-a - она хорошо в него ложится.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 07.06.2007 (Чт) 16:46

Я сначала так и хотел, но передумал, т.к. ввод данных пользователем будет осуществляться в разл. компоненты, и их кол. во будет меняться...
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.06.2007 (Чт) 16:56

sergey-911 писал(а):Я сначала так и хотел, но передумал, т.к. ввод данных пользователем будет осуществляться в разл. компоненты, и их кол. во будет меняться...


У Grid-a отлично меняется кол-во строк.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 07.06.2007 (Чт) 17:25

У Grid-a отлично меняется кол-во строк, согласен. Но, менять придётся и кол-во строк, и кол-во столбцов. Так, например, если пользователь выберет "=", то мользователю, в зависимости от типа данных в БД, ему предлагается наиболее подходящий контрол для ввода текста, числа или даты. А если юзер выбрал "между", то 2-а контрола для ввода информации. И т.п. Следовательно, в гриде нужно менять кол-во столбцов...

Но мы отвлеклись от решения проблемы 1!
Проблема 1 - Не могу положить каждую пару во фрейм, т.к. новая пара помещается в предыдущий фрейм, а не в новый.
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.06.2007 (Чт) 19:36

sergey-911 писал(а):У Grid-a отлично меняется кол-во строк, согласен. Но, менять придётся и кол-во строк, и кол-во столбцов. Так, например, если пользователь выберет "=", то мользователю, в зависимости от типа данных в БД, ему предлагается наиболее подходящий контрол для ввода текста, числа или даты.]


У нормальных Grid-ов в качестве редактируемой ячейки может быть использован любой контрол. Хоть свой UserControl.

sergey-911 писал(а):А если юзер выбрал "между", то 2-а контрола для ввода информации. И т.п. Следовательно, в гриде нужно менять кол-во столбцов...


Не нужно - для "между" добавить колонку, которую в других ситуациях просто блокируется.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.06.2007 (Чт) 19:59

sergey-911 писал(а):Но мы отвлеклись от решения проблемы 1!


Не мудри - сделай свой UserControl с твоей парочкой OptionButton,TextBox и прочими нужными компонентами и просто добавляй его на форму. Просто и эффектно.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 08.06.2007 (Пт) 1:05

Не мудри - сделай свой UserControl с твоей парочкой OptionButton,TextBox и прочими нужными компонентами и просто добавляй его на форму. Просто и эффектно.

Наверное, Андрей, так и сделаю....
P.S. Неужели, програмно, нельзя поместить Option Вutton во фрейм...?
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 08.06.2007 (Пт) 1:40

Набрал в яндексе
программно поместить во фрейм

, и в первой же строке получил ссылку на лучший сайт всех времён и народов
[url]
http://bbs.vbstreets.ru/search.php?sear ... 325c60360b
[/url]
, где Алибек ответил на данный вопрос, заданый 3 года назад... :D
Нужно было добавить в код:
Код: Выделить всё

Set optSovpNo(i).Container = SSFrame(i)
Set optSovpYes(i).Container = SSFrame(i)

Плохо искал, каюсь... Даже Яндекс сразу нашёл на данном сайте ответ, а я нет... :roll: [/code]
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 08.06.2007 (Пт) 2:05

Вопрос, конечно, можно считать решённым, НО, даже интересно... Появилась интересная особенность... При загрузке следующнго Option Bunnon в следующий фрейм, снимается значение в самом первом фрейме
Код: Выделить всё
optSovpNo(0).Value

Конечно, данную проблему легко програмно решить, просто интересно, почему это происходит...
Всем спасибо за помощь, уважаемые! :D
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 08.06.2007 (Пт) 11:36

sergey-911 писал(а):P.S. Неужели, програмно, нельзя поместить Option Вutton во фрейм...?


Можно. Но нафига мучиться, когда все решается значительно проще и удобней?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 08.06.2007 (Пт) 12:48

sergey-911 писал(а):Конечно, данную проблему легко програмно решить, просто интересно, почему это происходит...


Потому что вначале ты грузишь контрол в тот контейнер где находится первый элемент.

P.S Зря мучаешься - нормальный подход тебе уже сказали - он на порядок проще...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re:

Сообщение sergey-911 » 14.09.2008 (Вс) 22:48

Andrey Fedorov писал(а):У нормальных Grid-ов в качестве редактируемой ячейки может быть использован любой контрол. Хоть свой UserControl.


Здравствуй Andrey Fedorov.
Я перешел на VB 2008, и сейчас работаю над большим проектом.
Решил последовать твоему совету сделать фильтр в гриде. Разработал интерфейс, но вот не могу в ячейку грида поместить нужный мне контрол. Скажи плиз, как это делается?
http://bbs.vbstreets.xian.ru/viewtopic.php?f=2&t=37480 - здесь подробное описание проблемы, с примером. Благодарю за любую информацию.
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Re:

Сообщение Andrey Fedorov » 16.09.2008 (Вт) 23:26

sergey-911 писал(а):Решил последовать твоему совету сделать фильтр в гриде. Разработал интерфейс, но вот не могу в ячейку грида поместить нужный мне контрол. Скажи плиз, как это делается?
http://bbs.vbstreets.xian.ru/viewtopic.php?f=2&t=37480 - здесь подробное описание проблемы, с примером. Благодарю за любую информацию.


У Janus GridEx среди примеров есть на данную тему. С другими просто я не работаю.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: Re:

Сообщение sergey-911 » 17.09.2008 (Ср) 17:32

Andrey Fedorov писал(а):У Janus GridEx среди примеров есть на данную тему. С другими просто я не работаю.


А можно ли нужный компонент поместить в нужную ячейку Janus GridEx, а не присвоить компонент всему столбцу?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Re:

Сообщение Andrey Fedorov » 18.09.2008 (Чт) 6:51

sergey-911 писал(а):
Andrey Fedorov писал(а):У Janus GridEx среди примеров есть на данную тему. С другими просто я не работаю.


А можно ли нужный компонент поместить в нужную ячейку Janus GridEx, а не присвоить компонент всему столбцу?


Можно.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: Option Button

Сообщение sergey-911 » 18.09.2008 (Чт) 8:18

Andrey Fedorov, компонент под .Net? Работает шустро? Какого года?
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Option Button

Сообщение Andrey Fedorov » 18.09.2008 (Чт) 15:24

sergey-911 писал(а):Andrey Fedorov, компонент под .Net? Работает шустро? Какого года?


Есть под NET, есть под VB6 (последний, конечно, попроще но нужное вам тоже легко делает).

Остальное смотрите сами (чтобы не пересказывать): http://www.janusys.com/controls/
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: Option Button

Сообщение sergey-911 » 19.09.2008 (Пт) 17:23

Спасибо Andrey Fedorov.
P.S. Сайт http://www.janusys.com/controls/, к сожалению, не работает. :(
С уважением, Сергей.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Option Button

Сообщение Andrey Fedorov » 19.09.2008 (Пт) 21:27

sergey-911 писал(а):Спасибо Andrey Fedorov.
P.S. Сайт http://www.janusys.com/controls/, к сожалению, не работает. :(


Работает. Может нужно подождать немножко?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 71

    TopList