quale lausare ?

Moderator: Enrico Maria Giordano

Post Reply
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

quale lausare ?

Post by Piscicelli Zingoni »

Salve,
Ho l'esigenza di creare una 'pseudo browse' che abbia queste caratteristiche:
1) possibilita' di colorare ogni cella con colore diverso a secondo una condizione
2) popup diverso per ogni cella ( a secondo condizione)
3) inserire bottoni logici e/o bitmap

Chiedo troppo?
Ho provato ad utilizzare:
----------------------
@10,10 Browse ....

ADD COLUMN TO BROWSE ..... HEADER .. DATA ECC
ADD COLUMN TO BROWSE ..... HEADER .. DATA ECC
------------

Ma ho visto che non mi permette di inserire ne bmp ne bottoni

Cosa posso utilizzare in alternativa?
Si accetta qualasiasi dritta
Grazie

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

Re: quale lausare ?

Post by Enrico Maria Giordano »

La TCBrowse consente di visualizzare bitmaps e fa anche le altre cose che ti servono.

EMG
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Grazie Enrico per l'esempio che mi hai mandato e che allego.
Voelvo sapere se esiste da qualche parte la descrizione di tutti i parametri che si possono inserire nel comando ADD COLUMN ...

Tks

Piscicelli/Zingoni



Code: Select all

*** ESEMPIO di EMG*******************

#include "Fivewin.ch"
#include "Tcbrowse.ch"


FUNCTION MAIN()

    LOCAL oDlg, oBrw, oCol

    LOCAL hBmp1 := READBITMAP( 0, "\fwharbour\bitmaps\checkon.bmp" )
    LOCAL hBmp2 := READBITMAP( 0, "\fwharbour\bitmaps\checkoff.bmp" )

    USE TEST

    DEFINE DIALOG oDlg SIZE 400, 300

    @ 0, 0 BROWSE oBrw

    ADD COLUMN TO oBrw;
               DATA TEST -> last;
               HEADER "LAST"

    ADD COLUMN TO oBrw;
               DATA TEST -> first;
               HEADER "FIRST"

    ADD COLUMN TO oBrw;
               DATA IF( TEST -> last = "S", hBmp1, hBmp2 );
               BITMAP

    oBrw:lCellStyle = .T.
    oBrw:lMChange = .F.

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

    CLOSE

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

Post by Enrico Maria Giordano »

Piscicelli Zingoni wrote:Voelvo sapere se esiste da qualche parte la descrizione di tutti i parametri che si possono inserire nel comando ADD COLUMN ...
Nella documentazione oppure, meglio, nel file tcbrowse.ch.

EMG
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Ovvviamente.
Mi riferivo ad esempi magari già realizzati tipo per i report nei sample.
Vabbbbbe, ci provo.
Tks 10000 cmq.

Piscicelli/Zingoni
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Proprio non mi viene:
Volevo sapere come faccio a conoscere su quale colonna (non riga) il cliente sta cliccando?

Ho provato a guadare dentro tcbrowse.prg e ho fatto molti test senza successo.

La solta anima gentile che mi da una mano ?

Grazie
Piscicelli/Zingoni
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Code: Select all

#include "Fivewin.ch"
#include "Tcbrowse.ch"


FUNCTION MAIN()

    LOCAL oDlg, oBrw, oCol

    LOCAL hBmp1 := READBITMAP( 0, "\fwharbour\bitmaps\checkon.bmp" )
    LOCAL hBmp2 := READBITMAP( 0, "\fwharbour\bitmaps\checkoff.bmp" )

    USE TEST

    DEFINE DIALOG oDlg SIZE 400, 300

    @ 0, 0 BROWSE oBrw;
           ON CLICK MSGINFO( oBrw:nColAct )

    ADD COLUMN TO oBrw;
               DATA TEST -> last;
               HEADER "LAST"

    ADD COLUMN TO oBrw;
               DATA TEST -> first;
               HEADER "FIRST"

    ADD COLUMN TO oBrw;
               DATA IF( TEST -> last = "S", hBmp1, hBmp2 );
               BITMAP

    oBrw:lCellStyle = .T.
    oBrw:lMChange = .F.

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

    CLOSE

    RETURN NIL
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Pare impossibile ma ho trovato cosa cercavo.
Volevo sapere la colonna su cui ero posizionato e questa e' l'istruzione:

oBrw:nColAct

sfuttando l'istruzione:
oBrw:bLClicked = { | nRow, nCol | mia_funzione( nRow, nCol, oBrw, oDlg ) }

La mia nuova domanda e':
1) per sapere il nColAt mi devo spostare con il mouse o freccie sulla relativa cella ma se clicco con tasto destro su un'altra cella: come faccio per sapere su che riga/colonna sono ?

2) e' possibile avere qualcosa tipo: oBrw:bLClicked:Colonna ={ ... }
ossia x riga o colonna ?

Grazie
Pisciceli /Zingoni
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Piscicelli Zingoni wrote:Pare impossibile ma ho trovato cosa cercavo.
Volevo sapere la colonna su cui ero posizionato e questa e' l'istruzione:

oBrw:nColAct
Evidentemente ti sei rifiutato di esaminare il mio esempio che conteneva, appunto, quell'istruzione. Come mai?
Piscicelli Zingoni wrote:La mia nuova domanda e':
1) per sapere il nColAt mi devo spostare con il mouse o freccie sulla relativa cella ma se clicco con tasto destro su un'altra cella: come faccio per sapere su che riga/colonna sono ?
Eccoti il solito esempio, ancora modificato. E speriamo che stavolta tu lo prenda in considerazione:

Code: Select all

#include "Fivewin.ch"
#include "Tcbrowse.ch"


FUNCTION MAIN()

    LOCAL oDlg, oBrw, oCol

    LOCAL hBmp1 := READBITMAP( 0, "\fwharbour\bitmaps\checkon.bmp" )
    LOCAL hBmp2 := READBITMAP( 0, "\fwharbour\bitmaps\checkoff.bmp" )

    USE TEST

    DEFINE DIALOG oDlg SIZE 400, 300

    @ 0, 0 BROWSE oBrw;
           ON CLICK MSGINFO( oBrw:nColAct );
           ON RIGHT CLICK ( MSGINFO( NWROW( oBrw:hWnd, oBrw:hDC, nRow, IF( oBrw:oFont != nil, oBrw:oFont:hFont, 0 ) ) ),;
                            MSGINFO( oBrw:nAtCol( nCol ) ) )

    ADD COLUMN TO oBrw;
               DATA TEST -> last;
               HEADER "LAST"

    ADD COLUMN TO oBrw;
               DATA TEST -> first;
               HEADER "FIRST"

    ADD COLUMN TO oBrw;
               DATA IF( TEST -> last = "S", hBmp1, hBmp2 );
               BITMAP

    oBrw:lCellStyle = .T.
    oBrw:lMChange = .F.

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

    CLOSE

    RETURN NIL
Piscicelli Zingoni wrote:2) e' possibile avere qualcosa tipo: oBrw:bLClicked:Colonna ={ ... }
ossia x riga o colonna ?


Non che io sappia.

EMG
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

riesco almeno a sapere la riga/colonna dove mi trovo sfruttando l'struzione:
oBrw:bRClicked = { | nRow, nCol | ShowPopup( nRow, nCol, oBrw ) } ?

Grazie
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Oooops!!
Non so perche' ma non avevo visto la differenza tra i vari esempi.
Scusa ci guardo subito
Ciao
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Grande Enrico, chiaramente funziona bene.......l'ho modificata e volevo che cliccando a destra con il mouse mi si evidenziasse tale cella, a tale scopo passo i parametri (x,y) ad una mia funzione e riesco a settare con :

function miafunc
param _y,_x,oBrw
oBrw:nColAct:=_x && e funziona nel senso che si evidenzia la cella X
oBrw:refresh()

* non riesco pero' ad evidenziare la cella Y
* ho provato con
oBrw:vsetpos(_y)
oBrw:refresh() && ma non succede niente
......

Come faccio per evidenziare la cella dove ho fatto RIGHT CLICK ??

Grazie
Piscicelli/Zingoni
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Code: Select all

#include "Fivewin.ch"
#include "Tcbrowse.ch"


FUNCTION MAIN()

    LOCAL oDlg, oBrw, oCol

    LOCAL hBmp1 := READBITMAP( 0, "\fwharbour\bitmaps\checkon.bmp" )
    LOCAL hBmp2 := READBITMAP( 0, "\fwharbour\bitmaps\checkoff.bmp" )

    USE TEST

    DEFINE DIALOG oDlg SIZE 400, 300

    @ 0, 0 BROWSE oBrw;
           ON RIGHT CLICK oBrw:LButtonDown( nRow, nCol, nFlags )

//           ON CLICK MSGINFO( oBrw:nColAct );
//           ON RIGHT CLICK ( MSGINFO( NWROW( oBrw:hWnd, oBrw:hDC, nRow, IF( oBrw:oFont != nil, oBrw:oFont:hFont, 0 ) ) ),;
//                            MSGINFO( oBrw:nAtCol( nCol ) ) )

    ADD COLUMN TO oBrw;
               DATA TEST -> last;
               HEADER "LAST"

    ADD COLUMN TO oBrw;
               DATA TEST -> first;
               HEADER "FIRST"

    ADD COLUMN TO oBrw;
               DATA IF( TEST -> last = "S", hBmp1, hBmp2 );
               BITMAP

    oBrw:lCellStyle = .T.
    oBrw:lMChange = .F.

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

    CLOSE

    RETURN NIL
EMG
Piscicelli Zingoni
Posts: 76
Joined: Wed Oct 12, 2005 5:52 pm
Location: Milan,Italy

Post by Piscicelli Zingoni »

Incredibile semplicita'

Non sparire per i prossimi 2000 anni

Grazie
Post Reply