Page 1 of 2

how create dynamic's CHECKBOX

Posted: Fri Jul 03, 2020 12:21 pm
by dragancesu
How from DBF from attachment create this code diynamicly?

Code: Select all

    @ 30, 20 CHECKBOX qsearch_1 CAPTION "Argentina (1) " WIDTH 150 HEIGHT 25 
    @ 52, 20 CHECKBOX qsearch_2 CAPTION "Australia (1) " WIDTH 150 HEIGHT 25 
    @ 74, 20 CHECKBOX qsearch_3 CAPTION "Austria (1) " WIDTH 150 HEIGHT 25 
    @ 96, 20 CHECKBOX qsearch_4 CAPTION "Belgium (1) " WIDTH 150 HEIGHT 25 
    @ 118, 20 CHECKBOX qsearch_5 CAPTION "Brazil (5) " WIDTH 150 HEIGHT 25 
    @ 140, 20 CHECKBOX qsearch_6 CAPTION "Canada (8) " WIDTH 150 HEIGHT 25 
    @ 162, 20 CHECKBOX qsearch_7 CAPTION "Chile (1) " WIDTH 150 HEIGHT 25 
    @ 184, 20 CHECKBOX qsearch_8 CAPTION "Czech Republic (2) " WIDTH 150 HEIGHT 25 
    @ 206, 20 CHECKBOX qsearch_9 CAPTION "Denmark (1) " WIDTH 150 HEIGHT 25 
    @ 228, 20 CHECKBOX qsearch_10 CAPTION "Finland (1) " WIDTH 150 HEIGHT 25 
    @ 250, 20 CHECKBOX qsearch_11 CAPTION "France (5) " WIDTH 150 HEIGHT 25 
    @ 272, 20 CHECKBOX qsearch_12 CAPTION "Germany (4) " WIDTH 150 HEIGHT 25 
    @ 294, 20 CHECKBOX qsearch_13 CAPTION "Hungary (1) " WIDTH 150 HEIGHT 25 
    @ 316, 20 CHECKBOX qsearch_14 CAPTION "India (2) " WIDTH 150 HEIGHT 25 
    @ 338, 20 CHECKBOX qsearch_15 CAPTION "Ireland (1) " WIDTH 150 HEIGHT 25 
    @ 360, 20 CHECKBOX qsearch_16 CAPTION "Italy (1) " WIDTH 150 HEIGHT 25 
    @ 382, 20 CHECKBOX qsearch_17 CAPTION "Netherlands (1) " WIDTH 150 HEIGHT 25 
    @ 404, 20 CHECKBOX qsearch_18 CAPTION "Norway (1) " WIDTH 150 HEIGHT 25 
    @ 426, 20 CHECKBOX qsearch_19 CAPTION "Poland (1) " WIDTH 150 HEIGHT 25 
    @ 448, 20 CHECKBOX qsearch_20 CAPTION "Portugal (2) " WIDTH 150 HEIGHT 25 
    @ 470, 20 CHECKBOX qsearch_21 CAPTION "Spain (1) " WIDTH 150 HEIGHT 25 
    @ 492, 20 CHECKBOX qsearch_22 CAPTION "Sweden (1) " WIDTH 150 HEIGHT 25 
    @ 514, 20 CHECKBOX qsearch_23 CAPTION "USA (13) " WIDTH 150 HEIGHT 25 
    @ 536, 20 CHECKBOX qsearch_24 CAPTION "United Kingdom (3) " WIDTH 150 HEIGHT 25 
	
Thanks

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 03, 2020 1:00 pm
by edk

Code: Select all

#include "hmg.ch"

Function Main
	Local cCheckBoxName, cCaption
	Local nRow := 30

	USE qsearch
	INDEX ON row TO qsearch_row

	DEFINE WINDOW Win_1 ;
		ROW 0 ;
		COL 0 ;
		WIDTH 400 ;
		HEIGHT 600 ;
		TITLE "how create dynamic's CHECKBOX" 

		DO WHILE !EOF()
			cCheckBoxName := Lower ( Alias() ) + "_" + Alltrim (Str( qsearch->row ))
			cCaption := Alltrim( qsearch->search ) + " (" + Alltrim (Str( qsearch->count )) + ") "
			@ nRow, 20 CHECKBOX &(cCheckBoxName) CAPTION cCaption WIDTH 150 HEIGHT 25
			nRow += 22
			SKIP
		ENDDO

	END WINDOW

	CLOSE DATA

	Win_1.Center

	Activate Window Win_1

Return

Re: how create dynamic's CHECKBOX

Posted: Thu Jul 09, 2020 12:17 pm
by dragancesu
Thank you edk, but I need more help

source in attachment, and here what is my idea

main program is edit_1, simple form for insert, edit, delete record
click on head, in this case COUNTRY you see unique value from field (like SQL DISTINCT) and count it

then (but not work) user select one or more checkbox and click on OK be create filter (function for this is in test.prg)

qsearch.prg create test.prg
this is maybe complicated, generate program which generate dynamic function for it, or on other way, I don't idea now

Thank for help

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 10, 2020 1:55 am
by jorge_riv
Hola dragancesu
He modificado un par de lineas en los programas:
open_dbf.prg
open_ntx.prg
use_dbf.prg
test.prg
De esa forma funciona bien, envio fuentes y exe
Abrazo

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 10, 2020 2:19 am
by jorge_riv
Alli esta el ZIP

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 10, 2020 7:29 am
by serge_girard
Dragan,

First:

Code: Select all

IF !IsWIndowActive (window_1) 
   use _qsearch index _qsearch new
   zap
   ...etc
    select _qsearch 
   close 
   END WINDOW 
   ACTIVATE WINDOW window_1 
ELSE   
   window_1.SetFocus  
ENDIF
This solve your first problembut then a new error comes up: Variable does not exist: CSEARCH_1

Serge

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 10, 2020 7:48 am
by serge_girard
Secondly:

Code: Select all

FUNCTION do_filter_5()

   _qry_exp = ""
   CMD := " "
   TEL := 0

   _nRow = 30
   USE _qsearch INDEX _qsearch NEW
   dbgotop()
   DO WHILE .NOT. eof()
      cValue = alltrim(search)
      cCheckBoxName = "cSearch_" + alltrim(str(row))
      cb := getProperty('window_1', cCheckBoxName, 'Value' )

      IF cb 
         IF TEL > 0
            CMD := CMD + ' .OR. '
         ENDIF
         TEL++
         X := _qsearch->search
         CMD := CMD + ' COUNTRY =  "' + ALLTRIM(X) + '" '

         ? CMD
      ENDIF 
      DBSKIP()
   ENDDO

   SELECT customer
   SET FILTER TO &CMD
   DBGOTOP()
   
   *Win_1.Browse_1.Refresh      // refresh browse 

RETURN
Then new error comes up! 1 Workarea not in use: ORDLISTADD

Serge
Serge

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 10, 2020 7:50 am
by serge_girard
This is also cleaner:

Code: Select all

   DEFINE WINDOW window_1 ;
      AT 5, 500 ; 
      WIDTH 200 ; 
      HEIGHT 20 + (_row * 25) ; 
      MODAL ;

Serge

Re: how create dynamic's CHECKBOX

Posted: Fri Jul 10, 2020 2:01 pm
by edk
In my opinion, the grid with checkboxes looks nicer than the checkboxes themselves for this solution ;)
selcountry.gif
selcountry.gif (502.47 KiB) Viewed 3251 times

Re: how create dynamic's CHECKBOX

Posted: Sat Jul 11, 2020 9:16 am
by bpd2000
edk wrote: Fri Jul 10, 2020 2:01 pm In my opinion, the grid with checkboxes looks nicer than the checkboxes themselves for this solution ;)
ezgif.com-optimize.gif
fantastic