Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

связанные combobox'ы

1.9K
24 декабря 2003 года
Solomon
70 / / 24.12.2003
Господа!
Не подскажите ли каким образом сделать такую вещь - в имеющихся 3 combobox'ах 5 одинаковых элементов, можно ли их связать так, чтобы выбирая один элемент в одном combe, он автоматически появлялся в 2 других?
2.0K
24 декабря 2003 года
Fazil6
126 / / 17.12.2003
Цитата:
Originally posted by Solomon
Господа!
Не подскажите ли каким образом сделать такую вещь - в имеющихся 3 combobox'ах 5 одинаковых элементов, можно ли их связать так, чтобы выбирая один элемент в одном combe, он автоматически появлялся в 2 других?



Можно, причем самыми разными способами...

1.9K
24 декабря 2003 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by Fazil6


Можно, причем самыми разными способами...



Тогда не подскажите ли несколько из них?

310
24 декабря 2003 года
fellow
853 / / 17.03.2003
Элементы списка хранятся в его свойстве Items. Это свойство имеет тип TStrings, или список строк. У этого типа есть метод IndexOf, позволяющий узнать индекс указанной строки. В первом списке выбирается элемент, свойство списка ItemIndex показывает индекс выбранного элемента, Combo1->Items[Combo1->ItemIndex] даёт строку, эта строка ищется во втором списке: Сombo2->Items->IndexOf(Combo1->Items->Strings[Combo1->ItemIndex]). По полученному индексу устанавливаете Combo2->ItemIndex.
293
25 декабря 2003 года
SEDEGOFF
586 / / 06.10.2002
А делать это все надо в событии OnChange
1
25 декабря 2003 года
kot_
7.3K / / 20.01.2000
При условии, что эти самые индексы во всех комбобоксах соответствуют одной и той же строке...:)
310
25 декабря 2003 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by kot_
При условии, что эти самые индексы во всех комбобоксах соответствуют одной и той же строке...:)


Не обязательно. Поиск в связанном комбе производится по строке, выбранной в ведущем комбе: Сombo2->Items->IndexOf(Combo1->Items->Strings[Combo1->ItemIndex]).

1.9K
26 декабря 2003 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by fellow

Не обязательно. Поиск в связанном комбе производится по строке, выбранной в ведущем комбе: Сombo2->Items->IndexOf(Combo1->Items->Strings[Combo1->ItemIndex]).



Большое спасибо всем участникам форума за советы - все так на самом деле просто - однако интересно, что в огромной книжке Архангельского про свойство IndexOf кажется ничего нет (это при том, что там все разжевано до невозможности).
Тогда не подскажите ли ответ на похожий вопрос - как сделать, чтобы в 3 других comb'ах (там тоже те же 5 элементов, но в них придется потом переводить из первых) выбранный элемент первого comb'а исчезал?

358
26 декабря 2003 года
moonmike
423 / / 18.10.2002
Цитата:
Originally posted by Solomon


Большое спасибо всем участникам форума за советы - все так на самом деле просто - однако интересно, что в огромной книжке Архангельского про свойство IndexOf кажется ничего нет (это при том, что там все разжевано до невозможности).


Забрасывай читать Архангельского, если хочешь стать программистом а не мартышкой кликательницей. Купи себе Калверта или BCB Dev Guide.

Цитата:
Originally posted by Solomon

Тогда не подскажите ли ответ на похожий вопрос - как сделать, чтобы в 3 других comb'ах (там тоже те же 5 элементов, но в них придется потом переводить из первых) выбранный элемент первого comb'а исчезал?


Исчезал или удалялся???Если исчезал то куда-нить его сохраняй а потом делай Delete(cb->Item[1]), примерно так, Билдер пускать впадлу.

1.9K
28 декабря 2003 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by moonmike

Забрасывай читать Архангельского, если хочешь стать программистом а не мартышкой кликательницей. Купи себе Калверта или BCB Dev Guide.

[COLOR=blue]Спасибо за направление (и за сравнение-:))[/COLOR]

Исчезал или удалялся???Если исчезал то куда-нить его сохраняй а потом делай Delete(cb->Item[1]), примерно так, Билдер пускать впадлу.



[COLOR=blue]Вообще надо
1) чтобы при одном Check'е первый элемент вообще исчезал из списка (из всех списков)
2) чтобы он исчезал во втором Comb'е при выборе его в первом (то есть в этих списках задаются системы счисления, чтобы например EVPU не переводить в EVPU)[/COLOR]

310
28 декабря 2003 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by Solomon


[COLOR=blue]Вообще надо
1) чтобы при одном Check'е первый элемент вообще исчезал из списка (из всех списков)
2) чтобы он исчезал во втором Comb'е при выборе его в первом (то есть в этих списках задаются системы счисления, чтобы например EVPU не переводить в EVPU)[/COLOR]


Делаете примерно то же, что я Вам и говорил. Находите в нужном комбе нужную строку и удаляете этот пункт из комба.
А что такое EVPU?

1.9K
29 декабря 2003 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by fellow

Делаете примерно то же, что я Вам и говорил. Находите в нужном комбе нужную строку и удаляете этот пункт из комба.
А что такое EVPU?



Дело в том, что, как я понял, в Borland'е нет такого действия (то есть метода для строки как элемента массива) как например Enable (то есть видимый , но недоступный, как у label'ов и так далее), потому наверное, придется дважды удалять (удалять внутри удаления) первый элемент - как поведет себя родной Builder, пока мне не ясно (то есть могут ли быть какие-то сбои, и вообще, эта штука предусмотрена разработчиками?) когда сделаю ( ...если), непременно напишу...
EVPU - это полиграфический формат, созданный и используемый специально для FINALE (самый мощный сейчас нотный редактор), а сделать я хочу, соответственно, конвертер для перевода его в другие - дюймы, пики (написал бы больше, да не могу - когда сделаю, все подробно объясню)...

310
29 декабря 2003 года
fellow
853 / / 17.03.2003
Внимательнее изучите свойства и методы компонентов (Component properties and methods). Некоторые свойства сами являются компонентами, у которых есть и свойства, и методы. Один из распространённых компонентов в VCL - коллекция строк. В общем, читайте справку и удачи Вам.
1.9K
29 декабря 2003 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by fellow
Внимательнее изучите свойства и методы компонентов (Component properties and methods). Некоторые свойства сами являются компонентами, у которых есть и свойства, и методы. Один из распространённых компонентов в VCL - коллекция строк. В общем, читайте справку и удачи Вам.



Да, да, спасибо, когда написал, то понял, что написал не то, буду изучать! ( у Архантельского это как-то не очень понятно...)

1.9K
30 декабря 2003 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by Solomon

OK, в связи со всем вышеизложенным возникло еще два вопроса (прошу прощения, если они покажутся уж совесм примитивными)
1) существует ли какой-то аналог вот такому
if (Check1->Unchecked)
{
...
}
потому как нужно, чтобы именно при снятом Checke происходило событие, смотрел справку, пока ничего не нашел...

2)удаление элемента из списка не заняло особого труда, однако Delete просто удаляет элемент без возвращения его в список (пробовал Move - то же), пытался задать две переменные, принимающие соответственно значения первого удаленнного элемента и второго, чтобы потом первый вернуть (Items->Add(...)), но возвращается только число...
заранее спасибо

310
30 декабря 2003 года
fellow
853 / / 17.03.2003
1) У большинства управляющих компонентов имеется событие OnClick. В обработчике этого события проверяете свойство Checked.
2) Перед удалением запоминаете строку в переменной:
AnsiString tmp = YourCombo->Items->Strings[yourstringindex];
потом удаляете:
YourCombo->Items->Delete(yourstringindex);

Когда нужно, восстанавливаете:
YourCombo->Items->Add(tmp);
1.9K
03 января 2004 года
Solomon
70 / / 24.12.2003
Цитата:
Originally posted by fellow
1) У большинства управляющих компонентов имеется событие OnClick. В обработчике этого события проверяете свойство Checked.
2) Перед удалением запоминаете строку в переменной:
AnsiString tmp = YourCombo->Items->Strings[yourstringindex];
потом удаляете:
YourCombo->Items->Delete(yourstringindex);

Когда нужно, восстанавливаете:
YourCombo->Items->Add(tmp);



Огромное спасибо!
Значит, дело было в том, что задавать нужно через String-переменную (эта мысль приходила мне в голову, только я не знад, как ее реализовать...)
Еще раз всех с Новым Годом!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог