Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Узнать размеры присвоенные в Design-time, как узнать default-ные свойства контрола 
:(
    Опции темы
Bose
Дата 20.9.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



У меня есть форма. На форме грид. Пользователь волен менять размеры столбцов в гриде. Изменённые размеры автоматически сохраняются при закрытии формы и загружаются при старте. 
Я хочу добавить возможность сброса размеров установленных пользователем. Т.е. иметь возможность установить размеры, заданные при создании программы(в Design-time). Единственный вариант, который мне пока приходит в голову - это удаление сохранённых данных и перезапуск формы. Но этот вариант не представляется удобным. Кто-нибудь может подсказать другой способ?
PM MAIL WWW Skype   Вверх
Alexeis
Дата 20.9.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



А почему бы не сохранять это все в запись и потом читать из нее все нужные поля?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Elfebet
Дата 20.9.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



ну смотри.. если ты сохраняеш настройки с помощью класса TiniFiles, то на верное используеш так
Код

str1:=ini.ReadString('section', 'str1', 'пусто');

т.е. ты можеш просто удалить значение str1 в секции 'section' и в итоге если значение этого нет то подставиться по умолчанию 'пусто' ну и при закрытии формы просто переписывать ini файл.

другой вариант (самый ламерский), создать процедуру где будут прописаны все натройки которые по умочанию.

Это сообщение отредактировал(а) Elfebet - 20.9.2006, 13:07


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Bose
Дата 20.9.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата

А почему бы не сохранять это все в запись и потом читать из нее все нужные поля?


alexeis1, не совсем понял... Ты предлагаешь, запоминать текущие установки перед загрузкой сохранённых? И если нужно сбросить сохранённые установки, то и присваивать их контролам(в смысле гриду)?


Цитата

т.е. ты можеш просто удалить значение str1 в секции 'section' и в итоге если значение этого нет то подставиться по умолчанию 'пусто' ну и при закрытии формы просто переписывать ini файл.

другой вариант (самый ламерский), создать процедуру где будут прописаны все натройки которые по умочанию.

Первый вариант - потребует закрытия и открытия формы, что неприемлимо. 

Второй вариант не подходит - форм много, свойств тоже много. Всё меняется. Я не готов убивать кучу времени на поддержание процедур в актуальном состоянии.



Наверное всё-таки стоит уточнить. Грид я привёл в качестве примера. Сохраняется положение формы, положения сплиттеров, размеры контролов, привязанных к сплиттеру, размеры столбцов в гридах, и ещё несколько свойств.

Моя идея в следующем: ведь при старте программы все размеры контролов инициализируются данными из Executable файла. Неужели нельзя запустить процедуру инициализации ещё раз - вручную? smile 
PM MAIL WWW Skype   Вверх
Elfebet
Дата 20.9.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



Цитата

Первый вариант - потребует закрытия и открытия формы, что неприемлимо

ну дык вызови процедуру сохранения и потом загрузки, не закрывая форму.


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Alexeis
Дата 20.9.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Bose @  20.9.2006,  12:40 Найти цитируемый пост)
Изменённые размеры автоматически сохраняются при закрытии формы и загружаются при старте. 

До загрузки исходные значения можно же сохранить!


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bose
Дата 20.9.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата

ну дык вызови процедуру сохранения и потом загрузки, не закрывая форму.


Тогда получится, что сохранятся текущие размеры. 

Если же я просто загружу сохранённые размеры, то получится, что я загружу размеры сохранённые в предыдущий раз. 

Если же я очищё секцию с сохранёнными размерами, а потом попробую их загрузить, то получится, что размеры останутся такие же как и есть smile

Добавлено @ 13:43 
Цитата(alexeis1 @  20.9.2006,  13:30 Найти цитируемый пост)
До загрузки исходные значения можно же сохранить!


точно!  smile  Спасибо за идею alexeis1

Просто создам второй файл с установками, куда буду записывать Default'ные настройки перед загрузкой пользовательских настроек. И в случае необходимости читать оттуда.
PM MAIL WWW Skype   Вверх
Snowy
Дата 20.9.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Дефолтовые значения сидят в ресурсах.
Если очень захотеть, можно их оттуда вытащить.
Но проще автомат - пересоздание
PM MAIL   Вверх
Elfebet
Дата 20.9.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



я понял ты применяеш параметры для сохранения только по закрытии формы.
ну тада так:
перед тем как загрузить рамеры при открытии формы сохрани куда нить рамеры текущие (т.е. которые в дизайн-тайме), ну потом если нада сбросить рамеры ты загружаеш те размеры которые сохранил для котрых они по умолчанию smile 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Alexeis
Дата 20.9.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Bose @  20.9.2006,  13:35 Найти цитируемый пост)
Просто создам второй файл с установками, куда буду записывать Default'ные настройки перед загрузкой пользовательских настроек

Да тогда уж лучше создавать  его один раз инсталятором, чем при каждом запуске.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Yanis
Дата 20.9.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Я же говорю, что я сегодня непонятливый какой то, так что не обессутьте smile
Может просто создать ещё один экземпляр формы (или чего там нужно...) и прочитать нужные значения? Они должны быть "поумолчанию".


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Bose
Дата 20.9.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Elfebet, да - именно так.  smile 


Цитата(alexeis1 @  20.9.2006,  13:48 Найти цитируемый пост)
Да тогда уж лучше создавать  его один раз инсталятором, чем при каждом запуске.

Чем лучше? 

Мнусы я вижу такие:
для инсталлятора этот файл придётся создать мне самому.
когда изменятся сохраняемые свойства, этот файл придётся обновлять.

Если же о сохраняемых свойствах будет заботиться само приложение, то у отпадает масса проблем:
Во-первых, данные всегда будут соответствовать самым последним изменениям в билде.
Во-вторых, контроль будет происходить автоматом.
В-третьих, не придётся делать инсталлятор smile

Добавлено @ 14:11 
Yanis, к сожалению не подходит. Некоторые формы создаются и инициализируются довольно долго. Заставлять пользователя со слабым компьютером ждать пару минут пока сбросятся установки, садизм smile 

В принципе, решение, которое меня устраивает найдено. Но если кто-то предложит более гибкий способ - то Добро пожаловать! С удовольствием выслушаю!

Всем спасибо! smile 
PM MAIL WWW Skype   Вверх
Alexeis
Дата 20.9.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Bose @  20.9.2006,  14:07 Найти цитируемый пост)
Но если кто-то предложит более гибкий способ - то Добро пожаловать!

Вариант 
Snowy самый изящный вот например фрагмент ресурса одного из проектов
Код

object Form1: TForm1
  Left = 102
  Top = 124
  Width = 574
  Height = 420
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object pnl2: TPanel
    Left = 0
    Top = 0
    Width = 566
    Height = 393
    Align = alClient
    TabOrder = 0
    object cht1: TChart
      Left = 1
      Top = 1
................................


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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Yanis
Дата 20.9.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(alexeis1 @  20.9.2006,  15:21 Найти цитируемый пост)
Если подумать, то можно написать процедурку, для поиска значений всех нужных свойств.

Можно "превратить" этот код в компонент и тогда любое свойство можно будет прочитать непосредственно из него (компонента).
PS. Keyword: StringToComponent


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Bose
Дата 20.9.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Snowyalexeis1 - спасибо, вариант действительно интересный! 

Правда, судя по-всему, более трудоёмкий, чем сохранение данных в Ini. Буду думать.

Yanis, спасибо за наводку! Нашёл в хелпе пример. smile 

p.s. вот, StringToComponent ещё упоминается здесь

Это сообщение отредактировал(а) Bose - 20.9.2006, 14:53
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1571 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.