Page 2 of 3

Re: FWH_2407 oSay does not assume nHeight

Posted: Sat Aug 24, 2024 9:33 am
by Antonio Linares
[ Eval( { | oSay, nWidth, nHeight | If( ! Empty( oSay ) .and. ! Empty( nWidth ), oSay:SetSize( nWidth, nHeight ),) }, <oSay>, <nWidth>, <nHeight> ) ]

Working! :-)

Re: FWH_2407 oSay does not assume nHeight

Posted: Sat Aug 24, 2024 12:03 pm
by vinhesoft
Working! with DEFINE WINDOW

Code: Select all | Expand

function Main()

    local oWnd, oTest1, oTest2

    DEFINE WINDOW oWnd

    @ 057,376 SAY oTest1 PROMPT 'Test1' PIXEL
    ? oTest1:nWidth,oTest1:nHeight // 28,16

    @ 087,376 SAY oTest2 PROMPT 'Test2' PIXEL SIZE 015,007
    ? oTest2:nWidth,oTest2:nHeight // 15,07

    oTest1:SetText('** Test1 **')
    ? oTest1:nWidth,oTest1:nHeight // 28,16

    oTest2:SetText('** Test2 **')
    ? oTest2:nWidth,oTest2:nHeight // 15,07

    oTest1:refresh()
    ? oTest1:nWidth,oTest1:nHeight // 28,16

    oTest2:refresh()
    ? oTest2:nWidth,oTest2:nHeight //15,07

    ACTIVATE WINDOW oWnd

return nil
not Working! with DEFINE DIALOG

Code: Select all | Expand

function Test()

    local oWnd, oTest1, oTest2

    DEFINE DIALOG oWnd

    @ 057,376 SAY oTest1 PROMPT 'Test1' PIXEL
    ? oTest1:nWidth,oTest1:nHeight // 37,16

    @ 087,376 SAY oTest2 PROMPT 'Test2' PIXEL SIZE 015,007
    ? oTest2:nWidth,oTest2:nHeight // 1,1

    oTest1:SetText('** Test1 **')
    ? oTest1:nWidth,oTest1:nHeight // 27,16

    oTest2:SetText('** Test2 **')
    ? oTest2:nWidth,oTest2:nHeight // 1,1

    oTest1:refresh()
    ? oTest1:nWidth,oTest1:nHeight // 37,16

    oTest2:refresh()
    ? oTest2:nWidth,oTest2:nHeight //1,1

    ACTIVATE DIALOG oWnd

return nil
I believe that the best solution would be to change the Tsay class so as not to calculate nWidth/nHeigth when these values ​​are defined by the user

Re: FWH_2407 oSay does not assume nHeight

Posted: Sat Aug 24, 2024 12:09 pm
by Antonio Linares
You are right as controls in dialogboxes don't exist until the dialog is activated

Could you please explain us what do you need this for ?

Maybe there is another way of doing it

Re: FWH_2407 oSay does not assume nHeight

Posted: Sat Aug 24, 2024 5:43 pm
by richard-service
Dear Antonio,

I want to move Say object position. I add 1400 not work. FWH2404 version only add 120 work fine.

FWH2407
Image

Code: Select all | Expand

if nStyle < 2007
         @ nRow, nCol + 1400 SAY ::oPage PROMPT FWString( "Page number:" ) + ;
           LTrim( Str( ::nPage, 4, 0 ) ) + " / " + ;
           LTrim( Str( Len( ::oDevice:aMeta ) ) ) ;
           SIZE 180, 15 PIXEL OF ::oBar FONT ::oFont
         ::oPage:lTransparent = .T.
endif
 
FWH2404
Image

Code: Select all | Expand

if nStyle < 2007
         @ nRow, nCol + 120 SAY ::oPage PROMPT FWString( "Page number:" ) + ;
           LTrim( Str( ::nPage, 4, 0 ) ) + " / " + ;
           LTrim( Str( Len( ::oDevice:aMeta ) ) ) ;
           SIZE 180, 15 PIXEL OF ::oBar FONT ::oFont
         ::oPage:lTransparent = .T.
endif
 

Re: FWH_2407 oSay does not assume nHeight

Posted: Sun Aug 25, 2024 1:09 pm
by nageswaragunupudi
vinhesoft wrote:good morning

via command does not assume nHeight

@ 057,376 SAY oTest PROMPT 'Test' PIXEL
? oTest:nHeight --> 22

@ 057,376 SAY oTest PROMPT 'Test' PIXEL SIZE 015,007
? oTest:nHeight --> 22

------------------------------------

via property yes

oTest:nHeight := 7
? oTest:nHeight --> 7
Working correctly for me.
Please try this program.

Code: Select all | Expand

#include "fivewin.ch"

function Main()

   local oWnd, oSay1, oSay2, oBtn, aInfo

   DEFINE WINDOW oWnd FROM 0,0 TO 500,500 PIXEL TITLE FWVERSION

   @  20,20 SAY oSay1 PROMPT "30 PIXEL HEIGHT" SIZE 200,30 PIXEL OF oWnd
   ? oSay1:nHeight // --> 31

   @  60,20 SAY oSay2 PROMPT "50 PIXEL HEIGHT" SIZE 200,50 PIXEL OF oWnd
   ? oSay2:nHeight // --> 51

   @ 350,20 BTNBMP oBtn PROMPT "CHECK SIZES" + CRLF + "60 PIX HEIGHT" ;
      SIZE 200,60 PIXEL OF oWnd FLAT ACTION ( ;
      aInfo := {}, ;
      AEval( oWnd:aControls, ;
         { |o| AAdd( aInfo, { o:ClassName(), o:nHeight } ) } ), ;
      XBrowse( aInfo ) )

   ACTIVATE WINDOW oWnd CENTERED

return nil
 
Image

Note: There is always 1 pixel difference for some controls/windows. I will explain this in detail in a separate post. Otherwise oCtrl:nHeight gives wthe correct value.

Re: FWH_2407 oSay does not assume nHeight

Posted: Sun Aug 25, 2024 1:54 pm
by nageswaragunupudi
not Working! with DEFINE DIALOG
This is working for me here:

Code: Select all | Expand

#include "fivewin.ch"

function Main()

   local oDlg, oSay1, oSay2, oBtn, aInfo

   DEFINE DIALOG oDlg SIZE 500,500 PIXEL TRUEPIXEL TITLE FWVERSION

   @  20,20 SAY oSay1 PROMPT "30 PIXEL HEIGHT" SIZE 200,30 PIXEL OF oDlg
   ? oSay1:nHeight // --> 31

   @  60,20 SAY oSay2 PROMPT "50 PIXEL HEIGHT" SIZE 200,50 PIXEL OF oDlg
   ? oSay2:nHeight // --> 51

   @ 350,20 BTNBMP oBtn PROMPT "CHECK SIZES" + CRLF + "60 PIX HEIGHT" ;
      SIZE 200,60 PIXEL OF oDlg FLAT ACTION ( ;
      aInfo := {}, ;
      AEval( oDlg:aControls, ;
         { |o| AAdd( aInfo, { o:ClassName(), o:nHeight } ) } ), ;
      XBrowse( aInfo ) )

   ACTIVATE DIALOG oDlg CENTERED

return nil
Please run this also and see.

Re: FWH_2407 oSay does not assume nHeight

Posted: Sun Aug 25, 2024 3:47 pm
by nageswaragunupudi
I want to move Say object position. I add 1400 not work. FWH2404 version only add 120 work fine.
Adding 1400 pixels may move it outside the size of the Bar
Does it work if you add 120 pixels?

Re: FWH_2407 oSay does not assume nHeight

Posted: Mon Aug 26, 2024 5:21 pm
by richard-service
nageswaragunupudi wrote:
I want to move Say object position. I add 1400 not work. FWH2404 version only add 120 work fine.
Adding 1400 pixels may move it outside the size of the Bar
Does it work if you add 120 pixels?
Adding 1400 and 120 always stay here not move.
FWH2407
Image

Re: FWH_2407 oSay does not assume nHeight

Posted: Tue Aug 27, 2024 9:38 am
by nageswaragunupudi
How can you help us to test this at our end?

Re: FWH_2407 oSay does not assume nHeight

Posted: Wed Aug 28, 2024 3:15 pm
by vinhesoft
Dear Antonio

FHW_1912
Image

FWH_2407
Image

DEFINE WINDOW --> ok

DEFINE DIALOG --> not working

Re: FWH_2407 oSay does not assume nHeight

Posted: Wed Aug 28, 2024 3:21 pm
by Antonio Linares
Many thanks for your feedback

We are working to fix it

Re: FWH_2407 oSay does not assume nHeight

Posted: Wed Aug 28, 2024 3:24 pm
by nageswaragunupudi
Please provide one small sample program which we can test here with different versions with Window and dialog

Re: FWH_2407 oSay does not assume nHeight

Posted: Thu Aug 29, 2024 2:23 am
by richard-service
nageswaragunupudi wrote:How can you help us to test this at our end?
Mr.RAO
Thinking about FWH2404 working and FWH2407 not work. I just modify same code and Chinese word within rpreview.prg

Re: FWH_2407 oSay does not assume nHeight

Posted: Thu Aug 29, 2024 6:10 am
by nageswaragunupudi
richard-service wrote:
nageswaragunupudi wrote:How can you help us to test this at our end?
Mr.RAO
Thinking about FWH2404 working and FWH2407 not work. I just modify same code and Chinese word within rpreview.prg
I have tried changing this here on my PC.
This is the original code in rpreview.prg:

Code: Select all | Expand

@ nRow, nCol + 100 SAY ::oPage PROMPT FWString( "Page number:" ) + ;
Without any changes this is how the preview bar looks like:
Image

Now, I changed +100 as +300 like this:

Code: Select all | Expand

@ nRow, nCol + 300 SAY ::oPage PROMPT FWString( "Page number:" ) + ;
With this change, the Say is moved to the right by 200 pixels and looks like this:
Image

Then I changed it to +600 like this:

Code: Select all | Expand

@ nRow, nCol + 600 SAY ::oPage PROMPT FWString( "Page number:" ) + ;
Then the Say moved by 300 pixels more to the right and looked like this:
Image

So, this is working correctly for me here.

Re: FWH_2407 oSay does not assume nHeight

Posted: Thu Aug 29, 2024 7:16 am
by nageswaragunupudi
Mr. João Carlos,

Yes, we see the problem. We regret the inconvenience and also thank your for bringing the issue to our notice.

Can you make two small fixes to "say.prg" and use it to rebuild your application?

FIX:
1) Please locate these two lines. (lines 137 and 138)

Code: Select all | Expand

   ::nBottom   = ::nTop + nHeight
   ::nRight    = ::nLeft + nWidth
Change these two lines as:

Code: Select all | Expand

   ::nBottom   = ::nTop + nHeight - 1
   ::nRight    = ::nLeft + nWidth - 1
2. Please locate this line of code (line 151)

Code: Select all | Expand

   ::CalcSize( ::nTop, ::nLeft, @nWidth, @nHeight, lRelPix )
Please comment out this line, like this

Code: Select all | Expand

// ::CalcSize( ::nTop, ::nLeft, @nWidth, @nHeight, lRelPix )
These changes should resolve your issues.
Please provide your feed back.