Code: Select all
CLASS RedimDataWindow INHERIT DataWindow
METHOD ResizeWindow( oDimension ) // Methode gekürzt!
LOCAL nWidth AS INT
LOCAL nHeight AS INT
LOCAL nLen AS DWORD
LOCAL nI, nJ AS DWORD
LOCAL nPos AS DWORD
LOCAL nHorFaktor AS FLOAT
LOCAL nVerFaktor AS FLOAT
LOCAL aC AS ARRAY
LOCAL symName AS SYMBOL
LOCAL oSize AS Dimension
LOCAL oOrigin AS Point
LOCAL uError AS USUAL
BEGIN SEQUENCE
IF ! IsInstanceOf( oDimension, #Dimension )
oDimension := SELF:Size
ENDIF
nWidth := oDimension:Width
nHeight := oDimension:Height
nHorFaktor := Round( FLOAT( nWidth ) / FLOAT( _nSizeWidth ), 2 )
nVerFaktor := Round( FLOAT( nHeight ) / FLOAT( _nSizeHeight ), 2 )
IF _oFont != NULL_OBJECT
_oFont:Destroy()
_oFont := NULL_OBJECT
ENDIF
_oFont := Font{ , Integer( FLOAT( _nFontSize ) * nVerFaktor ), _cFontName }
IF _lFontBold
_oFont:Bold := TRUE
ENDIF
aC := SELF:GetControls( #Control )
nLen := ALen( aC )
FOR nI := 1 UPTO nLen
symName := aC[nI]:NameSym
nPos := AScan( _aControls, {|a| a[1] == symName } )
IF nPos > 0
oSize := Dimension{ Integer( FLOAT( _aControls[nPos,3]:Width ) * nHorFaktor ), ;
Integer( FLOAT( _aControls[nPos,3]:Height ) * nVerFaktor )}
oOrigin := Point{ Integer( FLOAT( _aControls[nPos,2]:X ) * nHorFaktor ), ;
Integer( FLOAT( _aControls[nPos,2]:Y ) * nVerFaktor ) }
// Wenn die Zuordnung von ControlFont auskommentiert wird funktionierts immer!
// Mit der Zuordnung funktionierts manchmal und dann wieder nicht!
aC[nI]:ControlFont := _oFont
aC[nI]:Origin := oOrigin
aC[nI]:Size := oSize
ENDIF
NEXT
RECOVER USING uError
IF IsInstanceOf(uError, #Error)
ErrorBox{, uError:Description}:Show()
ENDIF
END SEQUENCE
RETURN NIL
-> Wie kann das Programm mit dem gleichen Fenster 1x funktionieren und dann wieder nicht?
-> Was ist an der Zuordnung des ControlsFonts eines Controls falsch?