Multiline GET

Moderator: Enrico Maria Giordano

Multiline GET

Postby Maverich » Tue Nov 01, 2005 6:56 pm

Non riesco a far funzionare una get multiline.
Il mio scopo è correggere la calcolatrice Dutch.prg dei samples, dove i risultati vengono visualizzati appunto su una multiline get che dovrebbe scorrere verso l'alto, ma non lo fa.
In pratica ogni volta che premo un operatore artimetico viene aggiunta una riga, però malgrado sia inserito un oggetto:goBottom il cursore rimane sempre in cima alla get, e costringe ogni volta a scorrere alla fine della get per vedere l'ultimo risultato.
Ho riassunto nell'esempio minimale che allego il problema.
Code: Select all  Expand view  RUN
#include "FiveWin.ch"

function Main()
   local oRes, cRes, oDlg

   DEFINE DIALOG oDlg SIZE 205, 260

   @ 0.1, 0.5 GET oRes VAR cRes OF oDlg ;
   MULTILINE ;
   SIZE 95, 45 RIGHT

   ores:bKeyDown := { | nKey | test(oRes,nKey)}

   ACTIVATE DIALOG oDlg CENTER
return .T.

*-------------------------------*

FUNCTION test(oRes,nKey)
   if nKey == 107            // "+"
      oRes:cText( oRes:cText()+"altra riga"+CRLF+" ")
      Tone(400,1)
      oRes:GoBottom()
   endif

return NIL

In questo esempio premendo il tasto + viene aggiunta una riga; funziona ma i CRLF non vengono eseguiti (nel senso che rimane il simbolo dell'a capo ma non va a capo, non so perchè). Se metto una oggetto:refresh gli a capo funzionano, ma il cursore ritorna in testa.

Come risolvere il problema?
saluti
Riccardo
User avatar
Maverich
 
Posts: 31
Joined: Sun Oct 09, 2005 8:29 pm
Location: Prato, Italia

Re: Multiline GET

Postby Enrico Maria Giordano » Wed Nov 02, 2005 12:54 pm

Eccoti un esempio funzionante. Spero di aver capito bene ciò che ti serve. Ti ho messo due possibilità, una con un pulsante e una digitando direttamente:

Code: Select all  Expand view  RUN
#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    LOCAL oGet, cVar := ""

    DEFINE DIALOG oDlg;
           SIZE 400, 200

    @ 1, 1 GET oGet VAR cVar MEMO OF oDlg;
           SIZE 100, 50

    oGet:bKeyDown = { | nKey | ADDLINE( oGet, nKey ) }

    @ 4, 1 BUTTON "&Add text" ACTION ADDTEXT( oGet )

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL


STATIC FUNCTION ADDTEXT( oGet )

    oGet:Append( "This is a test" + CRLF )

    RETURN NIL


STATIC FUNCTION ADDLINE( oGet, nKey )

    IF nKey = 107
        SYSREFRESH()
        oGet:Append( CRLF )
    ENDIF

    RETURN NIL


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

ok!

Postby Maverich » Tue Nov 08, 2005 7:26 am

Grazie Enrico!
Il problema è stato corretto nella maniera da te indicata.
a presto.
Riccardo
User avatar
Maverich
 
Posts: 31
Joined: Sun Oct 09, 2005 8:29 pm
Location: Prato, Italia


Return to All products support

Who is online

Users browsing this forum: No registered users and 13 guests