IF !This.Parent.Parent.SplitLineHitTest(This) RETURN ENDIF * Pokud tam není ani záznam IF EOF(This.Parent.Parent.RecordSource) RETURN && Pak se vrať ENDIFSloupec musí mít povoleno měnit šířku.
loCol=This.Parent && aktivní sloupec lcSource=loCol.ControlSource && zdroj dat IF EMPTY(lcSource) OR EMPTY(loCol.CurrentControl); OR !loCol.Resizable RETURN ENDIFSpočítá se viditelný počet řádků v mřížce.
WITH This.Parent.Parent SELE (.RecordSource) && Skoč na tabulku liRow=.GetVisibleRow() liRelRow=.RelativeRow && Relativní řádek ENDWITHUschování informací o fontu objektu _SCREEN a nastaví se zpětně dle aktivního objektu
loControl=EVAL("loCol."+loCol.CurrentControl) lcType=TYPE("EVAL(lcSource)") laFont(1)=_SCREEN.FontName laFont(2)=_SCREEN.FontSize laFont(3)=_SCREEN.FontBold laFont(4)=_SCREEN.FontItalic laFont(5)=_SCREEN.FontStrikethru laFont(6)=_SCREEN.FontUnderline IF !PEMSTATUS(loControl,"PropAsColumn",5) OR ; PEMSTATUS(loControl,"PropAsColumn",5) AND ; !loControl.PropAsColumn _SCREEN.FontName=loControl.FontName _SCREEN.FontSize=loControl.FontSize _SCREEN.FontBold=loControl.FontBold _SCREEN.FontItalic=loControl.FontItalic _SCREEN.FontStrikethru=loControl.FontStrikethru _SCREEN.FontUnderline=loControl.FontUnderline ENDIFZapamatuje si aktuální větu a skočí na začátek viditelného obsahu mřížky.
liRecno=RECNO() && Zjisti aktuální větu SKIP -1*(liRelRow-1) && skoč na začátek viditelného obsahu liMax=0Poté se začne procházet jen n viditelných vět.
SCAN NEXT liRowPokud se mají respektovat vlastnosti Dynamic*, pak se pro každou větu musí vyhodnotit příslušné vlastnosti.
IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * Nastavení informací o fontu na objektu _Screen dle objektu _SCREEN.FontName=IIF(EMPTY(loCol.DynamicFontName),; loCol.FontName,EVAL(loCol.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loCol.DynamicFontSize),; loCol.FontSize,EVAL(loCol.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loCol.DynamicFontBold),; loCol.FontBold,EVAL(loCol.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loCol.DynamicFontItalic),; loCol.FontItalic,EVAL(loCol.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loCol.DynamicFontStrikethru),; loCol.FontStrikethru,EVAL(loCol.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loCol.DynamicFontUnderline),; loCol.FontUnderline,EVAL(loCol.DynamicFontUnderline)) ENDIFVyhodnotí se obsah sloupce a dle typu se přivede na řetězec.
luVal=EVAL(lcSource)Pomocí funkce TEXTWIDTH() se spočítá šířka textu + 4 pixely.
liMax=MAX(_SCREEN.TextWidth(IIF(ISNULL(luVal),".NULL.",RTRIM(luVal)))+4,liMax) ENDSCANObnova původních vlastností objektu _SCREEN.
_SCREEN.FontName=laFont(1) _SCREEN.FontSize=laFont(2) _SCREEN.FontBold=laFont(3) _SCREEN.FontItalic=laFont(4) _SCREEN.FontStrikethru=laFont(5) _SCREEN.FontUnderline=laFont(6)Po skončení smyčky se nastaví nová šířka sloupce (pokud není nulová) a skočí na původní větu.
IF liMax>0 && pokud tam něco je loCol.Width=liMax && pak nastav novou šířku ENDIF GO liRecno && skoč na původní větu