How to count input word in TGet?

Post Reply
User avatar
richard-service
Posts: 583
Joined: Tue Oct 16, 2007 8:57 am
Location: New Taipei City, Taiwan
Contact:

How to count input word in TGet?

Post by richard-service »

Hi

this function like Web site Send SMS input UI.

Redefine GET ... ON CHNAGE....

I need show how many space can input in GET Object.

The problem is ON CHANGE can't Refresh other Object of FWH.

Source code:
***********************************
nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(PAY->RMK1))
nLEFT2:=LEN(PAY->RMK2)-LEN(TRIM(PAY->RMK2))

REDEFINE GET PAY->RMK1 ID 21 OF oDlg ;
ON CHANGE LEFT_SHOW(1) ;
UPDATE

REDEFINE GET PAY->RMK2 ID 23 OF oDlg ;
ON CHANGE LEFT_SHOW(2) ;
UPDATE

REDEFINE SAY oLEFT1 PROMPT nLEFT1 PICTURE "99" ID 12 OF oDlg ;
UPDATE

REDEFINE SAY oLEFT2 PROMPT nLEFT2 PICTURE "99" ID 14 OF oDlg ;
UPDATE
....
************************
STATIC FUNCTION LEFT_SHOW(nLINE)

DO CASE
CASE nLINE=1
nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(PAY->RMK1))

oLEFT1:REFRESH() ==> NOT WORK

CASE nLINE=2
nLEFT2:=LEN(PAY->RMK2)-LEN(TRIM(PAY->RMK2))

oLEFT2:REFRESH() ==> NOT WORK

ENDCASE

RETURN NIL
**************************************
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Richard,

>
nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(PAY->RMK1))
oLEFT1:REFRESH() ==> NOT WORK
>

oLeft1:SetText( Str( nLeft1 ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
richard-service
Posts: 583
Joined: Tue Oct 16, 2007 8:57 am
Location: New Taipei City, Taiwan
Contact:

Post by richard-service »

Antonio Linares wrote:Richard,

>
nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(PAY->RMK1))
oLEFT1:REFRESH() ==> NOT WORK
>

oLeft1:SetText( Str( nLeft1 ) )
Hi Antonio,

I try it but not work. TSay object not Refresh.
oLEFT1:REFRESH() not work.

Have you any idea for it?

Regards,

Richard
User avatar
kokookao2007
Posts: 59
Joined: Thu May 17, 2007 8:27 am

Post by kokookao2007 »

Antonio :

nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(PAY->RMK1))
oLeft1:SetText( Str( nLeft1 ) )
oLeft1:REFRESH()
hi Antonio:

Get ...On Change => can't refresh other objects .

Same problem to me , look like a bug .

Best Regards
kokoo
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Post by nageswaragunupudi »

Please try this code. You can use the same logic to achieve what you want.

Code: Select all

FUNCTION Main()

   LOCAL oDlg,oFont
   LOCAL nLen := 20
   LOCAL nRem := 20
   LOCAL cVar := SPACE(20)
   LOCAL oSay, oGet


   DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
   DEFINE DIALOG oDlg SIZE 300,200 PIXEL

   @ 10,10 GET oGet VAR cVar SIZE 100,12 PIXEL OF oDlg ON CHANGE oSay:Refresh()
   @ 10,120 SAY oSay PROMPT STR( 20 - LEN(TRIM(oGet:cText)), 3, 0 ) SIZE 20,10 PIXEL OF oDlg COLOR CLR_BLACK,CLR_WHITE

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont

RETURN NIL
Whenever the user enters a character in the get, the say displays the remaining number of characters he can enter.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Post by nageswaragunupudi »

Get ...On Change => can't refresh other objects .

Same problem to me , look like a bug .
From my above example you see that get on change can refresh other objects. There is no bug anywhere. It is just the way you use.
Regards

G. N. Rao.
Hyderabad, India
User avatar
kokookao2007
Posts: 59
Joined: Thu May 17, 2007 8:27 am

Post by kokookao2007 »

nageswaragunupudi , Thank YOU.

Define Get ...On Change oSAY1:REFRESH() ==> WORK

Define Get ...On Change OBJECT_REFRESH() ==> NOT WORK
..
FUNTION OBJECT_REFRESH()
..
..
oBJECT1():REFRESH()
oBJECT2():REFRESH()
oBJECT3():REFRESH()

RETURN NIL

Best Regards
kokoo
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Post by nageswaragunupudi »

Objects do refresh. You should ensure correct values to be reassigned to the object variables.
for example you wrote
nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(PAY->RMK1))
not correct
it should be
nLEFT1:=LEN(PAY->RMK1)-LEN(TRIM(oGet:cText))
Regards

G. N. Rao.
Hyderabad, India
Post Reply