Нужен совет по интерфейсу программы. Есть программа с расчётами. Создавалась стихийно решает несколько разных задач. И вот как-то её надо отрефакторить что ли. Все лежит на основной форме и хочу это разнести по вторастепенным. Но как сохранить юзаблети? Чтобы не приходилось кликать по несколько раз.
Вкладки, фреймы. Или формы без рамок вместо фреймов.
Нужен совет по интерфейсу программы. Есть программа с расчётами. Создавалась стихийно решает несколько разных задач. И вот как-то её надо отрефакторить что ли. Все лежит на основной форме и хочу это разнести по вторастепенным. Но как сохранить юзаблети? Чтобы не приходилось кликать по несколько раз.
Как вариант разносить не по формам, но фреймам и показывать по необходимости
Это понятно. Но нужно что бы оно запоминало последние действия.
Я сделал стек действий пользователя. В начале каждого действия (открытие формы для изменения объекта) состояние объекта сериализуется и сохраняется в TMemoryStream, для объекта ставится признак Locked, чтобы другие не могли ничего изменить в то же время. Дальше юзер делает что хочет и если в конце нажмёт ОК, то обьект сохраняются в БД. А если жмёт отмену, то возвращается сохранённое состояние объекта. В любом случае блокировка снимается.
ладно, это оффтоп уже. Ну, т.е. кто-то всё же занимался подобным методом чтения файлов. И видимо, производительность не понравилась, ок.
нет смысла оптимизировать что-то пока не упираешься только в это по производительности.. я убеждён, что в подавляющем большинстве задач, чтение файлов не самое узкое место
Если внутри редактора объекта открыт другой редактор (подчинённый объект) то в стек действий пользователя добавляется новый элемент с состоянием объекта.
В моем случае, вложенные изменения накапливаются и применяются только при ОК на самом верхнем, основном объекте. Например, если это товар, то внутри товара есть единицы измерений, цены, артикулы, итд.. которые запишутся разом при сохранении товара