класс-сохраняльщик настроек. Все бы ничего, но смущает необходимость сохранять передаваемые свойства форм в промежуточных пропертях. Есть возможность реализовать это как-то более изящно без ненужных зависимостей (в виде добавления в uses implementation) заинтересованных форм?
public
property SaveFolder: String read FSaveFolder;
property SettingsFile: TCustomIniFile read FSettingsFile;
property SenderObject: TSenderObject read FSenderObject write FSenderObject;
property RadioItemsIndex: Integer read FRadioItemsIndex write FRadioItemsIndex;
property ChkBx1_checked: Boolean read FChkBx1_checked write FChkBx1_checked;
procedure Save(Sender: TObject);
procedure Load(Sender: TObject);
end;
procedure TSettings.Load(Sender: TObject);
begin
if not TObject(Sender).InheritsFrom(TCustomForm) then Exit;
if not Assigned(SettingsFile) then Exit;
with TCustomForm(Sender) do
begin
Top := SettingsFile.ReadInteger(Name, 'Top', Top );
<skiped>
FChkBx1_checked:= SettingsFile.ReadBool(Name, 'ChkBx1_checked', ChkBx1_checked);//Form2
FRadioItemsIndex:= SettingsFile.ReadInteger(Name, 'RadioItemsIndex', RadioItemsIndex);//Form3
case SettingsFile.ReadBool(Name, 'InitMax', WindowState = wsMaximized) of
true : WindowState := wsMaximized;
false: WindowState := wsNormal;
end;
end;
end;
RTTI/аттрибуты, или интерфейс типа ISetting рассматривал?
через rrti это как будет выглядеть? типа if TObject(Sender).Equal(Form1) then ... ?
Ты хочешь сделать аналог лазарусовского TIniPropStorage? По хорошему, да, через rtti делать надо
лесенки писать не хочется. хотелось по-быстрому :)
Я, кстати, для быстрого сохранения класс конфига использую готовую функцию JSON стриминг в текст. Если свойства формы, то готовый TIniPropStorage или TJSONPropStorage
Не не не, любой потомок TPersistent для RTTI или вообще любой для интерфейсов.
в качестве альтернативы можно создавать экземпляр TMemIniFile со своими Lоad/Save на каждой форме, но чо-та как-то совсем не комильфо. Да и утомительно. Понятно, когда компонентом - бросил на форму, заполни и забыл
Леш, можешь намекнуть, как это выглядить вживую?
СЛушай. А почему не TIniPropStorage тогда? Что за задача?
Ай, забыл, сорри
Новый RTTI/аттрибуты позволяют фильтровать список свойств и переименовывать ключи, под какими сохраняешь. Со старым RTTI будет похоже на dfm, все подряд.
имя, сестра, имя © Показывай код, я - тупой :))))
Можно подсмотреть в rx, vg, jcl. По старому. Буду у компа, пришлю.
https://stackoverflow.com/questions/15702778/how-can-i-set-get-property-value-through-rtti-for-complex-things-like-tstringgri https://delphi-kb.blogspot.com/2008/12/application-settings-article-1.html?m=1 http://digital-flame.ru/2018/01/26/rtti-atributes/
Это ещё не всё, это тоже с телефона.
Док, не поняла какие свойства форм хочешь сохранять. Можешь подробней?
Всякие. Состояние чекбоксов, радиокнопок, списков и т.д и т.п.
Повторю. Джедаевские компоненты не подходят?
Ты представляешь, сколько г@вна надо поставить вместе с пакетами джедаев из-за одного компонента? Имхо, джедаи хороши для поиска идей
Я думаю будет быстрее чем свое универсальное клепать. А нажать две кнопочки в гетит это не сложно :)
Или посмотреть как там сделано и какие модули нужны
В джедах забей... Там столько зависимостей, что проще использовать что есть чем что-то достать...
Идею, алгоритм?
Таких компонентов вагон: роси, джедаи, ехлибы. Хочется тратить время на ниочем - вперёд :)
Он сейчас тратит время, чтобы написать алгоритм. Будет ещё один. Джедай. Домашний.
А я Дока понимаю. Всякую ерунду тащить)
Да. Зачем тащить!)
Ты пробовал ставить 100500 компонентов на новую среду только для того, чтобы у тебя легаси проект скопировался? Я из десятка сторонних оставил только эхлибы, фибы и ФР. Остальное выпилил безжалостно. В том числе и джедаев
Зачем ставить?
Это ты старые проекты ещё со времён д7 тащишь?
Аа, в этом смысле) Спасибо, Кэп)
Можно я выматерюсь про женщин низкой ответственности?)
жедаи к слову отлично ставятся на все среды. так что вот их как раз бояться тянуть в проекты стоит меньше всего
Скачать исходники нельзя?
Д7-Д2007-ХЕ11
Дим, и ты туда же 🙈
Обычно понимают, что это кэп очевидность. Не хотела обидеть)
а чо нет, на жедаях наши проекты были с первых версий )
Он не хочет тянуть, ставить Руслан предлагает. А подсмотреть и найти вопросы и какой ещё путь Джедая ждёт.. Ну пусть. Свое то лучше..
как раз вот компоненты сохранения в жедаях всегда отлично работали. понятно, что своё можно, но зачем если и так всего хватает выше крыши
Так пока непонятно из за чего не хочешь... Своё напишешь оптимальнее? Или за килобайты борьба?
Я перетаскиваю с 7 на 11 и знаю, как легко напороться на непереносимость. Уже плешь всем этим проела))
Из-за двух функций ставить весь пакет - явный оверхед. Ты же не покупаешь машину, чтобы ездить в булочную за хлебом?
Обсуждают сегодня