| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сохранение шрифта таблицы в ini-файл |
| Автор: Mick Winder 11.11.2004, 15:48 |
| Создаю ini-файл, куда записываю все параметры размеров формы, фон и шрифт таблицы... Есть проблема записи в ini-файл параметров шрифта... Как решить проблему со шрифтами... Исходный код ниже: procedure TForm1.FormDestroy(Sender: TObject); var Ini: Tinifile; begin Ini:= TiniFile.Create(extractfilepath(paramstr(0))+'MyIni.ini'); Ini.WriteInteger('Size', 'Width', form1.Width); Ini.WriteInteger('Size', 'Height', form1.Height); Ini.WriteInteger('Position', 'X', form1.Left); Ini.WriteInteger('Position', 'Y', form1.Top); Ini.WriteInteger('Grid', 'ColorColums[0]', DBGridEh1.Columns.Items[0].Color); Ini.WriteInteger('Grid', 'ColorTitle[0]', DBGridEh1.Columns.Items[0].Title.Color); Ini.WriteInteger('Grig', 'FontTitle', DBGrideh1.Columns.Items[0].Title.Font); // проблема Ini.Free; end; procedure TForm1.FormCreate(Sender: TObject); var Ini: Tinifile; i: Integer; begin Ini:= TiniFile.Create(extractfilepath(paramstr(0))+'MyIni.ini'); Form1.Width:= Ini.ReadInteger('Size', 'Width', 100); Form1.Height:= Ini.ReadInteger('Size', 'Height', 100); Form1.Left:= Ini.ReadInteger('Size', 'X', 10); Form1.Top:= Ini.ReadInteger('Size', 'Y', 10); DBGridEh1.Columns.Items[0].Color:= Ini.ReadInteger('Grid', 'ColorColums[0]', clWhite); DBGridEh1.Columns.Items[0].Title.Color:= Ini.ReadInteger('Grid', 'ColorTitle[0]', clLtGray); for i:=1 to DBgridEh1.Columns.Count -1 do DBGrideh1.Columns.Items[i]Title.Font:= Ini.ReadInteger('Grid', 'FontTitle', 0); Ini.Free; end; |
| Автор: Dimich 11.11.2004, 17:01 | ||
Да, тут действительно проблема... Именно так, как написано - не получится. Конфликт типов TFont и Integer. Думаю, надо сохранять для шрифта все его параметры (Name, Color, Height, Size, Style и т.д.), а потом их загружать. Собственно так должно получиться. |
| Автор: Mick Winder 11.11.2004, 17:50 |
| Попробовал написать... Ini.WriteString('Grig', 'FontTitleStyle', DBGridEh1.Columns.Items[0].Title.Font.Style); или Ini.WriteInteger('Grig', 'FontTitleStyle', DBGridEh1.Columns.Items[0].Title.Font.Style); Все равно конфликт типов String или Integer и TFontStyle... Что делать? |
| Автор: Гость_Pakshin A. S. 11.11.2004, 18:00 |
| Отдельно прописываем все опции класса TFont. TFontStyle можно прописать через integer... А вообще, по культуре, заведи отдельный файл (типизированный), тип которого будет состоять из патаметров Font'а... и писать отдельный файл, не ini... |
| Автор: Alex 11.11.2004, 20:39 | ||
|
| Автор: Medved 12.11.2004, 03:12 | ||
| Alex, про Charset забыл. В помощь:
|
| Автор: Alex 12.11.2004, 09:33 | ||
Значит DRKB подправим |
| Автор: Alex 12.11.2004, 09:52 | ||
Я добавил, но это не пример, это кошмар
Я вечером нормальный сделаю и выложу |
| Автор: p0s0l 12.11.2004, 11:42 | ||||
Я бы сделал так:
Пользоваться так: GetObjectSettings (Button1.Font) - вовзращает инфу о Fontе кнопки в виде строки SetObjectSettings (Button1.Font, s) - Font кнопки грузится из строки s
|
| Автор: Mick Winder 12.11.2004, 12:03 |
| Спасибо всем! То, что вы здесь прописали, для меня очень полезно... И я попробую реализовать все это в своей проге... А пока я решил немного "поиграть", чтобы понять суть работы... Написал следующий небольшой кодик: procedure TForm1.FormDestroy(Sender: TObject); var Ini: Tinifile; begin Ini.WriteInteger('Grid', 'ColorTitle[0]', DBGridEh1.Columns.Items[0].Title.Color); Ini.WriteInteger('Grig', 'FontTitleColor[0]', DBGridEh1.Columns.Items[0].Title.Font.Color); Ini.Free; end; procedure TForm1.FormCreate(Sender: TObject); var Ini: Tinifile; i: Integer; begin DBGridEh1.Columns.Items[0].Title.Color:= Ini.ReadInteger('Grid', 'ColorTitle[0]', clLtGray); DBGrideh1.Columns.Items[0].Title.Font.Color:= Ini.ReadInteger('Grid', 'FontTitleColor[0]', 0); Ini.Free; end; Мои действия: 1. Открываю свою программу. На форме таблица. Заголовок первого столбца окрашен в серый цвет (сlLtGreen), наименование заголовка в черный цвет (0 или clBlack). 2. Меняю цвет загловка в желтый цвет, наименование заголовка в синий. 3. Закрываю программу. Результат при повторном открытии: Цвет заголовка - желтый, а цвет наименования заголовка - ...черный, хотя по идее должно быть синим... Почему? Что за фигня? Сделал пошаговую отладку и параллельно заглядывал в ini-файл... При закрытии проги все последние настройки записываются в файл как положено, а при загрузке значение FontTitleColor стирается и присваивается значение 0 (черный цвет)... Nie razumiem! |
| Автор: Mick Winder 12.11.2004, 13:12 | ||
Огромное спасибо!!! Всё получилось! |
| Автор: Alex 12.11.2004, 23:40 | ||
Я сделал так:
|
| Автор: Guest 15.11.2004, 09:51 |
| |
| Автор: Mick Winder 15.11.2004, 09:52 |
| |
| Автор: Akella 16.11.2004, 10:15 |
| |
| Автор: Mick Winder 16.11.2004, 10:24 | ||
А я как раз использую библиотеку EhLib и ею пользуюсь... Однако при создании ini-файлов с помощью данной библиотеки что-то там глючит... Но не эта главная причина, почему я отказался от использования функций EhLib... Просто это нужно для меня, для профессионального роста. |
| Автор: Medved 16.11.2004, 16:09 | ||
Абсолютно не вижу взаимосвязи между этими двумя факторами. |