Page 1 of 1

Instantiating the QT object in the NEW method

Posted: Wed Mar 30, 2011 10:28 am
by concentra
Hi.
I moved the instantiation of the associated QT object in window.prg from the CREATE to the NEW method.
I tested all the samples and none of them presented problems or different behavior, so I committed to SVN.
In fact, in the old fashion, samples\statusbar\demo_4.prg didn´t perform correct and in the new one it does. The icons were not associated because the window wasn´t instantiated.

Re: Instantiating the QT object in the NEW method

Posted: Wed Mar 30, 2011 11:55 am
by l3whmg
Hi Mauricio, many thanks.
Please, take a look at the end of viewtopic.php?f=5&t=1873&start=40

Cheers

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 11:18 am
by l3whmg
Hi Mauricio,
I look at your code, but I can't compile example. Why? Because I don't have the libHbQtxxxx.a libraries in according with Harbour compiler distribuited with HMG. I have the new (with standard Harbour distribution), but they can't work with HMG because there are some differences; in fact, we are waiting the start (from MrDuck) to do some changes in HMG4 about Qt functions.
For this reason I remember to every one: don't change your Harbour installation with the new version to compile HMG programs.
Now I will do a merge of the current HMG version to a hybrid HMG version.
Cheers

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 1:27 pm
by l3whmg
Hi Mauricio, I've done some test, but...
I can not figure out if: I forgot something, I misunderstood something or is there some big problem :shock:

I write this code:

Code: Select all

#include "hmg.ch"

MEMVAR win1

FUNCTION Main

   LOCAL oWindow
   PUBLIC win1

   hbQt_ErrorSys()

   WITH OBJECT oWindow := Window():New()
      :Name       := "win1"
      :Fontname   := "Helvetica"
      :Row        := 10
      :Col        := 10
      :Width      := 400
      :Height     := 400
      :Title      := "Nice OOP Demo!!!"
      :Type       := WND_MAIN
      :OnInit     := { || Main_OnInit() }

   END WITH

   oWindow:Activate()

RETURN NIL

STATIC FUNCTION Main_OnInit()

  win1:Center()

RETURN NIL
This doesn't work: win1:Center() Why?

Cheers

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 1:43 pm
by l3whmg
Hi Mauricio, other...but it's the same

Code: Select all

#include "hmg.ch"

MEMVAR win1

FUNCTION Main

   LOCAL oWindow
   PUBLIC win1

   hbQt_ErrorSys()

   WITH OBJECT oWindow := Window():New()
      :Name       := "win1"
      :Fontname   := "Helvetica"
      :Row        := 10
      :Col        := 10
      :Width      := 400
      :Height     := 400
      :Title      := "Nice OOP Demo!!!"
      :Type       := WND_MAIN
      :OnInit     := { || oWindow:Center() }

      WITH OBJECT Label():New()
         :Name     := "label1"
         :Row      := 20
         :Col      := 40
         :Width    := 200
         :Value    := 'OOP LABEL!!!'
      END WITH

      WITH OBJECT Button():New()
         :Name     := "button1"
         :Row      := 160
         :Col      := 40
         :Width    := 180
         :Caption  := "Show FontName"
         :OnClick   := { || Button1_OnClick() }
      END WITH

   END WITH

   oWindow:Activate()

RETURN NIL

STATIC FUNCTION Main_OnInit()

//  win1:Center() It doesn't work

RETURN NIL

STATIC FUNCTION Button1_OnClick()

  MsgInfo( win1:Label1:Caption() , "Label CAPTION" )

RETURN NIL
The last win1:Label1:Caption() it does'nt work

Cheers

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 4:11 pm
by concentra
Hi Luigi !
The window object is oWindow and you are referencing win1...
I see you "named" it win1 but, is this supposed to be valid in HMG ?

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 4:48 pm
by l3whmg
Hi Mauricio,
the name it's mandatory for a lot of reason!
1) In this way is very easy to refer to various objects in the program. On the other hand, the name "win1" is the object oWindow but it's named "win1". Of course it's HMGx
2) Within a program, as you can get or set a value of a form or a control of this form? examples:
cVarName1 := oWindow1:oControl1:Value // oWindow1:oControl1:Value := "luigi" and
cVarName2 := oWindow2:oControl1:Value // oWindow2:oControl1:Value := "Mauricio" and...
or you prefer this
cVarName1 := win1:FirstName:Value // win1:FirstName:Value := "Luigi" and
cVarName2 := win2:FirstName:Value // win2:FirstName:Value := "Mauricio" and...
Perhaps, in a complete Object Oriented Program works fine, but not in this situation.

3) Backward compatibility

My suggestion: you must think in standard XBase style but solve with object.

Cheers

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 6:03 pm
by concentra
Hi Luigi.

Don´t know about HMG3, but seems that this never worked in HMG4...
I tested older versions from sourceforge.net and none of them worked.

Re: Instantiating the QT object in the NEW method

Posted: Thu Mar 31, 2011 8:06 pm
by l3whmg
Ok Mauricio.
perhaps HMG4 has problems? For example take a look at "samples\button\demo_3.prg" and you can see HMG3 style and HMG4 style.

Cheers

Re: Instantiating the QT object in the NEW method

Posted: Fri Apr 01, 2011 7:12 am
by l3whmg
Hy guys,
I must say I'm sorry to Mauricio and everyone because I do a mistake :cry:

I give a wrong information about form. This is my mistake:

Code: Select all

 WITH OBJECT oWindow := Window():New()
      :Name       := "win1"
The good one is

Code: Select all

 WITH OBJECT win1 := Window():New()
I'm very sorry.

Best regards