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

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

14.04.2010, 11:23. Показов 2523. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru