Page 1 of 1

Adding support for PIXEL clause

Posted: Mon Apr 21, 2008 12:04 pm
by xProgrammer
This is easy to do. I'll use the TSay Class as an example.

You need to modify FiveLinux.ch (better still copy to FiveLinuxME.ch) and change as follows:

Code: Select all

#xcommand @ <nRow>, <nCol> SAY [ <oSay> <label: PROMPT, VAR> ] <cText> ;
                        [ <of: OF, WINDOW, DIALOG> <oWnd> ] ;
			[ SIZE <nWidth>, <nHeight> ] ;
			[ <update: UPDATE> ] ;
                        [ <pixel: PIXEL> ] ;
			=> ;
                        [ <oSay> := ] TSay():New( <nRow>, <nCol>, [<oWnd>],;
			<cText>, <nWidth>, <nHeight>, <.update.>, <.pixel.> )


and modify get.prg as follows:

Code: Select all

#include "FiveLinux.ch"

CLASS TSay FROM TControl

   METHOD New( nRow, nCol, oWnd, cText, nWidth, nHeight, lUpdate )

   METHOD SetText( cText ) INLINE SaySetText( ::hWnd, cText )

   METHOD GetText() INLINE SayGetText( ::hWnd )

ENDCLASS

METHOD New( nRow, nCol, oWnd, cText, nWidth, nHeight, lUpdate, lPixel ) CLASS TSay

   DEFAULT oWnd := GetWndDefault(), nWidth := 60, nHeight := 25,;
           lUpdate := .f., lPixel := .F.

   ::hWnd = CreateSay( cText )
   ::lUpdate = lUpdate

   oWnd:AddControl( Self )

   SetParent( ::hWnd, oWnd:hWnd )
   IF lPixel
      SetCoors( ::hWnd, nRow, nCol )
     ELSE
      SetCoors( ::hWnd, nRow * 10, nCol * 10 )
   ENDIF
   SetSize( ::hWnd, nWidth, nHeight )

   ::Link()

return Self
Method New has an additional parameter (lPixel) which if set just avoids multiplying nRow and nCol by 10 (which is how FiveLinux "simulates" rows and columns). I was tempted make this the default behaviour, but in the end decided that it was probably best to stay compatible with FiveWin.

Happy tinkering!

xProgrammer

Posted: Mon Apr 21, 2008 3:45 pm
by Antonio Linares
Doug,

It seems that somehow you are not using the latest FiveLinux files as the PIXEL clause is already available since long time ago.

Please contact me by email to synchronize our sources, thanks