Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2009, 09:56   #1
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию Сохранение положения сплиттеров в ини файле

Всем привет, нужна помощь.
Имеется такое окно (см. вложение), никак не получается сохранить положение сплиттеров. Первая панель восстанавливается без проблем, сохраняю Panel1.Width, т.е. с вертикальным сплиттером проблем нет. А вот горизонтальный никак не могу сохранить, или не работает вообще или статусбар "всплывает" и становится выше Panel2, так происходит если менять Panel2.Height.
Изображения
Тип файла: png form.png (3.9 Кб, 116 просмотров)
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 10.09.2009 в 09:59.
mutabor вне форума Ответить с цитированием
Старый 10.09.2009, 09:57   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не понял, Вы не можете сохранить положение в файле, или потом его восстановить?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.09.2009, 10:02   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Не понял, Вы не можете сохранить положение в файле, или потом его восстановить?
Могу и то и другое, не работает правильно. Суть проблемы в этой фразе - "или не работает вообще или статусбар "всплывает".

Поставлю вопрос по другому - что именно нужно сохранять, какие параметры? Чтобы можно было потом восстановить их положения (сплиттеров) до закрытия окна, и чтобы ничего не "уехало" при этом.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 10.09.2009 в 10:07.
mutabor вне форума Ответить с цитированием
Старый 10.09.2009, 10:17   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Точное решение проблемы я не знаю, но могу предложить сохранять положение статусбара и возвращать его на место после всех манипуляций со сплиттерами. И еще как вариант попробуйте приклеить статусбар, сделав для него другого родителя (не форму).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.09.2009, 10:24   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Может все-таки стоит сохранять размеры Панелей, а не положение сплитеров?

ЗЫ. Поспешил...

Последний раз редактировалось Баламут; 10.09.2009 в 10:48.
Баламут вне форума Ответить с цитированием
Старый 10.09.2009, 10:53   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
И еще как вариант попробуйте приклеить статусбар, сделав для него другого родителя (не форму)
Это на крайний случай, хотелось бы чтобы родителем была форма.
Цитата:
сохранять положение статусбара и возвращать его на место
Каким образом? Align:=alBottom не помогает. Низом для него почему-то становится Panel2.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 10.09.2009, 11:24   #7
apocalypce
Пользователь
 
Аватар для apocalypce
 
Регистрация: 08.08.2009
Сообщений: 65
По умолчанию

попробуй так:
Код:
type
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
...
Код:
implementation

{$R *.dfm}

...

procedure TForm1.FormResize(Sender: TObject);
begin
  Panel2.Width := Panel1.Width div 2;
  Panel3.Width := Panel1.Width div 2;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel2.Width := Panel1.Width div 2;
  Panel3.Width := Panel1.Width div 2;
end;
думаю с третьей панелькой разберешься, сплиттеры думаю прикрутишь сам!
Error 404: Подпись not found

Последний раз редактировалось apocalypce; 10.09.2009 в 11:26.
apocalypce вне форума Ответить с цитированием
Старый 10.09.2009, 12:40   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

У меня решилась проблема следующим образом.
для начала выравнивание (в соотв с твоей схемой) панель2 ботом
панель1 лефт
панель 3 сайлент
панель 2 оставляем в покое.
у панель 1 сохраняем ширину
у панель 3 высоту. итогда нормально, а когда у панели 2 сохранял высоту то при загрузке статусбар всплывал вверх
Вложения
Тип файла: zip 1.ZIP (238.5 Кб, 14 просмотров)
SERG1980 вне форума Ответить с цитированием
Старый 10.09.2009, 13:28   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

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

А на твоей машине что, работает? К примеру если потянуть гориз. сплиттер почти к самому верху окна, закрыть программу, открыть опять, и что, он у тебя будет наверху?

Решил проблему методом тыка. Вот такие манипуляции после изменения Panel2.Height помогают:
Код:
  Panel1.Width:=IniFile.ReadInteger('Panel1 Settings','Width',417);
  Panel2.Height:=IniFile.ReadInteger('Panel2 Settings','Height',107);
  Panel2.Align:=alTop;
  Panel2.Align:=alBottom;
  Splitter2.Align:=alTop;
  Splitter2.Align:=alBottom;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.09.2009, 01:41   #10
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Вчера дома уже тоже немного поэксперементировал с этим и пришел к такому решению
Код:
procedure TForm1.FormShow(Sender: TObject);
begin
  Splitter1.Align := alNone;
  Panel1.Align := alNone;
  Panel1.Align := alBottom;
  Splitter1.Align := alBottom;
end;
Несколько некрасиво, до думаю без переделки стандартного сплиттера в данном случае иначе не сделать.
Баламут вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в ИНИ файл KuevProger Общие вопросы Delphi 9 17.04.2009 12:10
Секции в ини файле russian-stalker Общие вопросы Delphi 1 02.09.2008 19:04
Ини файл ошибка(глюк или что?) dr.Chas Общие вопросы Delphi 10 18.06.2008 08:09
сохранение структуры (динамические списки очередей) в файле AlenaZ Помощь студентам 2 09.06.2008 20:14
Сохранение имен компонентов в текстовом файле!!! LETA Помощь студентам 2 17.06.2007 15:05