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