Class definition advice needed. (SOLVED)

Post Reply
Horizon
Posts: 997
Joined: Fri May 23, 2008 1:33 pm

Class definition advice needed. (SOLVED)

Post by Horizon »

Dear Masters,

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

Code: Select all

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: Select all

 #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: Select all

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: Select all

xcommand DEFINE oMy_Purpose1        oOb_Browse1         // but should run TMy_Purpose1() instead TYK_List()
Last edited by Horizon on Tue Dec 08, 2020 6:10 pm, edited 1 time in total.
Regards,

Hakan ONEMLI

Harbour & VS 2019 & FWH 20.12
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Class definition advice needed.

Post by nageswaragunupudi »

Please try this sample and adapt to your requirements:

Code: Select all

#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
Image
Regards

G. N. Rao.
Hyderabad, India
Horizon
Posts: 997
Joined: Fri May 23, 2008 1:33 pm

Re: Class definition advice needed.

Post by Horizon »

Thank you very much Mr. Rao,

This solved my problem.
Regards,

Hakan ONEMLI

Harbour & VS 2019 & FWH 20.12
Post Reply