xBrowse bValid

Post Reply
User avatar
Detlef Hoefner
Posts: 312
Joined: Sat Oct 08, 2005 9:12 am
Location: Germany
Contact:

xBrowse bValid

Post by Detlef Hoefner »

Dear friends,

i'm still busy to learn all aspects of the xBrowse class and found a new problem.

To see how a valid clause may be used with a xBrowse cell edit I built the sample mallorca.

In this example the valid block gives a message if the entered value is bigger than 6 and returns false.
But after showing the message a wrong value is assigned to the cell.

Is there an other way to get a valid clause working as expected?

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

Post by Antonio Linares »

Detlef,

If you comment out this line in mallorca.prg:

Code: Select all

    IF nVal>6 
        // MsgAlert('No puede ser mayor que 6') 
        lValRet:=.f. 
    ENDIF 
then it works fine. The problem is that the MsgAlert() causes the GET to loose the focus and then its current value its assigned

We should find a way to accept Msg...() (or similar) calls.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Detlef Hoefner
Posts: 312
Joined: Sat Oct 08, 2005 9:12 am
Location: Germany
Contact:

Post by Detlef Hoefner »

Antonio,

thanks for your advice. But it still doesn't work for me.
I removed the MsgAlert so that the validating function returns .f. for values > 6 and .t. for all others.

But the example mallorca shows a very strange editing/validating of TxBrowse.

Example:
i enter a '7' and press return.
Nothing happens, the 7 is shown but not accepted. This is ok.
But when now pressing Esc, the 7 is accepted and i can move to an other cell.

I now go back to the cell with the 7 and enter a '2' and press return.
The 2 disappears, the 7 shows up again and after leaving the cell, the 2 is properly displayed.

This is a very confusing kind of editing.

Perhaps its only on my environment or can someone confirm this behaviour?

Thanks and regards,
Detlef
User avatar
Detlef Hoefner
Posts: 312
Joined: Sat Oct 08, 2005 9:12 am
Location: Germany
Contact:

Post by Detlef Hoefner »

Dear friends,

is there no one who could confirm or try this strange validating of xBrowse?

I'd be glad for any statement.
Regards,
Detlef
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Detlef,

In mallorca.prg sample, this line seems not to be needed:

oBrw:aCols[1]:bOnPostEdit := {|o,x| aLin[ oBrw:nArrayAt,1] := x }

as such assignment should be done by the GET itself
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Detlef Hoefner
Posts: 312
Joined: Sat Oct 08, 2005 9:12 am
Location: Germany
Contact:

Post by Detlef Hoefner »

Antonio,

sorry, but it still doesn't work.

If i remove the line

Code: Select all

oBrw:aCols[1]:bOnPostEdit := {|o,x| aLin[ oBrw:nArrayAt,1] := x }
the program complains at runtime that onPostEdit is not defined.

If i set it to NIL, i can not enter new values because they are not assigned.

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

Post by Antonio Linares »

Detlef,

I didn't meant to remove it. My point is that it does not seems to be the right code
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Detlef Hoefner
Posts: 312
Joined: Sat Oct 08, 2005 9:12 am
Location: Germany
Contact:

Post by Detlef Hoefner »

Antonio,

i know, you didn't say to remove this line.
But you said
... as such assignment should be done by the GET itself
But the get doesn't assign the value as expected. :cry:

Regards,
Detlef
Rossine
Posts: 343
Joined: Tue Oct 11, 2005 11:33 am

Post by Rossine »

Hello Detlef,

Do these changes in xbrowse.prg and see functions correctly. Case does not function an example citing problem sends me.

Code: Select all

METHOD PostEdit( xValue, lButton ) CLASS TXBrwColumn

   local lGoNext := .f.

   If ::lOnPostEdit
      return nil
   Endif

   ::lOnPostEdit := .t.

   DEFAULT lButton := .f.

   if !getkeystate( VK_ESCAPE )
      if     ::oEditGet != nil  && By Rossine 09/06/07
             if valtype( ::oEditGet ) = "O" .and. ::oEditGet:bValid != NIL
                if !Eval( ::bEditValid, ::oEditGet )
                   Eval( ::bOnPostEdit, Self, ::oEditTmp )
                   ::oEditGet:varput(::oEditTmp)
                   ::oEditGet:refresh()
                   ::lOnPostEdit := .f.
                   return .F.
                endif
             endif 
      elseif ::oEditLbx != nil  && By Rossine 09/06/07
             if valtype( ::oEditLbx ) = "O" .and. ::oEditLbx:bValid != NIL
                if !Eval( ::bEditValid, ::oEditLbx )
                   Eval( ::bOnPostEdit, Self, ::oEditTmp )
                   ::oEditLbx:varput(::oEditTmp)
                   ::oEditLbx:refresh()
                   ::lOnPostEdit := .f.
                   return .F.
                endif
             endif 
      endif
   endif
Regards,

Rossine.
User avatar
Detlef Hoefner
Posts: 312
Joined: Sat Oct 08, 2005 9:12 am
Location: Germany
Contact:

Post by Detlef Hoefner »

Hello Rossine,

thanks a lot for your advice.
Now invalid entries combined with Esc key are properly processed.
But unfortunately i can't input valid values.

The sample i'm speaking about is mallorca.prg in the samples folder of FWH.

My intention was to find a replacement for Manuel Mercado's TsBrowse because it has some strange behaviours.
But now i see that xBrowse isn' much more mature :( .

Anyhow thanks again for your help.
I think i'll try Hernan's TwBrowse instead.

Regards,
Detlef
Post Reply