Бьютификатор форм

Что же это вообще такое ? 😉 А это просто "приглаживание"
всех объектов на форме. То есть унификация фонта, центровки и т.д. Конечно для
этого можно использовать классы, но не всегда это делается, или если к вам попала
программа без использования классов. И вы в один момент сделаете эту форму красивой:
с красивыми фонтами, без лишних кнопочек и вообще как вам захочется.

Вот пример такой программы

Как работает:
Открываете форму, переходите в Command window и запускаете процедуру
(do format)

    
    
 * Format.PRG   
 * c Пирожков В.В. 1997, 10.04.1997 14:00  
  #define C_FONTNAME	"=_FONTNAME"  
  #define C_FONTSIZE	8  
    
  Private array tmp[1]  
  local i, k, j, n, m.OldErrorHandler, m.nError  
  m.OldErrorHandler=ON("ERROR")  
  ON Error Store Error() to m.nError  
    
  k=ASELOBJ(tmp)  
  if k > 0  
  	for i=1 to k  
  		if vartype(tmp[i])='O'  
  			FormatEx(tmp[i])  
  		endif  
  	next  
  else  
  	k=ASELOBJ(tmp,1)  
  	if k > 0 and not tmp[1].Comment='Formatted'  
  		with tmp[1]  
 			* Make Dialog Window  
    
  			.AutoCenter=.T.  
  			.FontName=C_FONTNAME  
  			.FontSize=C_FONTSIZE  
  			.BorderStyle=2  
  			.MinButton=.F.  
  			.MaxButton=.F.  
  			.DeskTop=.T.  
  			.WindowType=1  
  			.Icon=["_SCREEN.Icon"]  
  		endwith  
  	endif  
  endif  
  on Error &OldErrorHandler  
    
  Procedure FormatEx( oObj )  
 *  
 * Процедура опрашивает базовые классы объекта  
 * и для известных ей устанавливает   
 * ИМЯ ФОНТА  
 * РАЗМЕР ФОНТА  
 * и прочие параметры для разных типов классов  
 *   
 * Для объектов контейнеров опрашивает все   
 * дочерние ( сыновние ? ) объекты и запускает  
 * сама себя для всех встреченных объектов  
 *  
  if vartype( oObj ) # 'O'  
  	Return .F.  
  endif  
    
  local j, n  
  with oObj  
  	FormatFont()  
  	do case  
  	case .BaseClass="CommandButton"  
  		.Height=24  
  		.Width=80  
  	case .BaseClass='TextBox'  
  		.Margin=1  
  		.Height=20  
  	case .BaseClass='EditBox'  
  		.Margin=1  
  	case .BaseClass='Label'  
  		.AutoSize=.T.  
  		.BackStyle=0  
  	case .BaseClass='OptionButton'  
  		.AutoSize=.T.  
  	case .BaseClass='CheckBox'  
  		.AutoSize=.T.  
  	case .BaseClass='Shape'  
  		.SpecialEffect=iif(.SpecialEffect=1,0,.SpecialEffect)  
  	case .BaseClass='ListBox'  
 		* Пока нечего добавить к списку  
  	case .BaseClass='ComboBox'  
  		.Margin=1  
 		* Пока нечего добавить в раскрывающемуся списку  
  	case .BaseClass='PageFrame'  
  		.TabStyle=1  
  		for j=1 to .PageCount  
  			FormatEx(.Pages(j))  
  		next  
  	case Inlist(.BaseClass,'Container','OptionGroup','Page','Column')  
  		if .BaseClass='Container'  
  			.SpecialEffect=iif(.SpecialEffect=2,0,.SpecialEffect)  
  		endif  
  		if .ControlCount > 0  
  			for n=1 to .ControlCount  
  				FormatEx(.Controls(n))  
  			next  
  		endif  
  	case InList(.BaseClass,'CommandGroup')  
  		if .ButtonCount > 0  
  			for n=1 to .ButtonCount  
  				FormatEx(.Buttons(n))  
  			next  
  		endif  
  	case .BaseClass='Grid'  
  		.AllowRowSizing=.F.  
  		.AllowHeaderSizing=.F.  
  		.DeleteMark=.F.  
  		.RecordMark=.F.  
  		.SplitBar=.F.  
  		if .ColumnCount > 0  
  			for n=1 to .ColumnCount  
  				FormatEx(.Columns(n))  
  			next  
  		endif  
  	case .BaseClass='Header'  
  		.Alignment=2  
  	endcase  
  endwith  
    
  Procedure FormatFont  
 *  
 * Установить фонт для текущего объекта,  
 * если он к него есть.  
 *  
  if type('.FontName')='C'  
  	.FontName=C_FONTNAME  
  	.FontSize=C_FONTSIZE  
  endif  
    
  Procedure FormatError( nError )  
  Return  
    

Автор публикации

не в сети 21 год

piva

Комментарии: 1Публикации: 11Регистрация: 24-03-2004
Материалы по теме
Оставить комментарий
//////////////// ///////////////
Авторизация
*
*
Генерация пароля