Search  
Friday, May 25, 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  Cod, sintaxa si comenzi  Retry() imi cau...
 Retry() imi cauzeaza probleme
 
 7/27/2005 8:31:57 AM
User is offlinechucki21
152 posts
5th


Retry() imi cauzeaza probleme
 (Romania) Modified By chucki21  on 7/27/2005 8:33:53 AM)

Salut.

Am creat un form la introducerea datelor doresc ca valoarea "0" sa nu poata fi introdusa din "thisform.cantitate.value" .Am scris codul de mai jos.Merge, numai ca atunci cand dau valoarea "0" imi apare mesajul de eroare specificat de mine si daca doresc sa inchid formul de la "X" nu mai merge se dezactiveaza "Xul" de la fereastra, astfel incat numai cu CTRL ALT DEL ies din program..Toata chestia vine de la "retry()" care isi face treaba dar pe jumatate :).Mai demult am folosit-o si parca merge..dar in sfarsit.Important e sa existe controlul acesta asupra casutei pt ca utilizatorul sa nu poata introduce val "0"

if EMPTY(thisform.cantitate.value) then
MESSAGEBOX("CANTITATEA are valoare nula",0,"EROARE")
retry()
else
endif

#mai departe vine codul.....

Va multumesc

 7/27/2005 8:36:53 AM
User is offlinenae racaru
714 posts
www.rarom.ro
1st




Re: Retry() imi cauzeaza probleme
 (Romania) Modified By nae racaru  on 7/27/2005 8:37:51 AM)
LA METODA
VALID EVENT
A OBIECTULUI SCRII CE AI SCRIS FARA THEN SI IN LOC DE
RETRY()
SCRII
RETURN 0

NAE RACARU

VFP 6 si 9 + Oracle
 7/27/2005 9:13:48 AM
User is offlineanonymous
0 posts


Re: Retry() imi cauzeaza probleme
 (Romania)

Daca intorci .F. din metoda valid, obiectul nu mai pierde focus-ul, asa ca nu este o idee buna sa-l tii pe user obligat fortat acolo.

Eu zic sa dai mesajul respectiv dar sa il lasi pe user sa plece de pe control.

Si renunta la retry().

 7/27/2005 9:26:18 AM
User is offlineGrigore Dolghin
3592 posts
www.class-software.eu
1st






Re: Retry() imi cauzeaza probleme
 (Romania)

Din Help:

Executes the last command from the memory stack and then returns control to the calling program. RETRY is similar to RETURN, except RETURN executes the next line in the calling program.

La tine ultima comanda e Messagebox(). Nici nu ma mir ca nu merge, daca tu fortezi re-executarea comenzii anterioare. Am remarcat la tine un mod "pompieristic" de a programa. Nu e bine ce faci. Mai intai intreaba, te rog; pe forumul asta sunt cativa oameni care ar putea sa-ti dea niste sfaturi foarte competente.

Daca vrei sa interzici introducerea unei anumite valori intr-un textbox ai mai multe metode. O sa le iau pe rand, in ordinea crescatoare a valorii lor:

#1. LostFocus() - LostFocus este un eveniment care se executa inainte ca focus-ul sa paraseasca controlul. Codul introdus acolo ar trebui sa verifice valoarea. Daca vrei sa inhibi parasirea controlului, scrii NoDefault.

#2. Valid(). Valid este un eveniment (nu o metoda, asa cum ti s-a spus in mesajul anterior), care se executa cand focusul paraseste controlul. Codul introdus acolo ar trebui sa verifice valoarea, si daca vrei sa inhibi parasirea controlului, codul trebuie sa se termine cu RETURN 0. Nota: Valoarea numerica de la "return" reprezinta de fapt indexul controlului catre care se duce focusul, relativ la controlul curent. 0 inseamna controlul curent. -1 inseamna controlul anterior (exact; RETURN -1 trimite focusul la textboxul de dinainte). -2 - doua controale inapoi; 2 - focusul sare peste doua controale, in fine, ai prins ideea.

Problema metodelor #1 si #2 este aceea ca trebuie sa introduci ceva corect pentru a putea parasi controlul. Sincer iti spun, daca as vedea un astfel de program, urmatoarea mea actiune ar fi Control Panel - Add/Remove Programs - Uninstall. Stii de ce? Pentru ca programul tau presupune ca eu sunt un expert in folosirea lui si stiu in orice moment care sunt valorile corecte (altfel nu pot sa inchid fereastra aia). Ori eu sunt user, nu stiu. Si programul tau are grija sa faca misto de mine cu un messagebox: "Grigore, n-ai pus bine. Baga date ca lumea acolo". Intelegi situatia? imi creezi o stare de disconfort. Pe langa asta eu mai am 1 milion de motive sa fiu nervos: un sef tampit, telefonul suna din 2 in 2 minute, copilul plange, am varsat cafeaua pe tastatura, etc, etc, etc, etc. Motivele alea nu le pot controla; in schimb add/remove programs merge, hehehe.... si atunci da-l naibii de program, ia uite la el, s-a gasit si asta sa-mi dea peste bot....

Metoda pe care ti-o recomand este urmatoarea:

#3. NU FACE NICI UN FEL DE VALIDARI IN TEXBOX!

Rolul butonului Save este exact asta: apeleaza o metoda creata de tine, care trece prin toate controalele de pe form, verifica daca valorile introduse sunt corecte si returneaza .T. sau .F. functie de rezultat (nota: exista si o varianta a acestei abordari, mai buna dupa parerea mea, dar depaseste scopul acestui mesaj), si apoi se salveaza sau nu datele functie de rezultatul anterior.

Codul din Save ar trebui sa fie cam asa:

---------------------------------
If ThisForm.VerificareIntroducere()
   ThisForm.SalvareDate()
   ThisForm.Release()
EndIf
---------------------------------

Iar codul din ThisForm.VerificareIntroducere() ar trebui sa arate cam asa:

---------------------------------
llSuccess = .T.
If ThisForm.TextBox1.Value = 0
   ThisForm.TextBox1.SetFocus()
   MessageBox("Cantitatea nu poate fi zero!"
   llSuccess = .F.
EndIf

* Si asa mai departe, pana le termini pe toate.
* Daca gasesti o valoare eronata, pui llSuccess pe .F.,
* si la sfarsit returnezi llSuccess

Return llSuccess
---------------------------------

Daca mai ai intrebari pe tema asta, revino cu mesaje.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/27/2005 9:58:57 AM
User is offlinechucki21
152 posts
5th


Re: Retry() imi cauzeaza probleme
 (Romania)

Imi cer scuze.M-am facut gresit inteles dar oricum sfaturile date sunt foarte bune pt mine si am sa tin cont de ele.Eu am un buton "adaugare" care cand apas imi verifica erorile si in casuta de "cantitate" valoarea nu treb sa fie zero.Astfel incat utilizatorul sa poata pune macar 1 sau orice altceva.Dar in rest el poate sa umble pe acolo, nu il jenez cu nimic :)

Sper sa nu il enervez :)

Merci mult

P.S E bun returnul asta:)

 

 7/27/2005 10:17:38 AM
User is offlineGrigore Dolghin
3592 posts
www.class-software.eu
1st






Re: Retry() imi cauzeaza probleme
 (Romania)
 chucki21 wrote

[...]Eu am un buton "adaugare" care cand apas imi verifica erorile si in casuta de "cantitate" valoarea nu treb sa fie zero.Astfel incat utilizatorul sa poata pune macar 1 sau orice altceva.[...]

In cazul asta inlocuieste Save cu Adaugare in mesajul meu. In rest ramane valabil :)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Cod, sintaxa si comenzi  Retry() imi cau...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement