Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum accesez site-ul CNAS ?

Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024
 Intrerupator cu N - doza doar cu ...

Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!
 Cum era nivelul de trai cam din a...

probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda
 Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...
 

regain lost focus textbox

- - - - -
  • Please log in to reply
6 replies to this topic

#1
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Am o forma cu mai multe textboxuri. In momentul in care parasesc textbox1, daca valoarea din textbox1 nu indeplineste un anumit set de conditii in momentul in care parasesc textboxul (cu enter, tab, click etc... nu conteaza cum) sa ma refocuseze in textbox1.
Eu am scris asa:

Private Sub TextBox10_AfterUpdate()
If TextBospam.spam.Value <> 10 Then
TextBospam.spam.setfocus
End If
End Sub


Am incercat si cu "Private Sub TextBox10_Exit(ByVal Cancel As MSForms.ReturnBoolean)"

Nu stiu de ce mi se modifica codul care l-am pus. In loc de textbospam.spam este "textbox10"

Edited by credit, 17 November 2010 - 14:29.


#2
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Ti-am zis si pe privat, dar nu cred ca ai inteles tu.
In exemplul atasat, in prima caseta scrii 10 (conform cerintei tale).
Daca acolo ai valoarea 10, nu poti sa scrii mai departe pana nu modific valoarea.
Daca scrii 11, focusul se muta pe urmatorul textbox.
Uita-te in cod si o sa vezi ca e cu focus (ca vad ca iti place de el :P )


Private Sub txt2_Enter()
If txt1.Text = "10" Then
	txt1.SetFocus
End If
End Sub
Codul pentru a se pune focus undeva se pune in urmatorul control.
Nu ai cum sa pui tot in texbox1 sa isi primeasca focusul pt. ca nu merge

txt1 - textbox1
txt2 - textbox2

In loc de focus mai poti face o manevra.
Daca in textbox1 ai valoarea 10, celelalte textbox-uri sa fie inactive, altfel daca nu ai trecut valoarea 10 acolo sa devina activae.

Edited by Sandstorm, 17 November 2010 - 15:04.


#3
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Hai ca iti scriu pe public poate mai vor si altii sa participe la discutie.

Tu mi-ai scris codul pentru evenimentul "enter" pe textbox2. Eu vreau ca evenimentul sa fie enter pe textbox1. Adica cand parasesc textbox1 si conditia nu este indeplinita sa recastig focusul pe textbox1.

#4
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009

Quote

Eu vreau ca evenimentul sa fie enter pe textbox1. Adica cand parasesc textbox1 si conditia nu este indeplinita sa recastig focusul pe textbox1.
NU AI CUM.

Nu poti sa pui in acel control cod ca sa isi recastige singur focusul.
Incearca tu si zi-mi daca merge. Pune si cu exit si cu enter si cu after si before update.
Nu merge.
Trebuie sa ii spui altui control ca daca cel de dinaintea lui nu indeplineste o conditie, sa te duca inapoi.
Cu ce te deranjeaza ca este cu Enter?
Poti sa ai 50 de textbox-uri.
Daca primul textbox nu are o valoare diferita de 10, din cauza acelui setfocus pe primul textbox, nu poti sa mergi mai departe.


L.E.
Incearca asa:
Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
	If txt1.Text = "10" Then
		 txt1.SetFocus
	End If
End Sub
Nu o sa te puna inapoi pe primul textbox.

L.L.E.
Daca tot vrei cu evenimentul Exit, incearca si asa:

Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
	If txt1.Text = "10" Then
		 txt1.SetFocus
		 Cancel = True
	End If
End Sub

Edited by Sandstorm, 17 November 2010 - 15:23.


#5
credit

credit

    Member

  • Grup: Members
  • Posts: 621
  • Înscris: 04.05.2007
Bravo man, vezi ca merge??

Trebuia sa mearga ca asa am eu la servici in program. E facut in oracle si nu ma lasa sa parasesc campul daca nu bag date conform conditiilor. Trebuia sa mearga si in visual.

Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If txt1.Text = "10" Then
txt1.SetFocus
Cancel = True
End If
End Sub


UIte poate mai au nevoie si altii. (nici nu mai era nevoie de setfocus)

Edited by credit, 17 November 2010 - 15:44.


#6
Sandstorm

Sandstorm

    Member

  • Grup: Banned
  • Posts: 632
  • Înscris: 30.04.2009
Da, merge, doar ca mie mi se pusese pata pe Enter.
Abia la final m-am gandit ca daca ai mai multe textbox-uri, nu poti sa le pui acea conditie la toate si ca e mai bine sa o pui la primul si atat.

Sa il pui pe cel de jos, pt. ca ti-am pus si error traping.
In cazul unei erori sa iti arate un mesaj cu descrierea ei, in loc sa pice aplicatia.
Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo err
	If txt1.Text = "10" Then
	 txt1.SetFocus
	 Cancel = True
	End If
Exit Sub

err:
	MsgBox err.Description, vbOKOnly + vbInformation, "Eroare"
End Sub


#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
 .._LostFocus(...)
 ' if conditii = 0  SetFocus
End Sub

http://msdn.microsof....lostfocus.aspx

Edited by MarianG, 18 November 2010 - 10:57.


Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate