IF !This.Parent.Parent.SplitLineHitTest(This) RETURN ENDIF LOCAL liSele,liRecno,liHeight,liRow,lolbl,liRelRow,; lcSource,loColumn,liMax,luVal,lcType IF EOF(This.Parent.Parent.RecordSource) && pokud tam není ani záznam RETURN && pak se vra ENDIF liSele=SELE() && uschovej si oblast WITH This.Parent.Parent SELE (.RecordSource) && skoè na tabulku liHeight=.Height-.HeaderHeight-IIF(INLIST(.ScrollBars,1,3),16,0) liRow=INT(liHeight/.RowHeight) liRelRow=.RelativeRow && relativní øádek ENDWITH loColumn=This.Parent && aktivní sloupec lcSource=loColumn.ControlSource && zdroj dat loControl=EVAL("loColumn."+loColumn.CurrentControl) lcType=TYPE("loControl.Value") * nyní projdu viditelný øádky a zjistím šíøku textu liRecno=RECNO() && zjisti pùvodní vìtu LOCAL ARRAY laFont(6) && ZMÌNA VELIKOSTI OBJEKTU DLE NADPISU * USCHOVÁNÍ INF. O FINTU NA SCREENU 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 * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=loControl.FontName _SCREEN.FontSize=loControl.FontSize _SCREEN.FontBold=loControl.FontBold _SCREEN.FontItalic=loControl.FontItalic _SCREEN.FontStrikethru=loControl.FontStrikethru _SCREEN.FontUnderline=loControl.FontUnderline ENDIF SKIP -1*(liRelRow-1) && skoè na zaèátek viditelného obsahu liMax=0 DO CASE CASE lcType='C' && øetìzec SCAN NEXT liRow IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal=EVAL(lcSource) luVal=IIF(ISNUL(luVal),".NULL.",RTRIM(luVal)) liy=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ IF liy>liMax liMax=liy ENDIF ENDSCAN CASE lcType='M' && øetìzec IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal="Memo" liMax=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ CASE lcType='L' && logická hodnota SCAN NEXT liRow IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal=EVAL(lcSource) luVal=IIF(ISNUL(luVal),".NULL.",IIF(luVal,'T','F')) liy=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ IF liy>liMax liMax=liy ENDIF ENDSCAN CASE lcType='I' && Integer hodnota SCAN NEXT liRow IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal=EVAL(lcSource) luVal=IIF(ISNUL(luVal),".NULL.",LTRIM(STR(luVal,20))) liy=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ IF liy>liMax liMax=liy ENDIF ENDSCAN CASE lcType$'Y,N,F,B' && numerická hodnota SCAN NEXT liRow IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal=EVAL(lcSource) luVal=IIF(ISNUL(luVal),".NULL.",NumToChar(luVal)) liy=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ IF liy>liMax liMax=liy ENDIF ENDSCAN CASE lcType='D' && datum SCAN NEXT liRow IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal=EVAL(lcSource) luVal=IIF(ISNUL(luVal),".NULL.",DTOC(luVal)) liy=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ IF liy>liMax liMax=liy ENDIF ENDSCAN CASE lcType='T' && datum a èas SCAN NEXT liRow IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal=EVAL(lcSource) luVal=IIF(ISNUL(luVal),".NULL.",TTOC(luVal)) liy=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ IF liy>liMax liMax=liy ENDIF ENDSCAN CASE lcType='G' && general ( objekt ) IF PEMSTATUS(loControl,"PropAsColumn",5) AND loControl.PropAsColumn * NASTAVENÍ INF. FontU NA SCREENU DLE OBJEKTU _SCREEN.FontName=IIF(EMPTY(loColumn.DynamicFontName),loColumn.FontName,EVAL(loColumn.DynamicFontName)) _SCREEN.FontSize=IIF(EMPTY(loColumn.DynamicFontSize),loColumn.FontSize,EVAL(loColumn.DynamicFontSize)) _SCREEN.FontBold=IIF(EMPTY(loColumn.DynamicFontBold),loColumn.FontBold,EVAL(loColumn.DynamicFontBold)) _SCREEN.FontItalic=IIF(EMPTY(loColumn.DynamicFontItalic),loColumn.FontItalic,EVAL(loColumn.DynamicFontItalic)) _SCREEN.FontStrikethru=IIF(EMPTY(loColumn.DynamicFontStrikethru),loColumn.FontStrikethru,EVAL(loColumn.DynamicFontStrikethru)) _SCREEN.FontUnderline=IIF(EMPTY(loColumn.DynamicFontUnderline),loColumn.FontUnderline,EVAL(loColumn.DynamicFontUnderline)) ENDIF luVal='General' liMax=_SCREEN.TextWidth(luVal)+4 && VÝPOÈET ŠÍØKY V ZÁVISLOSTI NA ZDA OBJEKT MÁ OKRAJ ENDCASE _SCREEN.FontName=laFont(1) _SCREEN.FontSize=laFont(2) _SCREEN.FontBold=laFont(3) _SCREEN.FontItalic=laFont(4) _SCREEN.FontStrikethru=laFont(5) _SCREEN.FontUnderline=laFont(6) GO liRecno && skoè na pùvodní vìtu IF liMax>0 && pokud tam nìco je loColumn.Width=liMax && pak nastav novou šíøku ENDIF SELE (liSele)and add method SplitLineHitTest() to grid:
* Zjistí, zda se myš (v okamžiku kliknutí na header) nachází nad èarou oddìlující sloupce LPARAM loHeader LOCAL liMRow, liMRowMax liMRow=MCOL(Thisform.Name,3) && pozice myši liMRowMax=OBJTOCLIENT(loHeader,2)+loHeader.Parent.Width+1 && pozice sloupce + šíøka sloupce pøevedeno na formuláø * pokuï seš mimo RETURN BETWEEN(liMRow,liMRowMax-5,liMRowMax+5)If you add property PropAsColumn into control (your classes texbox, combbox etc.) and set it to .T., then autofit respect dynamic properties on column.