フォームがロードされたとき、文字列オブジェクトの文字が多すぎて表示しきれないとき、フォントを小さくして文字列全体を表示する。
文字列が表示し切れるくらい短くてフォントを小さくする必要がない場合、このコマンドは何もしない。
使い方
JCL_frm_AdjustFontSize (“vA01_var4D_DataFile”)
引数
$1: フォームオブジェクト名
//JCL_frm_AdjustFontSize
//フォームオブジェクト 文字数によってフォントサイズを小さくする
//20170905 yabe wat
//20181124 wat 対象となるフィールドがいない場合は無限ループになるので注意
C_TEXT($1;$fldName)
$fldName:=$1
C_LONGINT($font_size)
C_LONGINT($best_width;$best_height)
C_LONGINT($org_width;$org_height)
//オブジェクトが存在するかどうか
C_POINTER($objPtr)
$objPtr:=OBJECT Get pointer(Object named;$fldName)
If ($objPtr#Null)
// プロパティで設定されているフォントサイズ
$font_size:=OBJECT Get font size(*;$fldName)
// フォームエディタ上のオブジェクトサイズ
JCL_frm_GetObjectSize ($fldName;->$org_width;->$org_height)
// 文字列描画後の オフジェクトの最適サイズ
OBJECT GET BEST SIZE(*;$fldName;$best_width;$best_height)
While ($org_width<=$best_width)
// フォントサイズを一つ小さくする
$font_size:=$font_size-1
OBJECT SET FONT SIZE(*;$fldName;$font_size)
// フォント変更後、オフジェクトの最適サイズ を取り直す
OBJECT GET BEST SIZE(*;$fldName;$best_width;$best_height)
End while
Else
C_TEXT($msg)
$msg:="Object not found: JCL_frm_AdjustFontSize"+Char(Carriage return)
$msg:=$msg+"$fldName=["+$fldName+"]"
//$msg:=$msg+"$objPtr=["+string($objPtr)+"]"
ALERT($msg+": Null")
End if
印刷時に利用する場合は、Print formの「On Printig Detail」イベントなどで実行する。