Errore in array...forse...!!!

Moderator: Enrico Maria Giordano

Post Reply
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Errore in array...forse...!!!

Post by Silvio »

in una finestra ho creato una serie di bottoni creando prima un array

Code: Select all

LOCAL OmbrxFila :=20
LOCAL FileOmbr := 6

 totarray :=  OmbrxFila*FileOmbr
   aBtn := Array(totarray)
Ho fatto creare i bottoni con un ciclo for next

Code: Select all

FOR k := 1 TO OmbrxFila


per ogni bottone ho associato un'azione diretta ad una funzione

Code: Select all

  cAction := "miazione("+Str(n)+")"
               bAction := {|| &cAction }



questo è il bottone creato ( ho usato tsbutton ma ho provato anche con il semplice button)

Code: Select all


  @ Fila,(Col+nPassLarg) SBUTTON  aBtn[n] RESOURCE cbitmap  PIXEL;
               OF oSpiaggia  ;
               FONT oFont2 ;
               CAPTION  cam ;
               COLOR GetSysColor(13), GetSysColor(1)  ;
               TEXT ON_CENTER ;
               NOBOX       ;
               TOOLTIP oemtoansi(cCaption) ;
               ACTION Eval( bAction,cam )


La procedura mi visualizza tutti bottoni sui quali è stampato il numero

Se clicco su ogni bottone mi crea questo errore

Code: Select all

Application
===========
   Path and name: C:\work\PRG\WINBEACH\PRENOTA.Exe (32 bits)
   Size:   733,696 bytes
   Time from start: 0 hours 0 mins 3 secs 
   Error occurred at: 19/07/2006, 18:31:03
   Error description: Error BASE/1003  Variable does not exist: N

Stack Calls
===========
   Called from: Spiaggia.prg => MIAZIONE(269)
   Called from:  => (b)BEA210(106)
   Called from: Spiaggia.prg => (b)BEA210(160)
   Called from: TSBUTTON.PRG => TSBUTTON:CLICK(804)
   Called from: CONTROL.PRG => TCONTROL:HANDLEEVENT(0)
   Called from: TSBUTTON.PRG => TSBUTTON:HANDLEEVENT(1308)
   Called from: WINDOW.PRG => _FWH(0)
   Called from:  => WINRUN(0)
   Called from: WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
   Called from: main.prg => MAIN(200)


nella funzione MIAZIONE ()
volevo sapere se cliccando sun un bottone mi deve restituire il numero del bottone

quindi

?aBtn[n]:ccaption

cCaption è il testo cioè la variabile cam ( che poi è il numero del bottone)
altrimenti come devo fare per restituirmi il numero del bottone ?


Grazie in anticipo
Best Regards, Saludos

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

Re: Errore in array...forse...!!!

Post by Enrico Maria Giordano »

Impossibile capirne la causa esatta senza vedere un PRG ridotto all'osso e compilabile. Immagino che dipenda da qualche errore nella creazione dei codeblocks che probabilmente fanno riferimento in runtime ad una variabile che non è visibile nel punto in cui vengono valutati.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

appena lo creo lo inserisco.grazie
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

http://hyperupload.com/download/0287a48 ... G.zip.html

ECCO L'ESEMPIETTO!!!

e scusami per il ritardo ma ho dovuto far uscire il cane....
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

Guarda che non sia ridotto all'osso ci credo non ho potuto fare di meglio ma che non sia compilabile non è possibile!!!

io l'ho provato ancora adesso con xmate e compila bene

Ti ho messo anche la sbutton.lib ( io uso xharbour 0.99.6x e fw27)

perchè dici che non è compilabile cosa manca , che errore ti da ?
Best Regards, Saludos

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

Post by Enrico Maria Giordano »

Io ho bisogno di un PRG di poche righe che sia compilabile con le FWH standard altrimenti non ti posso aiutare.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

ok eccotelo

Code: Select all

// esempio  test 

#include "fivewin.ch"

//#include "tsbutton.ch"


STATIC aBtn
Function test
Local oWnd,aBtn,totarray,n,fila

LOCAL OmbrxFila := 20
LOCAL FileOmbr := 8
local oFont ,oFont2  , oFont3

// configurazione spiaggia
   totarray :=  OmbrxFila*FileOmbr
   aBtn := Array(totarray)

n    := 1
fila := 60


DEFINE FONT oFont NAME "Ms Sans Serif"  SIZE 0, -10 BOLD
DEFINE FONT oFont2 NAME "Arial" SIZE 0,-16 BOLD
DEFINE FONT oFont3 NAME "Arial" SIZE 0,-10


// visualizzazione delle poltrone

DEFINE WINDOW  oWnd  COLOR GetSysColor(13), GetSysColor(1) ;
TITLE 'Visualizazzione '
FOR i := 1 TO FileOmbr
nPassLarg :=  0
col := 10
FOR k := 1 TO OmbrxFila

               cAction := "miazione("+Str(n)+")"
               bAction := {|| &cAction }
               bWhen   := {|| .T. }
               bValid  := {|| .T.  }
               cCaption := ""


aBtn[n]:=TButton():New( fila, (Col+nPassLarg), cCaption,oWnd,bAction, 40, 40,,oWnd:oFont,,.t.,.f.,"",.t.,bWhen,bValid,.f.)


/*
@ Fila,(Col+nPassLarg) SBUTTON  aBtn[n] RESOURCE "omb3"   PIXEL;
               OF oWnd ;
               FONT oFont2 ;
               CAPTION cCaption ;
               COLOR CLR_WHITE, GetSysColor(15)  ;
               TEXT ON_CENTER ;
               NOBOX       ;
               TOOLTIP oemtoansi(cCaption) ;
               ACTION Miazione(aBtn[n])

                      */
 col += 75
                    n++
                   // (oDCam)->(dbskip())
                    NEXT
                    fila +=75
                    NEXT






ACTIVATE WINDOW oWnd MAXIMIZED
return nil






// dovrebbe visualizzare un menupopup vicino al bottone


  function miazione(n)
  Local oMenu, aRect ,nRow,nCol

  cpoltrona:= Val(aBtn[n]:cCaption)
    ?cpoltrona
     aRect := GetClientRect( aBtn:hWnd )

    MENU oMenu POPUP
         MENUITEM "&Nuova prenotazione"     action OCCUPARE(cpoltrona,.t.)
         MENUITEM "&Modifica prenotazione"  action OCCUPARE(cpoltrona,.f.)
         MENUITEM "&Mostra prenotazione"
      ENDMENU
      ACTIVATE POPUP oMenu AT aRect[ 3 ] + 1, aRect[ 2 ] OF  aBtn

      RETURN NIL



// dovrebbe visualizzare il numero della poltrona

 FUNCTION OCCUPARE(cpoltrona,lnew)

   Local oDlg


       nmsgbox(cpoltrona)


return nil



Non ti curare della Tsbutton ho messo i comandi per un bottone semplice

Ho compilato e visualizza i bottoni semplici
Vorrei inviare per ogni bottone un menu popup il quale poi inviasse ad una funzione di inserimento ovviamente passando una variabile : il numero del bottone.
Best Regards, Saludos

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

Post by Enrico Maria Giordano »

Eccoti un esempio funzionante. Spero di aver capito bene cosa ti serviva:

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oWnd

    LOCAL aBtn := {}

    LOCAL n := 1

    LOCAL i, j

    DEFINE WINDOW oWnd

    FOR i = 1 TO 3
        FOR j = 1 TO 3
            AADD( aBtn, MAKEBUTTON( i * 3, j * 9, n++ ) )
        NEXT
    NEXT

    ACTIVATE WINDOW oWnd

    RETURN NIL


STATIC FUNCTION MAKEBUTTON( nRow, nCol, n )

    LOCAL oBtn

    @ nRow, nCol BUTTON oBtn PROMPT "Test";
                 SIZE 50, 50;
                 ACTION MAKEMENU( oBtn, n )

    RETURN oBtn


STATIC FUNCTION MAKEMENU( oBtn, n )

    LOCAL oMenu

    MENU oMenu POPUP
        MENUITEM "Button number?" ACTION MSGINFO( n )
    ENDMENU

    ACTIVATE MENU oMenu AT 0, 0 OF oBtn

    RETURN NIL
EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

si qualcosa del genere ma io devo usare un archivio per vedere se quella poltrona è occupata . nella creazione dei bottoni devo fare già questo controllo ovvero devo mettere un bottone con il disegnino rosso se è occupato o verde se è libera ( la poltrona)
vabbè adesso provo ...
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

con la classe sbutton se uso sbgroup riesco a farlo benissimo se uso un singolo tsbutton non riesco a farlo non so se hai presente la tsbutton ..
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

non ci sono riuscito
mi da sempre lo stessso errore
magari lo carica la funzione del menu ma poi non lo crea e non si tira dietro neanche l'unica variabile che a me serve cioè il numero della poltrona.
io ho usato i due cicli for net per simulare le passerelle tra le sedie ( dove ovviamente passano le maschere) altrimenti non potrei dividerle per settori nella pianta organica.
Pensavo fosse piu' facile ...
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

forse ho risolto.... grazie anche e sopratutto a mr Gale....
Best Regards, Saludos

Falconi Silvio
Post Reply