FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Class definition advice needed. (SOLVED)
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Class definition advice needed. (SOLVED)
Posted: Tue Dec 08, 2020 09:00 AM
Dear Masters,

I have an browse class name TYK_List. I have an define line like above.

Code (fw): Select all Collapse
CLASS TYK_List FROM TYK_Core

    DATA oData
    DATA oDlg, oDlg_Other
    DATA oParent
    ....
    ....
    ....

    METHOD New( cVarName, cCerID, uData, aMyCols, aHeaders, cButtonPlace, SART, ARANAN, nOrd, aButtons, ;
            aRelations, aOptions, Esas_Isim, Ex_SART, aCargo, cSilKontrol, cOnBody, aArama, oData, ;
            lLineNo, cOnExtra_Caption, oApp, oFont_Brw, oFont_Edit, ldontExit, aStartUp, bOzelyetki, ;
            bOnLocked, cOnLocked, lDesc, lMultiSelect, oWnd, oParent, cPrefix_Sil, aKaydet_Kontrol, ;
            cTitle, cOnExtra_Bitmap, cIcon) CONSTRUCTOR
    
        
    METHOD GO_DETAY_Ekle()
    METHOD GO_DETAY()
    METHOD GO_SIL()
    METHOD GO_BUL()
    ....
    ....
    ....
    
    METHOD End()

ENDCLASS


Code (fw): Select all Collapse
 #xcommand DEFINE Ob_Browse1 <oOb_Brw> [OF <oWnd>];
                        [ CERCEVEID <cCerID> ] ;
                        [ UDATA <uData> ] ;
                        [ DATA <oData> ] ;
            [ <cols: COLS, COLUMNS> <aMyCols,...> ] ;
            [ <head:HEAD,HEADER,HEADERS> <aHeaders,...> ] ;
                        [ BUTTONYERI <cButtonPlace> ] ;
                        [ SART <cSART> ] ;
                        [ ARANAN <cARANAN> ] ;
                        [ ORDER <nOrd> ] ;
            [ <buttons:BUTTON, BUTTONS> <aButtons,...> ] ;
            [ <rela:RELATION, RELATIONS> <aRelations,...> ] ;
            [ <opt:OPTION, OPTIONS> <aOptions,...> ] ;
                        [ ESASISIM <cEsas_Isim> ] ;
                        [ EXTRASART <Ex_SART> ] ;
                        [ CARGO <uCargo> ] ;
                        [ ONSILKONTROL <cSilKontrol> ] ;
                        [ ONBODY <cOnBody> ] ;
            [ <aramavar: ARAMAVAR> <aAramaVar,...>] ;
            [ <lineno: LINENO> ] ;
                        [ EXTRABUTTON CAPTION <Ex_BCaption> ] ;
                        [ EXTRABUTTON BITMAP <Ex_BBitmap> ] ;
                        [ TITLE <cTitle> ] ;
                        [ APPLICATION <oApplication> ] ;
                        [ BROWSE FONT <oFont_Brw> ];
                        [ EDIT FONT <oFont_Edit> ];
                        [ PARENT <oParent> ] ;
            [ <ldontExit: DONTEXIT> ] ;
            [ STARTUP <aStartUp>] ;
            [ OZELYETKI <bOzelYetki>] ;
            [ ONLOCKED <bOnLocked>] ;
            [ ONLOCKED_VAR <cOnLocked>] ;
                        [ <lDesc: DESCENDING> ] ;               
                        [ <lMulti: MULTISELECT> ] ;             
                        [ PREFIX_SIL <cPrefix_Sil> ] ;
            [ <KONTROL> <aKontrols,...> ] ;
      => ;
          <oOb_Brw> := TYK_List():New(<(oOb_Brw)>, <cCerID>, <uData>, ;
                        [\{<aMyCols>\}],;
                        [\{<aHeaders>\}],;
                        [<cButtonPlace>],[<cSART>],[<cARANAN>],[<nOrd>],;
                        [<aButtons>],[\{<aRelations>\}],[<aOptions>],[<cEsas_Isim>],;
                        [<Ex_SART>],[<uCargo>],<cSilKontrol>,<cOnBody>,[<aAramaVar>], ;
                        <oData>, <.lineno.>, [<Ex_BCaption>], <oApplication>,;
                        [<oFont_Brw>], [<oFont_Edit>], <.ldontExit.>, <aStartUp>, <bOzelYetki>, ;
                        <bOnLocked>, <cOnLocked>, <.lDesc.>, <.lMulti.>, [<oWnd>], [<oParent>],;
                        [<cPrefix_Sil>], [\{<aKontrols>\}], [<cTitle>], [<Ex_BBitmap>] )

This class has a dialog and can be define more than one same class in it. There is no problem. It works.

If there is an error in one dialog that called from first class, I could not found the which derived object is from.

I have decided to separate class like This

Code (fw): Select all Collapse
CLASS TMy_Purpose1 FROM TYK_List
ENDCLASS    

CLASS TMy_Purpose2 FROM TYK_List
ENDCLASS    

CLASS TMy_Purpose3 FROM TYK_List
ENDCLASS    

CLASS TMy_Purposen FROM TYK_List
ENDCLASS


In this situation, I can not use define "Ob_Browse1" name. I should define every inherited class "TMy_Purpose?". But This class is constantly changing, it also defines.
I should not forget to change inherited class defines also.

Question :

Is there any general define method (or parameter) to run inherited classes from one define line?

Code (fw): Select all Collapse
xcommand DEFINE oMy_Purpose1        oOb_Browse1         // but should run TMy_Purpose1() instead TYK_List()
Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Class definition advice needed.
Posted: Tue Dec 08, 2020 04:27 PM
Please try this sample and adapt to your requirements:
Code (fw): Select all Collapse
#include "fivewin.ch"

#xcommand DEFINE <o> Ob_Browse1  <n> [SUBCLASS <cClass>] => ;
   <o> := HB_ExecFromArray( IfNil( <cClass>, "TYK_LIST" ) ):New( <n> )

function Main()

   local o, o1, o2, O3

   DEFINE o  Ob_Browse1  1
   DEFINE o1 Ob_Browse1  1 SUBCLASS "TMY_PURPOSE1"
   DEFINE o2 Ob_Browse1  1 SUBCLASS "TMY_PURPOSE2"
   DEFINE o3 Ob_Browse1  1 SUBCLASS "TMy_Purpose3"

   ? o:ClassName(), o1:ClassName(), o2:ClassName(), o3:ClassName()

return nil

CLASS TYK_List
ENDCLASS

CLASS TMy_Purpose1 FROM TYK_List
ENDCLASS

CLASS TMy_Purpose2 FROM TYK_List
ENDCLASS

CLASS TMy_Purpose3 FROM TYK_List
ENDCLASS

CLASS TMy_Purposen FROM TYK_List
ENDCLASS


Regards



G. N. Rao.

Hyderabad, India
Posts: 1387
Joined: Fri May 23, 2008 01:33 PM
Re: Class definition advice needed.
Posted: Tue Dec 08, 2020 06:05 PM

Thank you very much Mr. Rao,

This solved my problem.

Regards,



Hakan ONEMLI



Harbour & MSVC 2022 & FWH 23.06

Continue the discussion