Search  
Friday, February 10, 2012 ..:: 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  Form-uri si generatoare de form-uri  Form cu un grid...
 Form cu un grid cu problema
 
 7/6/2010 1:02:46 AM
User is offlinemadalinsuny
21 posts


Form cu un grid cu problema
 (N/A)
Buna ziua!
Folosesc VFP9. Situatia de care ma lovesc este urmatoarea(sper ca am postat unde trebuie).
Am o aplicatie (clienti.exe) bazata pe un form principal ce contine 3 pagini, paginile 2 si 3 contin cate un grid. Formul nu are setat nici un Data environment,referinta la grig se face prin record source si control source (ex:client.nume).
Daca rulez aplicatia, se comporta bine.

Am mai facut un executabil(agenda.exe), ce contine o agenda. Vreau ca aceasta aplicatia agenda.exe sa poata fi folosita si din aplicatia clienti.exe.
In main.prg am pus 'PARAMETERS tip_pornire'si am tratat diferite cazuri. Si aceasta aplicatie rulata direct se comporta bine.

Atunci cand incerc sa apelez din clienti.exe programul agenda.exe (folosind: do agenda.exe WITH '1'), agenda.exe se comporta perfect, in schimb, gridurile din formul principal al aplicatiei clienti.exe devin goale.
Mentionez ca acest form este setat ca"As top level form" si contine si meniul aplicatie ( in metoda load : DO meniu.MPR with this ).

M-am gandit la urmatoarea solutie: sa inchid si sa redeschid formul principal imediat dupa apelarea agendei, dar:
- nu stiu cum sa inchid formul printr-o comanda dintr-un meniu (thisform.release nu merge)
-daca pun un buton pe form care sa faca inchiderea si redeschiderea lui(thisform.release urmat de do form principal.scx ),formul se deschide, gridurile sunt populate, dar nu imi mai apare meniul(apare si dispare imediat).

Sper sa ma puteti lamuri de ce dispar datele din griduri in momentul apelarii agendei (cele 2 programe nu au nici o baza de date , sau alte lucruri in comun) sau daca este mai usor, cum pot face sa inchid formul(ar fi de preferat totusi din meniu--odata cu apelarea din meniu a agendei)si la redeschiderea lui imediata sa contina si meniul.
Va multumesc!
 7/6/2010 1:24:25 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Form cu un grid cu problema
 (N/A)
In primul rand multumesc pentru referintele catre mine. ("referinta la grig se face prin...")

In al doilea rand, eu cred ca agenda.exe are un CLOSE DATA ALL sau un CLOSE TABLES ALL pe la inceput. Fiind lansata din clienti.exe, ruleaza in aceeasi sesiune de date, si daca ai linia aia pe undeva, aia inchide TOATE tabelele deschise in sesiunea aia de date, indiferent daca ii apartin sau nu.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/6/2010 8:03:26 PM
User is offlinemadalinsuny
21 posts


Re: Form cu un grid cu problema
 (N/A) Modified By madalinsuny  on 7/6/2010 9:50:15 PM)
Multumesc pentru raspuns, si scuze pentru greseala cu referinta :). Chiar daca nu postez des intrebari pe forum, este un loc unde gasesc deseori raspunsul la situatiile pe care le intalnesc, si gasesc destul de multe lucruri interesante. Am facut o prima cautare in proiect; nu am gasit close, nici in prg-ul principal, nici in celelalte obiecte ale proiectului agenda. Ce ar mai putea fi?
Exista vreo posibilitatea sa verific daca programul agenda este deja pornit(ma refer la pornire ca program de sine statator, nu daca a fost deja lansat in sesiunea curenta)? (in afara de incercarea de accesare a bazelor de date...si daca nu pot fi accesate inseamna ca programul ruleaza deja)?
In legatura cu inchiderea si redeschiderea corecta (sa contina meniul aplicatie) a formului exista vreo solutie?
 7/7/2010 1:32:22 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Form cu un grid cu problema
 (N/A)
Faptul ca gridurile alea se albesc are o singura explicatie: cineva le inchide tabelele de sub nas. Si daca asta se intampla cand lansezi celalalt exe, atunci sunt doua locuri posibile unde s-ar putea intampla asta: in codul din butonul ala (celelalte linii, nu do agenda.exe), sau agenda.exe insusi.

Daca programul agenda.exe e deja pornit n-ar trebui sa iti influenteze aplicatia "parinte", sa-i zicem asa. Mai cauta - cineva inchide tabelele alea. Alta explicatie nu exista, trust me. Si daca o rezolvi scapi si de beleaua cu meniul ala derbedeu.

O metoda de a afla ce se intampla e urmatoarea: (atentie, e tricky si tre'sa faci exact ce-ti scriu eu aici).

1. Toata treaba o faci din FoxPro (adica o sa ai _Screen in spate, vizibil)
2. Deschizi proiectul Clienti.exe si fix inainte de DO agenda.exe pui un SET STEP ON.
3. Rulezi Clienti.exe din fereastra de comenzi (DO CLIENTI.EXE). SET STEP ON e ignorat in runtime (cand ruleaza de sine statator), de-aia trebuie sa fii in fox cand faci chestia asta.
4. Exe-ul o sa se opreasca inainte de DO CLIENTI.EXE si o sa-ti apara fereastra debug.
5. Fereastra debug e compusa din 5 ferestre: Trace, Call Stack, Output, Locals si WATCH. Am facut-o bold pe asta ca aici ai tu treaba.
6. Fereastra Watch are un textbox si o lista. In texboxul ala scrii urmatorul text: USED("numele_tabelei_afisata_intr-unul_dintre_grid-urile_alea") si ii dai un enter. O sa se mute in lista.
7. Exact in marginea din stanga a listei, in dreptul expresiei pe care tocmai ai adaugat-o, dai un dubluclick. Ar trebui sa apara un punct rosu acolo. Asta inseamna "opreste-te din executie de fiecare data cand se schimba valoarea expresiei".
8. Ii dai Run (F5) FARA SA INCHIZI FEREASTRA DEBUG.

Programul tau va continua executia (adica o sa lanseze Agenda.exe) si se va opri singur atunci cand tabela afisata in grid este inchisa. In fereastra Trace o sa vezi exact linia care inchide tabelele. Repet, figura cu punctul rosu e proprie debuggerului, de-aia trebuie sa-l tii deschis. Daca inchizi fereastra debug aplicatia ta n-o sa se mai opreasca din executie.

Succes si da-mi si mie de stire daca ai reusit si care era problema.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/7/2010 10:15:52 AM
User is offlinemmarcel
87 posts


Re: Form cu un grid cu problema
 (N/A)
Gridul se mai poate "albi" si daca s-a dat o comanda pack pe fisierul sursa. Verifica acest lucru. Daca este asa, da comanda pack dupa parasirea formei sau inainte de apelarea formei.
 7/7/2010 10:42:27 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Form cu un grid cu problema
 (N/A)
Hmmm... corect, dar putin probabil. Daca PACK e in Clienti.exe, gridurile s-ar albi de fiecare data; nu se intampla asa, deci nu e pack acolo. Pe de alta parte, e putin probabil ca agenda.exe sa aiba un PACK pe o tabela de-a lu' clienti.exe fiindca ar da eroare cand e rulata singura.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/7/2010 12:24:03 PM
User is offlinemmarcel
87 posts


Re: Form cu un grid cu problema
 (N/A)
Da. Este putin probabil sa fie comanda pack. Mai ales ca fisierele ar trebui deschise exclusiv si atunci nu ar mai putea fi apelate de a doua aplicatie. Nu cumva a doua aplicatie (agenda.exe) mai deschide inca o data fisierele si nu le foloseste pe cele deja deschise?
 7/7/2010 3:29:03 PM
User is offlinemadalinsuny
21 posts


Re: Form cu un grid cu problema
 (N/A) Modified By madalinsuny  on 7/7/2010 2:37:00 PM)
Multumesc mult pentru raspunsuri. Am gasit problema.
Deschiderea cele 2 tabele folosite de agenda.exe se facea incercand sa scap de situatii generatoare de erori, adica intr-o comanda 'try..'. Dupa ce am scos comanda 'try...' gridurile nu se mai albesc.Nu imi explic de ce folosirea 'try...' avea efectul asta.

Acum mai ramane sa rezolv situatia in care agenda.exe este deja deschis in afara sesiunii programului principal.Nu stiu sa existe vreo comanda sa faca acest lucru, asa ca ce imi sugerati: sa vad daca pot deschide bazele...sa incerc redenumirea agenda.exe in altceva..si daca nu pot inseamna ca e deschis....?!Cum ar fi mai corect?

Ps: Pentru agenda am folosit resurse gratuite, pe care le-am cosmetizat: sta in system tray, evenimentele sunt salvate intr-o baza de date,am pus timer pentru a verifica daca se apropie vreun eveniment,am pus form-uri pentru adaugare/editare/stergere evenimente. Daca este cineva interesat (sau daca se poate pune la downloads), ofer cu placere codul sursa.
 7/7/2010 5:39:16 PM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Form cu un grid cu problema
 (N/A)
 madalinsuny wrote
Deschiderea cele 2 tabele folosite de agenda.exe se facea incercand sa scap de situatii generatoare de erori, adica intr-o comanda 'try..'. Dupa ce am scos comanda 'try...' gridurile nu se mai albesc.Nu imi explic de ce folosirea 'try...' avea efectul asta.


Nu exista nici o explicatie. Se intampla altceva, care iti scapa - garantez pentru asta. Try n-are nici o legatura cu deschiderea tabelelor (sau cu orice altceva, in general), ci doar creeaza un bloc in care interceptarea erorilor se face altfel decat pana inainte de try.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Form-uri si generatoare de form-uri  Form cu un grid...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement