| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Размеры элементов дизайна формы
			 
			
			Доброго времени суток! 
		
		
		
			Буду рад получить помощь в ответе на вопрос: Имеется форма с дизайном, состоящим из двух групп, разделенных горизонтальным сплиттером (по оси X), т.е. дизайн имеет 3 колонки (TableGroup, CtrlSplitHor, RightGroup). В левой группе дизайна располагается Tab и, соответственно, TabPage, в котором располпгается Grid с большим количеством полей. В правой группе находится ActiveX-контрол HTMLView (также расположенный на TabPage), в который загружаются изображения. Скриншот дизайна в AOT прилагается к данному сообщению. При первом запуске формы или после сброса пользовательских данных при указанном оформлении дизайна Grid вместе с Tab'ом, на котором он расположен, выходит за пределы формы, контролов правой группы так же не видно на форме. Для их отображения необходимо растянуть форму и передвинуть сплиттер, чтобы сократить размеры таба с гридом. В случае, если поменять местами группы в дизайне (TableGroup и RightGroup), то размеры элементов дизайна подстраиваются под размеры всего дизайна формы, то есть на Gride появляется горизонтальный скролл, и элементы обеих групп отображаются нормально. Все контролы, включая группы, табы, грид имеют значение свойства width "COLUMN WIDTH". Почему от очередности положения контролов меняется их отображение на форме, а именно размер? Последний раз редактировалось samolalex; 07.09.2010 в 09:57.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 MCP 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Добрый день! 
		
		
		
		
		
		
			Потому что при init() формы вы вызываете метод: X++: public void init() { ; super(); formSplitterVertical = new SysFormSplitter_X(ctrlSplitVertical,Tree, this); } 
				__________________ 
		
		
		
		
	AXIOMA  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: GBH (1). | |
| 
			
			 | 
		#3 | 
| 
			
			 MCP 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Т.е. если вы меняете в дизайне порядок групп RightGroup и TableGroup, нужно менять имя параметра _FormSizeControl при инициализации сплиттера
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	AXIOMA  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			kornix, суть заключалась немного в другом, но вы меня подтолкнули на правильные мысли относительно параметров сплиттера, за что вам спасибо: 
		
		
		
		
		
		
		
		
			инициализировать его (сплиттер) необходимо в методе run в данном случае, плюс к этому указывается необязательный параметр - ширина контрола, расположенного слева от сплиттера (int _startUpWidth - это ширина контрола, расположенного слева от сплиттера, при первом запуске формы). X++: public void run() { super(); _formSplitterHorisontal = new SysFormSplitter_X(ctrlSplitHor, TableGroup, element, 900); }  
		Последний раз редактировалось samolalex; 07.09.2010 в 10:58.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 MCP 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Да, действительно ответил не совсем на ваш вопрос  
		
		
		
		
		
		
			  Ну, главное что вам все удалось ![]() Вообще, в tutorial формах, в примере с сплиттером его инициализация вызывается в методе init, не совсем понимаю разницу, откуда его вызывать. По идее в методе run обычно уже запускаются какие-нибудь алгоритмы, а в методе init разнообразные форматирования, добавления чего-нибудь программно и т.п.  
		
				__________________ 
		
		
		
		
	AXIOMA  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: samolalex (1). | |
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Информацию про инициализацию сплиттера в методе run() взял отсюда:  
		
		
		
		
		
		
		
	Глюк с вертикальным сплиттером Здесь обсуждается проблема немного другого рода, но тем не менее, смежная с поставленной мной.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: kornix (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Обратите внимание, что в упомянутой ветке более правильное решение указано Maxim Gorbunov Глюк с вертикальным сплиттером
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Согласен, что ответ Максима является более правильным, но в контексте моей задачи решение с инициализацией в методе run()  также является вполне приемлемым.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			По теме: какая ширина стоит у вашей левой / правой группы? В свойствах Design указано, что колонок 3?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ширина обеих групп = "columnWidth", в свойствах дизайна указано 3 колонки.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Заметил на днях, что система некоректно определяет размеры клиентской области окна в случае если на нём находится StringEdit, у которого свойство LabelPosition выставлено в значение "Above" (и свойство Label не пусто), а свойство Height равно "Auto" либо константе. В результате вместо увеличения размеров по вертикали появляется полоса прокрутки. Ситуацию исправляет изменение свойства Height на "Column height", но эта замена не всегда равносильна, например если в качестве расширенного типа используется Memo. 
		
		
		
		
		
		
		
		
			P.S.: AX2009 Последний раз редактировалось S.Kuskov; 13.12.2010 в 18:42.  | 
| 
	
 | 
| 
	
	 | 
	
		
  |