Click in CheckBrowse to Select/Unselect

This forum is for eXpress++ general support.
Message
Author
User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Click in CheckBrowse to Select/Unselect

#11 Post by Eugene Lutsenko »

Jimmy!

I am trying to do everything I need "simple". Maybe not as beautiful as could be. But everything well works

User avatar
rdonnay
Site Admin
Posts: 4775
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Click in CheckBrowse to Select/Unselect

#12 Post by rdonnay »

Here is a program that has a check column (using a database)

Code: Select all

#INCLUDE "dcdialog.CH"
#INCLUDE "dcbitmap.CH"

FUNCTION Main

LOCAL GetList[0], oBrowse, GetOptions

DC_LoadRdds()

USE CUSTOMER INDEX CUSTOMER VIA 'FOXCDX'

@ 0,0 DCBROWSE oBrowse ALIAS 'customer' SIZE 80,12 ;
      PRESENTATION DC_BrowPres() FIT

DCBROWSECOL DATA {|x|x:=CUSTOMER->tag, ;
      IIF(x,BITMAP_CHECKBOX_CHECKED_S,BITMAP_CHECKBOX_UNCHECKED_S)} ;
      PARENT oBrowse HEADER 'Sel' WIDTH 1 ;
      TYPE XBPCOL_TYPE_BITMAP ;
      EVAL {|oB|oB:dataArea:lbClick := ;
        {|a,b,o|IIF(oBrowse:colPos=1, ;
                (CUSTOMER->(dbRLock()), ;
                 CUSTOMER->tag:=!CUSTOMER->tag, ;
                 CUSTOMER->(dbRUnlock()), ;
                 oBrowse:refreshCurrent()),nil)}}

DCBROWSECOL FIELD CUSTOMER->bill_name PARENT oBrowse HEADER 'Name' WIDTH 20
DCBROWSECOL FIELD CUSTOMER->bill_strt PARENT oBrowse HEADER 'Address' WIDTH 20
DCBROWSECOL FIELD CUSTOMER->bill_city PARENT oBrowse HEADER 'City' WIDTH 20

DCGETOPTIONS AUTORESIZE

DCREAD GUI FIT ADDBUTTONS MODAL ;
     OPTIONS GetOptions ;
     TITLE 'Click in CheckBox to Select/Unselect'

RETURN
Attachments
checkbrowse.zip
(336.64 KiB) Downloaded 823 times
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Click in CheckBrowse to Select/Unselect

#13 Post by Eugene Lutsenko »

Thank you so much, Roger!

I will use! Is there absolutely a similar approach, only radio?

PS
Now found it: c:\exp20\Samples\BUTTONXP\Buttpicker.prg
It was for me as a diamond. And how many more jewels you can find Roger, if you search well?

User avatar
cobasystems
Posts: 15
Joined: Wed Nov 12, 2014 4:44 pm

Re: Click in CheckBrowse to Select/Unselect

#14 Post by cobasystems »

Thank you so much, Roger!

User avatar
rdonnay
Site Admin
Posts: 4775
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Click in CheckBrowse to Select/Unselect

#15 Post by rdonnay »

Is there absolutely a similar approach, only radio?
This is similar but different.
It uses the right mouse button to popup a dialog of radio button selections.

Code: Select all

#INCLUDE "dcdialog.CH"

FUNCTION Main

LOCAL GetList[0], oBrowse, GetOptions

DC_LoadRdds()

USE CUSTOMER INDEX CUSTOMER VIA 'FOXCDX'

@ 0,0 DCBROWSE oBrowse ALIAS 'customer' SIZE 80,12 ;
      PRESENTATION DC_BrowPres() FIT RBSELECT

DCBROWSECOL DATA {|x|GetStatus(CUSTOMER->status)} ;
      PARENT oBrowse HEADER 'Status' WIDTH 10 ;
      EVAL {|oB|oB:dataArea:rbClick := ;
        {|a,b,o|IIF(oBrowse:colPos=1,SetStatus(CUSTOMER->status,oBrowse),nil)}}

DCBROWSECOL FIELD CUSTOMER->bill_name PARENT oBrowse HEADER 'Name' WIDTH 20
DCBROWSECOL FIELD CUSTOMER->bill_strt PARENT oBrowse HEADER 'Address' WIDTH 20
DCBROWSECOL FIELD CUSTOMER->bill_city PARENT oBrowse HEADER 'City' WIDTH 20

DCGETOPTIONS AUTORESIZE

DCREAD GUI FIT ADDBUTTONS MODAL SETAPPWINDOW ;
     OPTIONS GetOptions ;
     TITLE 'Click in Column 1 to Change Status'

RETURN nil

* ---------

PROC appsys ; RETURN

* ---------

STATIC FUNCTION GetStatus( nStatus, aStatus )

LOCAL cStatus

IF nStatus == 0
  nStatus := 1
ENDIF

aStatus := { 'Unknown', ;
             'Very Nice', ;
             'Belligerent', ;
             'Cantankerous', ;
             'Insulent', ;
             'Uninformed' }

IF nStatus > 0 .AND. nStatus <= Len(aStatus)
  cStatus := aStatus[nStatus]
ENDIF

RETURN cStatus

* ---------

STATIC FUNCTION SetStatus( nStatus, oBrowse )

LOCAL aStatus, lStatus, GetList[0], GetOptions, i

GetStatus( @nStatus, @aStatus )

FOR i := 1 TO Len(aStatus)
  @ i,1 DCRADIO nStatus VALUE i PROMPT aStatus[i] ;
    ACTION {|o|o:getData(),DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
NEXT

DCGETOPTIONS ORIGIN XBPDLG_ORIGIN_MOUSE

DCREAD GUI FIT TITLE 'Status' MODAL TO lStatus OPTIONS GetOptions

IF lStatus
  CUSTOMER->(dbRLock())
  CUSTOMER->status := nStatus
  CUSTOMER->(dbRUnlock())
  oBrowse:refreshCurrent()
ENDIF

RETURN nStatus
Attachments
radiobrowse.zip
(7.47 KiB) Downloaded 850 times
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Click in CheckBrowse to Select/Unselect

#16 Post by Eugene Lutsenko »

Forgive me, Roger, for my bad English (not even mine, but automated).

Now you gave an example that allows you to replace the input field by selecting from a list. It is a valuable.

But unfortunately I had something else in mind. In the beginning of the topic you brought a perfectly working example of selecting many entries. When I said radio, I meant instead of the many entries, just mark one. When we celebrate a lot of records, the mark of another does not remove the previous marker. And when radio, if say one or the other marked, the mark is removed.

I thought it best to tell you honestly, than to leave in misguidance. Of course to blame myself, so can't really do English to explain what I mean.

User avatar
rdonnay
Site Admin
Posts: 4775
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Click in CheckBrowse to Select/Unselect

#17 Post by rdonnay »

I'm sorry, but I don't understand what it is that you want.
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Click in CheckBrowse to Select/Unselect

#18 Post by Eugene Lutsenko »

Hey, Roger!!!

Below in the 1st column of the table display the database instead of squares with birds we have seen in the circles. So we can mark the record by clicking on the circle. Then inside the circle instead of the white to become black. If the thus selected any entry, then it is the allocation should have. Then inside the circle is black will become white. The difference between what You did and what I asked is the same as between DCCHECKBOX and DCRADIO. But all this with records databases, not with variables in memory.

PS the Picture I made in PhotoShop. Programmatically I can't do this. Only you can.
Attachments
Без имени-2.jpg
Без имени-2.jpg (86.15 KiB) Viewed 13699 times

User avatar
rdonnay
Site Admin
Posts: 4775
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Click in CheckBrowse to Select/Unselect

#19 Post by rdonnay »

If I understand you correctly, you want the "look" of a radio button but the "functionality" of a check box.
The eXpress train is coming - and it has more cars.

Wolfgang Ciriack
Posts: 481
Joined: Wed Jan 27, 2010 10:25 pm
Location: Berlin Germany

Re: Click in CheckBrowse to Select/Unselect

#20 Post by Wolfgang Ciriack »

Here is an example of selecting only one (multisel:=.F.) or multiple (multisel=.T.).
You do not need a logical field in your database, i use an array for the selected record numbers.
if you create bitmaps for the radiobutton selected and unselected, you can show them instead of BMP_CHECKED/BMP_UNCHECKED depending on the var multisel.

Code: Select all

FUNCTION Main

LOCAL GetList[0], oBrowse, GetOptions
local aRecs:={}, multisel:=.F., p

DC_LoadRdds()

USE CUSTOMER INDEX CUSTOMER VIA 'FOXCDX'

@ 0,0 DCBROWSE oBrowse ALIAS 'customer' SIZE 80,12 ;
      PRESENTATION DC_BrowPres() FIT ;


DCBROWSECOL DATA {|| iif(AScan(aRecs,recno())>0, BMP_CHECKED, BMP_UNCHECKED) } ;
            HEADER "Sel" PARENT oBrowse WIDTH 2 ;
            TYPE XBPCOL_TYPE_BITMAP ;
            PROTECT {|| .T.} ;
            ALIGN XBPALIGN_HCENTER+XBPALIGN_VCENTER ;
            EVAL {|oB|oB:dataArea:lbClick := {|a,b,o,w| iif( oBrowse:colPos=1, ;
               ( p:=Ascan(aRecs, recno()), iif(p>0, ARemove(aRecs,p), (iif(!multisel, ASize(aRecs,0), nil), AAdd(aRecs, recno()))), oBrowse:refreshAll()),nil)}}

DCBROWSECOL FIELD CUSTOMER->bill_name PARENT oBrowse HEADER 'Name' WIDTH 20
DCBROWSECOL FIELD CUSTOMER->bill_strt PARENT oBrowse HEADER 'Address' WIDTH 20
DCBROWSECOL FIELD CUSTOMER->bill_city PARENT oBrowse HEADER 'City' WIDTH 20

DCGETOPTIONS AUTORESIZE

DCREAD GUI FIT ADDBUTTONS MODAL ;
     OPTIONS GetOptions ;
     TITLE 'Click in CheckBox to Select/Unselect'

RETURN aRecs
_______________________
Best Regards
Wolfgang

Post Reply