Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > ComboBox in StringRid


Автор: Neitron 6.12.2005, 11:58
Есть ли простой способ кинуть ComboBox в StringGrid, кроме как переодически создовать при появлении новой строки и удалять ComboBox'ы вручную, в определенных ячейках.
P.S с темой накасячил.....

Автор: Vyacheslav 6.12.2005, 12:05
А можно понять, зачем такие усложения с StringGrid'ом.
Может просто решить проблему в корне, перейдя к хранению данных TClientDataSet.
И хранить и обрабатывать информацию будет проще, и DBGrid имеет все что нужно

Автор: Neitron 6.12.2005, 12:08
Не пробовал, не знал....

Автор: Neitron 6.12.2005, 12:49
А можно немного кода, как использовать? Я что-то порылся и не нашел пока, что как им пользоваться.
Я продолжаю поиск и попутно буду ждать ответа здесь.

Автор: sexton 6.12.2005, 13:53
Могу посоветовать AdvStringGrid, она это умеет

Автор: Vyacheslav 6.12.2005, 15:25
Цитата(Neitron @ 6.12.2005, 12:49)
А можно немного кода, как использовать? Я что-то порылся и не нашел пока, что как им пользоваться.
Я продолжаю поиск и попутно буду ждать ответа здесь.

Мда. Задачка.

Попытаюсь. Только кода ноль
Открываешь новый проект.
1) На форму кладешь TClientDataSet, TDBGrid, TDataSource.
2)В дизайне для TClientDataSet добавляешь поля( popup menu-> fields editor - > new fieds) . Допустим два поля field1 b field 2 ( string, размер 20, field type data)
3) Создаешь таблицу(popup menu-> create data)
4) Устанавливаешь Active в true
5) Для TDataSource устанавливаешь свойство DataSet в ClientDataSet1
6)Для TDBGrid устанавливаешь свойство DataSource в DataSource1
7)Для TDBGrid добавляешь колонки (popup menu->Column Editor->Add All Fields
8) Здесь же открываешь нужную колонку и в свойстве PickList набираешь значения для списка
9) Компилируешь и запускаешь программу и пытаешься ввести данные в таблицу

Автор: Neitron 6.12.2005, 16:28
Cпасибо. Я не знал только третьего пункта.
Но как комбо вставить?:-(

Кстати TAdvStringGrid требует при установке GridPack6.BPI а его в архиве нету:-(

Автор: Vyacheslav 7.12.2005, 14:14
Цитата(Neitron @ 6.12.2005, 16:28)
Cпасибо. Я не знал только третьего пункта.
Но как комбо вставить?:-(


Читать внимательно
Цитата

8) Здесь же открываешь нужную колонку и в свойстве PickList набираешь значения для списка


Ничего вставлять не надо. Он сам вставит, если задан PickList

Автор: Neitron 7.12.2005, 18:06
Кульно:-)

Автор: Neitron 8.12.2005, 15:13
Последний вопрос по этому поводу. Подскажите пожалуйста, а то что-то я заблудился...
Как программно вносить и заносить данные?

Автор: Vyacheslav 8.12.2005, 17:11
Добавление новой записи
Код

ClientDataSet1->Append();
ClientDataSet1->FieldByName("field1")->AsString = "aaaa";
ClientDataSet1->FieldByName("field2")->AsString = "bbbb";
ClientDataSet1->Post();

Редактирование текушей записи
Код

ClientDataSet1->Edit();
ClientDataSet1->FieldByName("field1")->AsString = "aaaa";
ClientDataSet1->FieldByName("field2")->AsString = "bbbb";
ClientDataSet1->Post();

Автор: Neitron 8.12.2005, 17:22
Кхм....
А циклически забрать все данные?
Добавлено @ 17:25
Всё сам Нашел Next()
Спасибо.

Автор: Vyacheslav 8.12.2005, 17:30
Код

for(ClientDataSet->First(); !ClientDataSet->Eof; ClientDataSet->Next() ) {
    ...=ClientDataSet1->FieldByName("field1")->AsString;
    ...=ClientDataSet1->FieldByName("field2")->AsString;
}



Автор: Neitron 8.12.2005, 18:59
Мне уже просто неудобно, что по этому поводу, я ничего сам внятного в хелпе найти не могу...
Каком образом полностью очистить вставленные записи?
ClearFields()
почему то ругается...

Автор: Vyacheslav 8.12.2005, 19:39
Код

ClientDataSet->EmptyDataSet();

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)