С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3

Не получается сохранить название столбцов в гриде

14.04.2010, 11:23. Показов 2497. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята помогите разобраться
Сохраняю ширину столбцов в гриде таким способом

C++
1
2
3
4
5
6
7
8
AnsiString Patch;
     Patch = ExtractFilePath(ParamStr(0)); // получаем путь к каталогу программы
     TIniFile *Ini = new TIniFile(Patch+"options.ini");
 
     for (int i = 0; i < DBGrid1->FieldCount; i++)
          {
              Ini->WriteInteger("DBGrid","Items["+IntToStr(i)+"]",DBGrid1->Columns->Items[i]->Width);
          }
Но потом мне понадобилось сохранить названия столбцов и делаю я это таким образом
C++
1
2
3
4
5
6
7
8
     AnsiString Patch;
     Patch = ExtractFilePath(ParamStr(0)); // получаем путь к каталогу программы
     TIniFile *Ini = new TIniFile(Patch+"options.ini");
 
     for (int i = 0; i < DBGrid1->FieldCount; i++)
          {
            Ini->WriteInteger("DBGrid","Name",DBGrid1->Fields[i]->FullName);
          }
Но у меня вылетает ошибка
[C++ Error] Unit1.cpp(938): E2034 Cannot convert 'AnsiString' to 'int'
[C++ Error] Unit1.cpp(938): E2342 Type mismatch in parameter 'Value' (wanted 'int', got 'AnsiString')

И выделяется вот эта строка

C++
1
 Ini->WriteInteger("DBGrid","Name",DBGrid1->Fields[i]->FullName);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2010, 11:23
Ответы с готовыми решениями:

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

Количество символов в строке столбцов в гриде
Загружаю данный из txt в StringGrid. С количеством строк всё просто и понятно, но как выставить количество столбцов что бы было в...

Ширина столбцов в гриде в процентах от общей ширины грида
Подскажите, есть ли такая настройка у компонента DBGrid ? Не могу найти. Хотелось бы указать в процентном соотношении ширину столбца.

16
 Аватар для [XandeR]
31 / 31 / 3
Регистрация: 18.03.2009
Сообщений: 381
Записей в блоге: 2
14.04.2010, 11:40
там же написано Ini->WriteInteger("DBGrid","Name",DBGrid1->Fields[i]->FullName);
а тебе нужно Ini->WriteString("DBGrid","Name",DBGrid1->Fields[i]->FullName);
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.04.2010, 12:57  [ТС]
Спасибо, извини за не внимательность

Добавлено через 1 час 12 минут
Не понятно почему, но этот код почему заносит в ини- файл только одно название поле, вместо 14.

C++
1
2
3
4
5
6
7
8
9
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0)); // получаем путь к каталогу программы
TIniFile *Ini = new TIniFile(Patch+"options.ini");
for (int i = 0; i < DBGrid1->FieldCount; i++)
          {
             
               Ini->WriteString("DBGrid","Name",DBGrid1->Fields[i]->FullName);
           
          }
Вчём загвоздка может код не правильный
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
14.04.2010, 13:20
Ini->WriteString("DBGrid", "Name_" + AnsiString(i), DBGrid1->Fields[i]->FullName);
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.04.2010, 14:47  [ТС]
Ребята, а можно по названию поля сохранить ширину самого поля, если можно то как это сделать, если через Items, то не подходит.
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
14.04.2010, 15:39
DBGrid1->Fields[0]->DisplayWidth ?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.04.2010, 16:12  [ТС]
Ты знаешь с твоим кодом он на все столбцы ставит ширину 50, как бы я не менял их ширину в ручную
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
14.04.2010, 16:22
Значит DisplayWidth нельзя изменить в runtime через grid
А почему DBGrid1->Columns->Items[i]->Width не подходит?

Я раньше сохранял колонки таблицы просто в файл
DBGrid1->Columns->SaveToFile (...) - сохраняется их размер, порядок и количество
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.04.2010, 16:28  [ТС]
Цитата Сообщение от Roma_F Посмотреть сообщение
Значит DisplayWidth нельзя изменить в runtime через grid
А почему DBGrid1->Columns->Items[i]->Width не подходит?

Я раньше сохранял колонки таблицы просто в файл
DBGrid1->Columns->SaveToFile (...) - сохраняется их размер, порядок и количество
Нельзя потому, что у меня колонки могут убиратся а на их место появляются новые, по этому мне надо ширину колонки привязать к конкретному полю для того чтобы потом можно было нормально подгрузить ширину к каждой колонки.
А если я буду делать через Items, то у меня при загрузке будет чехорда с ширинами колонок, потому как ширина одной колонки окажится шириной другой колонки т.е не правильно. Просто у меня план стоит таким образом чтобы можно было скрывать колонки в гриде
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
14.04.2010, 17:13
Цитата Сообщение от Sasha Посмотреть сообщение
Просто у меня план стоит таким образом чтобы можно было скрывать колонки в гриде
Поэтому я у себя и использовал DBGrid1->Columns->SaveToFile(...) - сохраняется ВСЯ информация о колонках.
Если нужно сохранять в самой базе - SaveToStream и BLOB поле
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
14.04.2010, 23:23  [ТС]
А как можно сохранить ширину скрытых столбцов в гриде?

Если так он сохраняет почему-то только видимые хотя условие стоит такое
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < DBGrid1->FieldCount-1; i++)
          {
            if(!DBGrid1->Columns->Items[i]->Visible)
            {
            Ini->WriteInteger("DBGrid", "Width_" + AnsiString(i), DBGrid1->Columns->Items[i]->Width);
            }
 
          }
0
332 / 247 / 32
Регистрация: 13.12.2009
Сообщений: 589
14.04.2010, 23:35
я опять со своей функцией )
Columns->SaveToFile() сохраняет все поля независимо от видимости
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.04.2010, 11:50  [ТС]
К стати какой кодировкой можно посмотреть значения ширины столбцов в файле txt.
C++
1
  DBGrid1->Columns->SaveToFile("columns_settings.txt");
У меня почему-то не загружается действительная ширина столбца после того как я его сделаю видимым
0
4 / 4 / 1
Регистрация: 15.04.2010
Сообщений: 134
27.04.2010, 19:41
Ребята кто знает как можно обратиться из обьекта DBGrid1->Columns в содержимое свойста Columns?

Добавлено через 2 минуты
А пробывал обратитса так DBGrid1.Columns[1] но это наверно не верно, подскажите как роавильней можно обратитса.

Добавлено через 2 минуты
Ребята не нужно я уже додумался

Добавлено через 1 час 41 минуту
Как можно сохранить название калонки
Я зделал обработчик кнопки
DBGrid1->Columns->Items[1]->Title->Caption=Edit4->Text;

Добавлено через 19 минут
Подскажите плиз, на завтра нужно доделать

Добавлено через 34 секунды
Я ету прогу уже 2 дня пишу

Добавлено через 22 часа 22 минуты
Columns->SaveToFile() не сохраняе, нужно файл в коорий будет занаситса данные
0
4 / 4 / 1
Регистрация: 15.04.2010
Сообщений: 134
28.04.2010, 21:24
я пробивал сохранять в файл но не сохряняетса, может нужно откривать этот файл при откритии проги?

Добавлено через 1 час 0 минут
Цитата Сообщение от lebid Посмотреть сообщение
я пробивал сохранять в файл но не сохряняетса, может нужно откривать этот файл при откритии проги?
Как при откритии проги можно загружать сохраненные параметры записаны в файл?
0
0 / 0 / 0
Регистрация: 25.04.2011
Сообщений: 4
27.04.2011, 12:52
Спасибо, разобрался.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.04.2011, 17:03
Сохранять характеристики столбцов (Columns->SaveToFile) можно, например, перед закрытием формы с гридом.
Восстанавливать (загружать) ни в коем случае не ДО открытия датасета - в этом случае автоматом сработает метод RebuildColumns и грид инициализируется, при этом "восстановленные" свойства будут утеряны. ИМХО, неплохим решением является использование события формы OnActivate, в котором сначала открывается отображаемый датасет, а затем выполняется метод Columns->LoadFromFile

Добавочка №1
Как назвать файл с сохраненным гридом ? Как угодно, но фиксированно (например через глобальную константу). Лучше всего файл держать в папке с программой (ExctractFilePath(Application->ExecName))

Добавочка №2
Редко советую, но может пригодится: есть немало компонент от "третьей стороны", умеющих подобную фишку. Например EhDBGrid из библиотеки Exlib. Хотя, ИМХО, подобную функциональность нетрудно реализовать и самому
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2011, 17:03
Помогаю со студенческими работами здесь

Сохранить название документа.1С 7.7.ПУБ
Документ Спецификация. В него добавила кнопку со значениями спецификация(с учетом доставки) и спецификация(к договору подряда)..После...

Как сохранить название колонок?
Ребята как можно сохранить изменившые название колонок, Я написал прогу где можно вводить название колоно обекта DBGrid1 только я не знаю...

Название заголовком столбцов.
Здравствуйте друзья. -------------------- Вывожу запросом данные в dataGridView, они отображаются так как на рисунке. Хочу дать...

Название столбцов а Акцесс
Ребята, снова нужна помощь. Нужно вытащить из Бд название столбцов и записать их в ячейки.

Название столбцов в combobox
Как вытащить название столбцов DbGrid в ComboBox ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru