Search  
Monday, December 09, 2019 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  list box cu che...
 list box cu check box
 
 6/21/2012 10:02:55 AM
User is offlinepbfox
110 posts
5th


list box cu check box
 (N/A)
ce este mai indicat (mai usor) de folosit un list box cu checkbox-uri sau doua list box-uri prima cu toate optiunile posibile si in a doua sa fie mutate cele selectate
 6/21/2012 11:26:44 AM
User is offlinecostin_mentor
657 posts
www.accessoft.ro
1st




Re: list box cu check box
 (N/A)
Ca si utilizator mi se pare mai usor de folosit. un list box cu checkbox-uri.
 6/21/2012 11:46:34 AM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania) Modified By Daniel Buduru  on 6/21/2012 10:47:06 AM)
Daca toate liniile listei sunt vizibile in fereastra, deci lista nu trebui derulata pentru a vedea toate optiunile, varianta cu o lista, dupa cum spune si Costin, e mai comoda.
Daca insa lista trebuie derulata pentru a vedea tot ce este selectat, e mai usor pentru utilizator sa vada doar ce este selectat, deci varianta cu doua liste.
Insa si asta are un dezavantaj, prima lista ocupa spatiu inutil in interfata dupa ce se face selectia.
Eu am ales o cale de mijloc: o singura lista, cu un cursor in rowsource, filtrat dupa inregistrarile selectate. La intrarea pe lista (list.gotfocus) se anuleaza filtrul si se pot vedea toate pozitiile, si cele selectate, si cele neselectate. La parasirea listei (list.lostfocus) se aplica filtrul pe cursor iar in lista apar doar liniile selectate.


Daniel Buduru
 6/21/2012 5:16:44 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
cum se pun checkbox in listbox?
 6/21/2012 8:12:26 PM
User is offlinecostin_mentor
657 posts
www.accessoft.ro
1st




Re: list box cu check box
 (N/A)
Intr-un listbox nu cred ca e posibil, dar intr-un grid sigur:
http://profox.ro/Forum/tabid/55/forumid/9/threadid/29157/scope/posts/Default.aspx
 6/22/2012 10:04:44 AM
User is offlinerobert_anisoiu
38 posts


Re: list box cu check box
 (N/A)
Decat sa te chinui sa pui checkbox-uri in grid mai bine faci selectia direct in grid. Cu un click pe linie selectezi/deselectezi linia respectiva, functie de cum a fost inainte de click. Liniile selectate le poti afisa cu alta culoare decat cele neselectate, fiind foarte usor de urmarit. Parerea mea este ca lucrezi mult mai bine si mai elegant cu un grid decat cu o lista.
 6/22/2012 11:33:48 AM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania) Modified By Daniel Buduru  on 6/22/2012 10:37:09 AM)
Subscriu la cele afirmate de Costin si de Robert: e mai simplu sa folosesti un grid si e si mai simplu sa schimbi culoarea liniilor selectate.

Pentru a raspunde totusi la intrebarea "cum pun un checkbox intr-un list?", vezi aici:
 http://support.microsoft.com/kb/157048
si aici:
http://www.tek-tips.com/faqs.cfm?fid=3911





Daniel Buduru
 6/22/2012 2:54:34 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
Am mers pe varianta cu grid-ul si am gasit inca un tutorial pentru asta: http://www.alvechurchdata.co.uk/foxgrid.htm
 6/22/2012 2:59:04 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
in grid cand selectez cu un click o linie, apare cursorul clipitor in continutul celulei selectate, la dublu click se coloreaza toata linia si cursorul dispare as putea pune acelasi efect de la dublu click si la click?
 6/22/2012 3:51:12 PM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania)
Grid.AllowCellSelection=.f.
Asta face ca gridul sa se comporte ca un list, nu se poate selecta o coloana, click si dublu click selecteaza intreaga linie.
Atentie, la click raspunde textbox-ul - sau ce alt control e setat ca si control curent in coloana.

Daniel Buduru
 6/22/2012 8:24:44 PM
User is offlineelian.dumitrescu
88 posts


Re: list box cu check box
 (N/A)
Incearca exemplul de mai jos....daca vrei musai checkbox-uri intr-un listbox !



PUBLIC oForm

oForm = CREATEOBJECT("clsListCheckBox")

oForm.VISIBLE = .T.

READ EVENTS

DEFINE CLASS clsListCheckBox AS FORM

TOP = 1
LEFT = 0
HEIGHT = 473
WIDTH = 287
DOCREATE = .T.
CAPTION = "Listbox With Checkboxes"
WINDOWSTATE = 0
NAME = "clsListCheckBox"
AlwaysOnTop = .T.
CheckIcon = HOME() + "Graphics\Icons\Misc\MISC15.ICO"
Uncheckicon = HOME() + "Graphics\Icons\Misc\MISC13.ICO"
SHOWWINDOW = 2

ADD OBJECT list1 AS LISTBOX WITH ;
HEIGHT = 408, ;
LEFT = 12, ;
SORTED = .T., ;
TOP = 48, ;
WIDTH = 264, ;
NAME = "List1", ;
ROWSOURCETYPE = 2, ;
ROWSOURCE = "ListCheck"

PROCEDURE LOAD
LOCAL nCount, nCount2, nWordLength, sItem, nUpper, nLower
nUpper = 90 &&ASCII
nLower = 65 &&ASCII
CREATE CURSOR ListCheck (MyEntry c(35), Checked L)
FOR nCount = 1 TO 250
sItem = ""
nWordLength = INT((35) * RAND( ) + 1)
FOR nCount2 = 1 TO nWordLength
sItem = sItem + CHR(INT((nUpper - nLower + 1) * RAND( ) + nLower))
ENDFOR
INSERT INTO ListCheck (MyEntry, Checked) VALUES(sItem, .F.)
NEXT
ENDPROC

PROCEDURE Unload
USE IN SELECT("ListCheck")
CLEAR EVENTS
ENDPROC

PROCEDURE ListSetup
THISFORM.LOCKSCREEN = .T.
LOCAL nListCount
nListCount = 1
SELECT ListCheck
SCAN ALL
IF ListCheck.Checked
THIS.list1.PICTURE(nListCount) = THISFORM.CheckIcon
ELSE
THIS.list1.PICTURE(nListCount) = THISFORM.Uncheckicon
ENDIF
nListCount = nListCount + 1
ENDSCAN
THISFORM.LOCKSCREEN = .F.
ENDPROC

PROCEDURE SetCheck
LOCAL nListIndex
nListIndex = THIS.list1.LISTINDEX
IF nListIndex > 0
GO nListIndex IN "ListCheck"
IF ListCheck.Checked
THIS.list1.PICTURE(nListIndex) = THISFORM.Uncheckicon
ELSE
THIS.list1.PICTURE(nListIndex) = THISFORM.CheckIcon
ENDIF
REPLACE ListCheck.Checked WITH !ListCheck.Checked
ENDIF
ENDPROC

PROCEDURE list1.GOTFOCUS()
IF DODEFAULT()
THISFORM.ListSetup()
ENDIF
ENDPROC

PROCEDURE list1.CLICK()
IF LASTKEY() = 13
THISFORM.SetCheck()
ENDIF
ENDPROC

PROCEDURE list1.KEYPRESS(nKeyCode, nShiftAltCtrl)
IF nKeyCode = 13 OR nKeyCode = 32
THISFORM.SetCheck()
ENDIF
ENDPROC

ENDDEFINE
 6/24/2012 7:28:41 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
pana aici am inteles si va multumesc tuturor pentru indrumari, dar cum fac cu datele? in cazul meu am doua tabele una cu boli (id_boala, boala) si a doua cu pacienti(id_pacient, id_boala) din prima tabela vreau sa creez lista completa cu boli, iar in a doua tabela sa inregistrez ce boli are fiecare pacient
 6/24/2012 11:58:44 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
adica mai concret din prima tabela sa creez liniile grid-ului cu checkbox-uri, iar in a doua sa fie memorate checkbox-urile "bifate"
 6/25/2012 8:36:54 AM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania)
 pbfox wrote
pana aici am inteles si va multumesc tuturor pentru indrumari, dar cum fac cu datele? in cazul meu am doua tabele una cu boli (id_boala, boala) si a doua cu pacienti(id_pacient, id_boala) din prima tabela vreau sa creez lista completa cu boli, iar in a doua tabela sa inregistrez ce boli are fiecare pacient

In cazul acesta ar fi mai bine sa lucrezi cu doua liste.
Lista de boli va fi prea mare pentru a fi comod de gasit o boala in lista. Incremental search ajuta, dar numai daca utilizatorul este obisnuit sa mai si tasteze cate ceva, nu doar sa aleaga din mouse.
Se poate filtra lista bolilor pe categorii, selectate dintr-un combo pus deasupra listei. Se poate popula lista cu boli cu un select sql in rowsource, ceva de forma "select boala, idboala from tabela_boli where idcatboala=?thisform.idcatboala and idboala not in (select idboala from _crsbolipacient where idpacient=?thisform.idpacient) order by boala into cursor _crsboli readwrite", unde  _crsbolipacient este cursorul care populeaza lista cu bolile pacientului. Cand se selecteaza categoria din combo, se trece intr-o proprietate a formului, astfel incat sa fie simplu de referit. La fel si cu pacientul, se trece idpacient intr-o proprietate a formului. In combo dblclick se da comanda thisform.lstBoli.requery(), e suficienta pentru repopularea listei dupa ce s-a ales o categorie.
Lista a doua, cu bolile pacientrului, se populeaza tot cu un select sql, din tabela boli se ia denumirea bolii, iar din tabela pacienti se ia idboala, avand grija grija ca si acest cursor sa fie readwrite. La selectarea din lista boli se insereaza boala in cursorul boli pacient (insert sql), si se sterge din cursorul boli. La deselectarea din boli pacient, se reinsereaza in cursorul cu boli.
Dupa ce s-a terminta cu selectia bolilor, se actualizeaza tabela pacienti cu doua comenzi sql, se sterg din tabela pacienti bolile care nu se regasesc in cursorul boli pacient si sei nsereaza bolile din cursorul boli pacient care nu se regasesc in tabela pacienti, bineinteles pentru idpacient la care se lucreaza.


Daniel Buduru
 6/25/2012 7:14:19 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
lista cu boli nu e foarte lunga asa ca prefer sa folosesc grid-ul cu checkbox-uri, dar cum atasez datele de asta (lista cu toate bolile si checkbox-urile - adica box-urile selectate) ceva de genul din meniul visual foxpro view toolbar
 6/25/2012 7:59:22 PM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania)
Construiesti cursorul pe care il afisezi in grid:
Select boala, idboala, .f. as selectat from tabela_boli order by boala into cursor _crsgrid readwrite
Actualizezi coloana selectat din acest cursor:
Update _crsgrid set selectat=.t. form tabela_pacienti where _crsgrid.idboala=tabela_pacienti.idboala and tabela_pacienti.idpacient=?thisform.idpacient
In grid afisezi coloana selectat si coloana boala din _crsboli.
Mai departe, stii cum sa faci cu gridul. Daca nu stii, vino cu intrebari.
Dupa ce termini cu pacientul, actualizezi tabela pacienti:

Delete from tabela_pacienti where idpacient=?thisform.idpacient and idboala in (select idboala from _crsgrid where selectat=.f.)

Insert into tabela_pacienti (idpacient, idboala) Select idboala, (?thisform.idpacient) from _crsgrid where selectat=.t. and idboala not in (select idboala from tabela_pacienti where idpacient=?thisform.idpacient)

In tabela boli trebuie sa ai si denumirea bolii, nu numai codul. Daca cel care utilizeaza aplicatia tine minte toate codurile, le poate scrie direct, nu mai are nevoie de selectie.


Daniel Buduru
 6/26/2012 1:47:37 AM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
Am facut asta: "Construiesti cursorul pe care il afisezi in grid: Select boala, idboala, .f. as selectat from tabela_boli order by boala into cursor _crsgrid readwrite Actualizezi coloana selectat din acest cursor: Update _crsgrid set selectat=.t. form tabela_pacienti where _crsgrid.idboala=tabela_pacienti.idboala and tabela_pacienti.idpacient=?thisform.idpacient " in grid am doua cloane, una cu checkbox si una normala si am pus: Thisform.grd_rez.column1.ControlSource = "_crsgrid.selectat" Thisform.grd_rez.column2.ControlSource = "_crsgrid.boala" am pus un browse inainte si dupa update si imi arata datele corect, dar in grid "bate campii"
 6/26/2012 10:26:06 AM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania) Modified By Daniel Buduru  on 6/26/2012 9:26:27 AM)
 pbfox wrote
... dar in grid "bate campii"

"Bate campii" acopera o arie extrem de vasta. Poti sa fii mai explicit?

Daniel Buduru
 6/26/2012 7:46:39 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
adica nu imi afiseaza datele care trebuie, pune niste filtre aiurea, revin cu detalii
 6/26/2012 10:54:42 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
scuze dar imi derula grid-ul in jos si imi arata doar ultima linie
 6/26/2012 11:11:40 PM
User is offlinepbfox
110 posts
5th


Re: list box cu check box
 (N/A)
la momentul asta mai am 2 intrebari: cum sa fac ca sa nu imi mai deruleze si sa imi arate doar ultima linie din grid cum sa fac ca sa nu imi apara cursorul cand selectez o coloana, dar totusi sa pot modifica starea checkbox-ului, daca pun allowcellselection pe .F. nu ma mai lasa sa modific checkbox-ul
 6/27/2012 2:09:49 AM
User is offlineDaniel Buduru
3513 posts
1st




Re: list box cu check box
 (Romania)
Inainte de a actualiza cursorul gridului cu bolile pacientului, trebuie resetat:
Update _crsgrid set selectat=.f.

Dupa actualizare (update _crsgrid ...) :
Go top in crsgrid

Dupa ce setezi grid.recordsource, sau in grid when:
thisform.grid1.setall('dynamicbackcolor','iif(selectat, rgb(255,192,192),rgb(255,255,255))' &&liniile selectate vor fi afisate cu alta culoare

In grid.dblclick:
Replace selectat with not selectat in (this.recordsource)


Daniel Buduru
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  list box cu che...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement