Προς το περιεχόμενο

Visual Basic Απορία


Theoxaris

Προτεινόμενες αναρτήσεις

Θέλω σε κάθε πεδίο σε προγραμμα με VB όταν ο cursor είναι στο πεδίο αυτο να αλλάζει το background του πεδίου από άσπρο να γίνεται π.χ. κόκκινο!!<p>Δηλαδή π.χ. όταν ο cursor παει σε ένα πεδίο για να γραψω αυτό το πεδίο να γίνεται άλλο χρώμα.

Όμως είναι πολυ δυσκολο σε πρόγραμμα με πολλά πεδία να γραφω κώδικα ξανά και ξανά.<p>Υπάρχει τρόπος να γραφτει κάπου και με τη χρήση κάποιας παραμέτρου που θα χρησιμοποιώ σε κάθε πεδίο να γίνεται η ίδια δουλειά ?????<p>Ευχαριστω πολύ γισ όποια βοήθεια !!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Απο ότι κατάλαβα εγώ εννοεί όταν το text box έχει το focus. Μπορείς να το κάνεις αυτό δηλώνοντας όλα τα πεδία σαν ένα control array και βάζοντας το εξής κώδικα στις μεθόδους GotFocus και LostFocus.<p><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr><pre>

Private Sub Text1_GotFocus(Index As Integer)

for n=0 to arithmos_pediwn

Text1(n).BackColor = vbWhite

next n

Text1(Index).BackColor = vbRed

End Sub<p>

Private Sub Text1_LostFocus(Index As Integer)

Text1(Index).BackColor = vbWhite

End Sub

</pre><hr></blockquote><p>Σαν arithmos_pediwn μπορείς να βάλεις μια constant μεταβλητή με τον αριθμό των πεδίων που έχει κάθε φόρμα. Αν αυτό δεν είναι γνωστό απο την αρχή τότε μπορείς να βάλεις ένα μικρό module που θα μετράει πόσα text box έχει κάθε φορά (αν δεν ξέρεις πως γίνεται αυτό, κάνε post και θα στο γράψω και αυτό). Επίσης μπορείς για να γλιτώσεις το for loop, να κρατάς κάθε φορά ποιο textbox ήταν αναμένο πρίν και να σβήνεις μόνο αυτό.<p>[ 08-02-2002: Το μήνυμα επεξεργάστηκε από: bandito ]<p>[ 08-02-2002: Το μήνυμα επεξεργάστηκε από: bandito ]</p>

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

<blockquote><font size="1" face="Verdana, Helvetica, sans-serif">code:</font><hr><pre>

Function CountTextBoxes(frm As Form) as integer<p>Dim ctl As Control

Dim ctl_type As String<p>For Each ctl In frm.Controls

ctl_type = TypeName(ctl)

If ctl_type = "TextBox" Then CountTextBoxes=CountTextBoxes+1

Next<p>End Function

</pre><hr></blockquote><p>Και μια συμβουλή. Για να βρίσκετε τις απαντήσεις που θέλετε γρήγορα, πάρτε το msdn library που δίνει η Microsoft. Έχει πάρα πολλά snippets, και απαντήσεις σχεδόν για τα πάντα.<p>Υ.Γ Ο κώδικας αυτός είναι πολύ καλός για να καθαρίζεις πεδία ή να δίνεις αρχικές τιμές, χωρίς να χρειάζεται να τα προσπελάσεις 1-1.<p>[ 09-02-2002: Το μήνυμα επεξεργάστηκε από: bandito ]</p>

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ta pedia pws tha ta dhlwsw san control array ??

Gia des einai swsto ?<p>Private Sub Text(Index As Integer)

Text(1) = onoma_text_box

Text(2) = onoma_text_box

Text(3) = onoma_text_box

End Sub<p>kai meta ton kwdika pou mou edwses tha prepei na ton balw kapws etsi ?<p>

Private Sub Text_GotFocus(Index As Integer)

For n = 1 To n = 3

Text(n).BackColor = vbWhite

Next n

Text(Index).BackColor = vbRed

End Sub<p>

Private Sub Text_LostFocus(Index As Integer)

Text(Index).BackColor = vbWhite

End Sub<p>Diorthwseme an kanw lathos plz !!!!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

RTFM αλλά τέσπα<p>Η μαμά Microsoft, έχει φροντίσει ώστε ένα control array να φτιάχνεται πολύ πιο εύκολα. Πάρε ένα textbox και άλλαξε του όλα τα properties όπως τα θέλεις (backround color, font κτλ). Μετά κάνεις copy, paste και βγαίνει η μαγική ερώτηση "Do you want to create a control array?". Αν πατήσεις Υes, τότε το καινούργιο textbox θα έχει το ίδιο όνομα και ιδιότητες με το πρώτο, αλλά και ένα index που θα είναι μοναδικό. Έτσι το πρώτο που έφτιαξες θα έχει index=0 , το δεύτερο 1 κ.ο.κ.<p>Ο κώδικας που σου έδωσα δεν χρειάζεται καμία αλλαγή εκτός απο το όνομα της ρουτίνας. Αν δηλαδή έχεις ονομάσει το textbox txtData, τότε η ρουτίνα θα πρέπει να γίνει <p>Private Sub txtData_GotFocus(Index As Integer)

αντί

Private Sub Text_GotFocus(Index As Integer)<p>Αν δεν τα καταφέρεις στείλε μου το project στο [email protected] να το κοιτάξω.<p>[ 09-02-2002: Το μήνυμα επεξεργάστηκε από: bandito ]</p>

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...