FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index All products support record selezionati
Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
record selezionati
Posted: Tue Apr 10, 2007 11:34 PM
usando xbrowse posso selezionare i record

STATIC FUNCTION MultiSelect( oWnd )

   local oChild, oBrw

   DEFINE WINDOW oChild TITLE "MultiSelect browse" MDICHILD OF oWnd

   oBrw := TXBrowse():New( oChild )
   oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROWMS

   oBrw:SetRDD()

   oBrw:CreateFromCode()

   oChild:oClient := oBrw

   ACTIVATE WINDOW oChild ON INIT oBrw:SetFocus()

RETURN NIL




se volessi stampare solo irecord selezionati come potrei fare ?


il problema sussiste solo se uso xbrowse con wbrowse non ho nessun problema perchè ho associato al tasto f5 la selezione del record che aggiungo aadd in un array

Per motivi solo di estetica preferisco usare xbrowse però non volevo rinunciare alla selezione del record per le stampe
Best Regards, Saludos



Falconi Silvio
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Re: record selezionati
Posted: Wed Apr 11, 2007 07:05 AM

oBrw:aSelected che ti ho già segnalato non funziona?

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
record selezionati
Posted: Wed Apr 11, 2007 11:18 PM
è solo che io con wbrowse premendo f5 selezionavo un record ed inserivo nel browse un bmp e qui niente di nuovo



questa funziona inseriva il bmp nel browse ( cosa che in xbrowse non funziona)
cBmp,cCan sono variabili per caricare i resource

cBmp:=LoadBitMap(GetResources(),"C_Pal")
cCan:=LoadBitMap(GetResources(),"C_Roj")

 STAT FUNC Ds_Mar(cBmp,cCan)        // Marca
   LOCAL cRet:=""
   cRet:=IF((oDCli)->Status="B",cCan,cRet)
   cRet:=IF(AScan(oT:aSel,(oDCli)->NumCli)<>0,cBmp,cRet)
RETURN (cRet)



quando premevo f5 chiamavo questa funzione :

STAT FUNC Seleziona()     // Seleziona registro
   LOCAL x:=AScan(oT:aSel,(oDCli)->NumCli)
   IF x<>0
      ADel(oT:aSel,x)
      ASize(oT:aSel,Len(oT:aSel)-1)
    ELSE
      AAdd(oT:aSel,(oDCli)->NumCli)
   ENDIF
   oApp():oGrid:SetFocus()
RETURN (NIL)


e poi nella stampa usavo la variabili ot:asel per esempio

 CursorWait()
            (oDCli)->(DbGoTop())
            DO WHILE !(oDCli)->(EoF())
               IF (nOpt=1 .AND. AScan(oT:aSel,(oDCli)->NumCli)<>0) .OR. ;
                  (nOpt=2 .AND. (oDCli)->TipCli=cTip)
                  oPrn:CmSay(nRow, 2.0,(oDCli)->RazSoc,oFn1, 8.7)
                  oPrn:CmSay(nRow,11.0,(oDCli)->NumCli,oFn1,,,,2)
                  oPrn:CmSay(nRow,12.0,(oDCli)->EncCom,oFn1)
                  oPrn:CmSay(nRow,17.5,(oDCli)->TelFi1,oFn1)
                  nCli++
                  nRow+=0.4
....



non so se hai capito ...
se uso ogrid:aselected dovrebbe funzionare ma in realtà no
Best Regards, Saludos



Falconi Silvio
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
record selezionati
Posted: Thu Apr 12, 2007 07:09 AM

Con TXBrowse la gestione della selezione è automatica.

EMG

Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
record selezionati
Posted: Thu Apr 12, 2007 10:02 PM
quindi secondo come faccio per non riscrivere tutto ?
cio' che chiamo asel ( array di record selezionati) xbrowse in automatico lo chiama aselected potrebbe funzionare ?

be ho provato ma non mi ha stampato niente ( selezionando solo due record)

ecco il codice :

STAT FUNC Relacion(n)
   LOCAL oPrn, oFn1, oFn2, oFn3,  cSTit
   LOCAL aDes, aHas, nHor,nRow,cForm
   LOCAL nRec ,lPrv:=.t.

     cSTit:="ELENCO GENERALE SOCI  AL "+cf(Date())+"  "+ n
      cSTit:=Alltrim(cSTit)
      nRec:=(oDCli)->(Recno())
      oPrn:=PrintBegin("Elenco Soci...",.F.,lPrv,,.T.)
         DEFINE FONT oFn1 NAME cFont SIZE 0,- 8      OF oPrn
         DEFINE FONT oFn2 NAME cFont SIZE 0,- 8 BOLD OF oPrn
         DEFINE FONT oFn3 NAME cFont SIZE 0,-11 BOLD OF oPrn
         cForm:=Get_Form("101")
        * oPrn:SetPortrait() //verticale
          oPrn:SetLandscape() //verticale
         nHor:=oPrn:nHorzSize()
         nVer:=oPrn:nVertSize()
         nRow:=4.9
         PageBegin()
              CursorWait()
              Title_WIN(oPrn,nHor,nVer,oFn1,oFn2,oFn3,cSTit,1,.T.,cForm)
            oPrn:CmSay(4.2, 1.5,"NUM",oFn1,,,,2)
            oPrn:CmSay(4.2, 2.4,"A",oFn1,,,,2)
            oPrn:CmSay(4.2, 2.7,"T",oFn1,,,,2)
            oPrn:CmSay(4.2, 3.0,"NOMINATIVO",oFn1)
            oPrn:CmSay(4.2, 7.0,"TESSERA",oFn1)
            oPrn:CmSay(4.2, 8.5,"NASCITA",oFn1)
            oPrn:CmSay(4.2,10.6,"TELEFONI",oFn1)
            oPrn:CmSay(4.2,15.5,"INDIRIZZO",oFn1)
            oPrn:CmSay(4.2,20.5,"LOCALITA'",oFn1)
            oPrn:CmSay(4.2,22.5,"CAP",oFn1)
            oPrn:CmSay(4.2,23.5,"PROV.",oFn1)
            oPrn:CmSay(4.2, 24.5,"CARICA",oFn1)
            oPrn:CmSay(4.2, 26.0,"TAGLIA",oFn1)
            oPrn:CmSay(4.2, 28.0,"SEX",oFn1)
            nCli:=0
            nOpt=1
            CursorWait()
            (oDCli)->(DbGoTop())
            DO WHILE !(oDCli)->(EoF())

               IF (nOpt=1 .AND. AScan(oApp:oGrid:aSelected,(oDCli)->NumCli)<>0)




               oPrn:CmSay(nRow, 1.5,(oDCli)->NumCli,oFn1,,,,2)
               oPrn:CmSay(nRow, 2.4,DaiAtt((oDCli)->Attivita),oFn1,,,,2)
               oPrn:CmSay(nRow, 2.8,DaiTipo((oDCli)->Tipo),oFn1,,,,2)
               oPrn:CmSay(nRow, 3.0,(oDCli)->Nomeintero,oFn1, 8.7)
               oPrn:CmSay(nRow,7.0,(oDCli)->Tessera,oFn1)
               oPrn:CmSay(nRow,8.5,cf((oDCli)->Nascita),oFn1)
               oPrn:CmSay(nRow,10.6,(oDCli)->Tel1,oFn1)
               oPrn:CmSay(nRow,12.6,(oDCli)->Tel2,oFn1)
               oPrn:CmSay(nRow,15.5,(oDCli)->Indirizzo,oFn1)
               oPrn:CmSay(nRow,20.5,(oDCli)->Localita,oFn1)
                 oPrn:CmSay(nRow,22.5,(oDCli)->Cap,oFn1)
                 oPrn:CmSay(nRow,23.5,(oDCli)->Provincia,oFn1)
               oPrn:CmSay(nRow,24.5,(oDCli)->Carica,oFn1)
               oPrn:CmSay(nRow,26.0,(oDCli)->Taglia,oFn1)
               oPrn:CmSay(nRow,28.0,(oDCli)->Sesso,oFn1)
                  nCli++
                  nRow+=0.4
                  IF nRow>=25.5
                     PageEnd()
                     PageBegin()
        Title_WIN(oPrn,nHor,nVer,oFn1,oFn2,oFn3,cSTit,1,.F.,cForm)
            oPrn:CmSay(4.2, 2.0,"NUM",oFn1,,,,2)
            oPrn:CmSay(4.2, 2.7,"T",oFn1,,,,2)
            oPrn:CmSay(4.2, 3.0,"NOMINATIVO",oFn1)
            oPrn:CmSay(4.2, 7.0,"TESSERA",oFn1)
            oPrn:CmSay(4.2, 8.5,"NASCITA",oFn1)
            oPrn:CmSay(4.2,10.6,"TELEFONI",oFn1)
            oPrn:CmSay(4.2,15.5,"INDIRIZZO",oFn1)
            oPrn:CmSay(4.2,20.5,"LOCALITA'",oFn1)
            oPrn:CmSay(4.2,22.5,"CAP",oFn1)
            oPrn:CmSay(4.2,23.5,"PROV.",oFn1)
            oPrn:CmSay(4.2, 24.5,"CARICA",oFn1)
            oPrn:CmSay(4.2, 26.0,"TAGLIA",oFn1)
            oPrn:CmSay(4.2, 28.0,"SEX",oFn1)
                     nRow:=4.9
                  ENDIF
                 ENDIF
               (oDCli)->(DbSkip())
            ENDDO
            aDes:=oPrn:Cmtr2Pix(nRow+0.3, 1.0)
            aHas:=oPrn:Cmtr2Pix(nRow+0.3,29.0)
            oPrn:Line(aDes[1],aDes[2],aHas[1],aHas[2])
            nRow+=.5
            oPrn:CmSay(nRow,10.5, TRAN(nCli,"9999")+"  Socio(i) in archivio",oFn1,,,,2)
            aDes:=oPrn:Cmtr2Pix(nRow+0.4, 1.0)
            aHas:=oPrn:Cmtr2Pix(nRow+0.4,29.0)
            oPrn:Line(aDes[1],aDes[2],aHas[1],aHas[2])
             nRow+=.5
            oPrn:CmSay(nRow,15.5, " Legenda       - Tipo (3# colonna)  F = Fondatore  O = Ordinario  S = Sostenitore  A = altro       - Attivita' ( 2# colonna)   D = Docente  A = ATA   S = Alunno G = Genitore  E = Esterno ",oFn1,,,,2)

         PageEnd()
         oFn1:End(); oFn2:End(); oFn3:End()
      PrintEnd()
      (oDCli)->(DbGoTo(nRec))
     * oBCli:Refresh()
     RETURN (NIL)




la variabile n di Relacion(n)

mi serve per dare alla funzione l'indice corrente
Best Regards, Saludos



Falconi Silvio
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
record selezionati
Posted: Fri Apr 13, 2007 07:08 AM
#include "Fivewin.ch"
#include "XBrowse.ch"


FUNCTION MAIN()

    LOCAL oDlg, oBrw

    USE TEST

    DEFINE DIALOG oDlg;
           SIZE 800, 600

    oBrw = TXBrowse():New( oDlg )

    oBrw:SetRDD()

    oBrw:nMarqueeStyle = MARQSTYLE_HIGHLROWMS

    oBrw:bRClicked = { || WQOut( oBrw:aSelected ) }

    oBrw:CreateFromCode()

    ACTIVATE DIALOG oDlg;
             ON INIT oDlg:SetControl( oBrw );
             CENTER

    RETURN NIL


EMG
Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM
record selezionati
Posted: Sat Apr 14, 2007 12:06 AM

grazie forse ho risolto il problema .

Best Regards, Saludos



Falconi Silvio

Continue the discussion