Страница 1 из 1
		
			
				TFormPlacement
				
Добавлено: 
01.10.2016 09:24:57 kit
				Почему я не могу найти компонент TFormPlacement на палитре компонентов?
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
01.10.2016 11:10:27 alexs
				Потому что код TFormPlacement теперь часть самого LCL и теперь не нужен
Посмотри на TIniPropStorage TXmlPropStorage и из RXFPC - TRxIniPropStorage
А у формы есть свойство  - TForm.SessionProperties
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
03.10.2016 18:01:38 kit
				Задал в SessionProperties: Left, Top, Height, Width і WindowState. На форму перетянуд TRxIniPropStorage.
Если зкриваю Maximized-форму то теряются координати Normalized i при следующем отритии форма остается на весь екран.
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
03.10.2016 21:08:13 alexs
				Я думаю - это проблема LCL. На самом деле она не имеет отношения к PropStorage.
И, кстати, сохранение размеров форм - может вызвать одну проблему. Сам столкнулся
Пользователи минимизируют формы и закрывают её. После повторного открытия - форма не видна.
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
04.10.2016 09:45:03 kit
				И что делать? Написать свою процедуру сохранения/востановления форми?
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
04.10.2016 10:27:35 Лекс Айрин
				kit, как минимум, предусмотреть разворачивание окна в процедуре выхода из программы.
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
04.10.2016 12:40:22 alexs
				kit писал(а):И что делать? Написать свою процедуру сохранения/востановления форми?
На мой взгляд - надо сначала определиться - максимизированная форма - это что?
- Это особое состояние формы? В этом случае свойства Left, Top, Width, Height не должны меняться. Они будут отображать старые значения (до максимизации). Сохраняться будет правильно, но для других случаев будут проблемы.
- Это просто форма размером во весь экран? В этом случае свойства Left, Top, Width, Height будут максимальными. И сейчас так оно и есть. Для этого случая надо каким то образом отлавливать событие максимизации формы и хранить размеры до максимизации. Соответственно сохранять их.
 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
04.10.2016 16:21:47 sts
				мда, FormPlacement не просто так был придуман, простой PropStorage его не заменит.
там логика была сохранение состояния в зависимости от разрешения экрана, спецлогика обработки WindowState
в общем ктото явно сглупил удалив его.
Добавлено спустя 3 минуты 45 секунд:
ну или не перенеся полноценно функционал
Добавлено спустя 2 минуты 18 секунд:
да и для совместимости оставить и пробрасывать настройки в SessionProperties
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
04.10.2016 19:22:51 alexs
				Если кто захочет реализовать его - я только за. Но мне он просто не нужен был. Поэтому я на него даже смотрел, когда тянул исходники из дельфинячего Rx.
Мне в первую очередь был необходим RxDBGrid. И я его продолжаю понемного пилить.
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
05.10.2016 08:30:27 kit
				Если кто-то сделает то я буду тестировать
			 
			
		
			
				Re: TFormPlacement
				
Добавлено: 
06.10.2016 08:47:23 kit
				unit AppUtils;
procedure WriteFormPlacement(Form: TForm; IniFile: TCustomInifile; const Section: string);
begin
  with Form do begin
    IniFile.WriteInteger(Section, siFlags, Ord(WindowState));
    IniFile.WriteInteger(Section, siPixels, Screen.PixelsPerInch);
//    if not(WindowState = wsNormal) then
//      WritePosStr(IniFile, Section, siNormPos, Format('%d,%d,%d,%d',[Left, Top, Width, Height]))
//    else
      WritePosStr(IniFile, Section, siNormPos, Format('%d,%d,%d,%d',[RestoredLeft, RestoredTop, RestoredWidth, RestoredHeight]));
  end;
end;
WriteFormPlacement нужно вешать на TForm.OnShow