связанные combobox'ы
Не подскажите ли каким образом сделать такую вещь - в имеющихся 3 combobox'ах 5 одинаковых элементов, можно ли их связать так, чтобы выбирая один элемент в одном combe, он автоматически появлялся в 2 других?
Господа!
Не подскажите ли каким образом сделать такую вещь - в имеющихся 3 combobox'ах 5 одинаковых элементов, можно ли их связать так, чтобы выбирая один элемент в одном combe, он автоматически появлялся в 2 других?
Можно, причем самыми разными способами...
Можно, причем самыми разными способами...
Тогда не подскажите ли несколько из них?
При условии, что эти самые индексы во всех комбобоксах соответствуют одной и той же строке...:)
Не обязательно. Поиск в связанном комбе производится по строке, выбранной в ведущем комбе: Сombo2->Items->IndexOf(Combo1->Items->Strings[Combo1->ItemIndex]).
Не обязательно. Поиск в связанном комбе производится по строке, выбранной в ведущем комбе: Сombo2->Items->IndexOf(Combo1->Items->Strings[Combo1->ItemIndex]).
Большое спасибо всем участникам форума за советы - все так на самом деле просто - однако интересно, что в огромной книжке Архангельского про свойство IndexOf кажется ничего нет (это при том, что там все разжевано до невозможности).
Тогда не подскажите ли ответ на похожий вопрос - как сделать, чтобы в 3 других comb'ах (там тоже те же 5 элементов, но в них придется потом переводить из первых) выбранный элемент первого comb'а исчезал?
Большое спасибо всем участникам форума за советы - все так на самом деле просто - однако интересно, что в огромной книжке Архангельского про свойство IndexOf кажется ничего нет (это при том, что там все разжевано до невозможности).
Забрасывай читать Архангельского, если хочешь стать программистом а не мартышкой кликательницей. Купи себе Калверта или BCB Dev Guide.
Тогда не подскажите ли ответ на похожий вопрос - как сделать, чтобы в 3 других comb'ах (там тоже те же 5 элементов, но в них придется потом переводить из первых) выбранный элемент первого comb'а исчезал?
Исчезал или удалялся???Если исчезал то куда-нить его сохраняй а потом делай Delete(cb->Item[1]), примерно так, Билдер пускать впадлу.
Забрасывай читать Архангельского, если хочешь стать программистом а не мартышкой кликательницей. Купи себе Калверта или BCB Dev Guide.
[COLOR=blue]Спасибо за направление (и за сравнение-:))[/COLOR]
Исчезал или удалялся???Если исчезал то куда-нить его сохраняй а потом делай Delete(cb->Item[1]), примерно так, Билдер пускать впадлу.
[COLOR=blue]Вообще надо
1) чтобы при одном Check'е первый элемент вообще исчезал из списка (из всех списков)
2) чтобы он исчезал во втором Comb'е при выборе его в первом (то есть в этих списках задаются системы счисления, чтобы например EVPU не переводить в EVPU)[/COLOR]
[COLOR=blue]Вообще надо
1) чтобы при одном Check'е первый элемент вообще исчезал из списка (из всех списков)
2) чтобы он исчезал во втором Comb'е при выборе его в первом (то есть в этих списках задаются системы счисления, чтобы например EVPU не переводить в EVPU)[/COLOR]
Делаете примерно то же, что я Вам и говорил. Находите в нужном комбе нужную строку и удаляете этот пункт из комба.
А что такое EVPU?
Делаете примерно то же, что я Вам и говорил. Находите в нужном комбе нужную строку и удаляете этот пункт из комба.
А что такое EVPU?
Дело в том, что, как я понял, в Borland'е нет такого действия (то есть метода для строки как элемента массива) как например Enable (то есть видимый , но недоступный, как у label'ов и так далее), потому наверное, придется дважды удалять (удалять внутри удаления) первый элемент - как поведет себя родной Builder, пока мне не ясно (то есть могут ли быть какие-то сбои, и вообще, эта штука предусмотрена разработчиками?) когда сделаю ( ...если), непременно напишу...
EVPU - это полиграфический формат, созданный и используемый специально для FINALE (самый мощный сейчас нотный редактор), а сделать я хочу, соответственно, конвертер для перевода его в другие - дюймы, пики (написал бы больше, да не могу - когда сделаю, все подробно объясню)...
Внимательнее изучите свойства и методы компонентов (Component properties and methods). Некоторые свойства сами являются компонентами, у которых есть и свойства, и методы. Один из распространённых компонентов в VCL - коллекция строк. В общем, читайте справку и удачи Вам.
Да, да, спасибо, когда написал, то понял, что написал не то, буду изучать! ( у Архантельского это как-то не очень понятно...)
OK, в связи со всем вышеизложенным возникло еще два вопроса (прошу прощения, если они покажутся уж совесм примитивными)
1) существует ли какой-то аналог вот такому
if (Check1->Unchecked)
{
...
}
потому как нужно, чтобы именно при снятом Checke происходило событие, смотрел справку, пока ничего не нашел...
2)удаление элемента из списка не заняло особого труда, однако Delete просто удаляет элемент без возвращения его в список (пробовал Move - то же), пытался задать две переменные, принимающие соответственно значения первого удаленнного элемента и второго, чтобы потом первый вернуть (Items->Add(...)), но возвращается только число...
заранее спасибо
2) Перед удалением запоминаете строку в переменной:
AnsiString tmp = YourCombo->Items->Strings[yourstringindex];
потом удаляете:
YourCombo->Items->Delete(yourstringindex);
Когда нужно, восстанавливаете:
YourCombo->Items->Add(tmp);
1) У большинства управляющих компонентов имеется событие OnClick. В обработчике этого события проверяете свойство Checked.
2) Перед удалением запоминаете строку в переменной:
AnsiString tmp = YourCombo->Items->Strings[yourstringindex];
потом удаляете:
YourCombo->Items->Delete(yourstringindex);
Когда нужно, восстанавливаете:
YourCombo->Items->Add(tmp);
Огромное спасибо!
Значит, дело было в том, что задавать нужно через String-переменную (эта мысль приходила мне в голову, только я не знад, как ее реализовать...)
Еще раз всех с Новым Годом!