oWdn:Say - SAY class

Post Reply
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

oWdn:Say - SAY class

Post by Otto »

would someone be so kind to explain the difference of
oWdn:Say

and the SAY class.
oSay is repainted automatically what does this mean for the memory usage.
Thanks in advance
Otto
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: oWdn:Say - SAY class

Post by Enrico Maria Giordano »

Otto wrote:would someone be so kind to explain the difference of
oWdn:Say

and the SAY class.
oSay is repainted automatically what does this mean for the memory usage.
Thanks in advance
Otto
oWnd:Say() is just a text printed on the specified window while TSay is a real control. And yes, it surely uses more resources but I wouldn't care.

EMG
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Post by Otto »

Hello Enrico,
thank you.
But memory seems to be a problem. See my test - prg.
Maybe I call it the wrong way.
But if you call the test function with oSay more times the program crashes.


Regards,
Otto


#include "FiveWin.ch"

//----------------------------------------------------------------------------//
STATIC n
function Main()

local oWnd, oFont
N:=1
DEFINE FONT oFont NAME "Arial" SIZE 20, 30

DEFINE WINDOW oWnd FROM 1, 1 TO 30, 80 TITLE "Testing Method Say()"

@ 1, 1 BUTTON " oWnd : Say " OF oWnd SIZE 60, 25 ;
ACTION test2(oWnd,oFont)

@ 1, 30 BUTTON " oSay " OF oWnd SIZE 60, 25 ;
ACTION test(oWnd,oFont)



ACTIVATE WINDOW oWnd MAXIMIZED

RELEASE FONT oFont

return

//----------------------------------------------------------------------------//



func test(oWnd,oFont)
LOCAL I:=0

FOR N := 1 TO 60 STEP 2
FOR I := 1 TO 200 STEP 4
@ n,I SAY ALLTRIM(STR(i))+" ." OF oWnd FONT ofont COLORS nRGB( 255, 0, 0 ) , nRGB( 55, 55, 255)
NEXT



NEXT
msginfo("ENDE")

return nil

func test2(oWnd,oFont)
LOCAL I:=0

FOR N := 1 TO 60 STEP 2
FOR I := 1 TO 200 STEP 4
oWnd:Say( n, I, ALLTRIM(STR(i))+" .", nRGB( 255, 0, 0 ) , nRGB( 255, 2255, 255),oFont )
NEXT
NEXT
msginfo("ENDE")

return nil
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Otto wrote:Hello Enrico,
thank you.
But memory seems to be a problem. See my test - prg.
Maybe I call it the wrong way.
But if you call the test function with oSay more times the program crashes.
Yes, because you are creating more and more TSay objects while one would be enough. Once created you can simply refresh it or change its text.

EMG
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Post by Otto »

Hello Enrico,
could you show me how to do, please.

Thanks in advance
Otto
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

It depends on what you are trying to do. Generally speaking, consider TSay as any other control. Try to change your sample replacing SAYs with GETs: would it make sense?

Moreover, look at Refresh() and SetText() methods.

EMG
User avatar
Otto
Posts: 4470
Joined: Fri Oct 07, 2005 7:07 pm
Contact:

Post by Otto »

I think osay / oget does not work for this job because I need all the information on the proper place.
If I try with Settext, nTop, nLeft and refresh I lose the former information.

Thanks again.
Regards,
Otto
Post Reply