Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

όνομα control και φόρμας, ώς παράμετροι σε function/sub

Îåêßíçóå áðü ôï ìÝëïò Q-apprentice. Τελευταία δημοσίευση από το μέλος Q-apprentice στις 07-06-2012, 12:11. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-06-2012, 12:19 70534

    όνομα control και φόρμας, ώς παράμετροι σε function/sub

    Καλημέρα σας και πάλι, επειδή είμαι σχετικά νεός στον προγραμματισμό όπως θα έχετε παρατηρήσει, θέλω να ρωτήσω το εξής. Μπορώ σε μια function/sub να περάσω το όνομα του control & form που θέλω ώς παραμέτρους ;
    Έχω δημιουργήσει μια public sub όπως φαίνεται παρακάτω, (με όνομα παραμέτρου για τη φόρμα, SelForm και όνομα παραμέτρου για το control, SelControl).

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        Public Sub DropDownParameters(PKVar As String, TableVar As String, DBCommand As String, ValMember As String, _
                                      SelIndex As Integer, ByVal SelControl As Control, _
                                      SelForm As Object)
            Try
                DBCommand = "SELECT [" & PKVar & "] " _
                        & "FROM [" & TableVar & "] " _
                        & "ORDER BY Descr"
                DA = New SqlDataAdapter(DBCommand, Connection)
                DS = New DataSet()
                DA.Fill(DS, TableVar)
                DT = DS.Tables(TableVar)
                With SelForm.SelControl
                    .DataSource = DT
                    .DisplayMember = TableVar
                    .ValueMember = ValMember
                    .SelectedIndex = SelIndex
                End With
            Catch ex As Exception
            End Try
            ConnClose()
        End Sub

    Η παραπάνω sub απλά γεμίζει ένα dropdownlist επειδή θελώ όμως να την ξαναχρησιμοποιήσω ξανά κάμποσες φορές θέλω να περνάω ως παραμέτρους τα ονόματα των φορμών και των dropdown controls που έχω.
    Τι μπορώ να κάνω εδώ ;

    ευχαριστώ εκ των προτέρων

    Αντώνης Ε. Κόλλιας
  •  05-06-2012, 16:33 70538 σε απάντηση της 70534

    Απ: όνομα control και φόρμας, ώς παράμετροι σε function/sub

    Ναι μπορείς. Δεν χρειάζεται να περνάς την φόρμα εφόσων θέλεις να δουλέψεις επάνω στο control. Στον τύπο της παραμέτρου αντί για object θα βάλεις τον τύπο του control.
  •  06-06-2012, 14:33 70545 σε απάντηση της 70538

    Απ: όνομα control και φόρμας, ώς παράμετροι σε function/sub

    Και δεν παίζει να εμφανιστεί το αγαπημένο "object Reference not set to an instance of an object"???
  •  06-06-2012, 14:36 70546 σε απάντηση της 70538

    Απ: όνομα control και φόρμας, ώς παράμετροι σε function/sub

    το δοκίμασα και μου λέει ότι η τελευτάια παράμετρος δεν ειναι member του System.Windows.Forms.Control. Μήπως έχω ξεχάσει κάτι ;

    Αντώνης Ε. Κόλλιας
  •  06-06-2012, 14:55 70547 σε απάντηση της 70546

    Απ: όνομα control και φόρμας, ώς παράμετροι σε function/sub

    Αυτό που προσπαθείς να κάνεις έχει αρκετά προβλήματα. Το βασικότερο είναι ότι προσπαθείς να κάνεις μέσα σε ένα function δύο εντελώς διαφορετικά πράγματα: να διαβάσεις από τη βάση και να πειράξεις ένα control. 

    Επιπλέον, ο τρόπος με τον οποίο διαβάζεις από τη βάση είναι τουλάχιστον περίεργος. Δεν υπάρχει λόγος να φτιάχνεις και dataadapter και dataset ενώ το μόνο που θέλεις είναι ένα DataTable. Ο απλούστερος τρόπος είναι να φτιάξεις ένα DbCommand και να φορτώσεις το datatable απευθείας με την DataTable.Load. Τέλος, κλείνεις τη σύνδεση στη βάση με Close αντί με Using. Αν σκάσει κάτι, η σύνδεση θα παραμείνει ανοικτή. 

    Όσο για τα controls, ο κώδικας είναι ελάχιστος και δεν οφελεί ιδιαίτερα να φτιάξεις μία ξεχωριστή μέθοδο για το data binding. Αν επιμένεις όμως, απλά άλλαξε τον τύπο της SelForm στον τύπο του control σου: ΟΧΙ σε Control, αλλά σε ComboBox, ListBox ή ότι άλλο τύπο χρησιμοποιείς. Αν προσέξεις πάντως θα δεις ότι τα properties που πειράζεις ορίζονται στην κλάση ListControl, από την οποία κληρονομούν τα ComboBox και ListBox. Αν αλλάξεις τον τύπο σε ListControl το function σου θα παίζει με όλα τα controls που κληρονομούν από ListControl.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-06-2012, 17:32 70550 σε απάντηση της 70547

    Απ: όνομα control και φόρμας, ώς παράμετροι σε function/sub

    Δεν θέλω να το πειράξω, στην ουσία αυτό που θέλω να κάνω είναι να χρησιμοποιήσω τον κώδικα που έκανα post ξανά και ξανά περνόντας ως παράμετρο μόνο το όνομα του control για να μην ξαναγράφω το ίδιο πράμα στον κωδικά μου.

    Αντώνης Ε. Κόλλιας
  •  07-06-2012, 12:11 70556 σε απάντηση της 70550

    Απ: όνομα control και φόρμας, ώς παράμετροι σε function/sub

    Βρήκα την λύση. Το μόνο που έπρεπε να κάνω είναι να αφήσω μόνο το control και όχι την φόρμα και να τροποποήσω τις παραμέτρους ως εξής:
    1
    2
     
        Public Sub DropDownParameters(ByVal DBCommand As String, ByVal SelIndex As Integer, ByRef SelControl As ComboBox, _
                                      Optional ByVal PKVar As String = "", Optional ByVal TableVar As String = "", Optional ByVal ValMember As String = "")

    Δηλαδή να βάλω "ByRef SelControl As Combobox", δούλεψε μια χαρά.

    Παναγιώτη, σχετικά με αυτό που μου είπες για το table load το οποίο δεν χρειάζομαι Dataset κτλ. υπάρχει πουθένα κάποιο παράδειγμα να δω πως λειτουργεί;

    ευχαριστώ

    Αντώνης Ε. Κόλλιας
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems