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

 

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

Πως μπορουμε να "δουμε" ολα τα αντικειμενα και υποαντικειμενα σε μια φορμα?

Îåêßíçóå áðü ôï ìÝëïò Johnnyxp64. Τελευταία δημοσίευση από το μέλος Johnnyxp64 στις 07-10-2008, 22:01. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-10-2008, 20:35 45231

    Πως μπορουμε να "δουμε" ολα τα αντικειμενα και υποαντικειμενα σε μια φορμα?

    Καλησπερα,

    Θελω τις ιδεες σας και βοηθεια φυσικα. 

    Οταν φτιαχνουμε μια φορμα και σε αυτην τοποθετησουμε παραδειγμα 1 button 1toolstripmenu 1label ktl

    μπορουμε να κανουμε το παρακατω και να παρουμε ολα τα αντικειμενα σωστα?

    for each ctr as control in me.controls

    msgbox(ctr.text)

    next

    αυτο θα δει το button, to labal και θα μας επιστρεψει το text τους.

    τι γινεται ομως αμα θελουμε να αντιλαμβανεται και την toolbar αλλα και όλα τα υπομενου της?
    και γενικοτερα σε μερικα αντικειμενα οπως ενα treeview να βλεπουμε την αντικειμενα εχει και να περνουμε απο αυτα οτι θελουμε?

    γιατι?

    εχω μια μεδοθο φτιαξει που σε μια φορμα διαβαζω ολα τα κειμενα που εχουν ολα τα αντικειμενα της και φτιαχνω ενα xml, οργανωμενο τι κειμενο υπαρχει + σε ποιο αντικειμενο με βαση το ονομα τους που ειναι μοναδικο (αναγκαστικα)

    example:

    <?xml version="1.0" encoding="utf-8"?>
    <Root>
    <Form1>
    <Button5>load1</Button5>
    <Button4>make1</Button4>
    <TabControl1>
    </TabControl1>
    <Button3>Save1</Button3>
    <Button2>Edit1</Button2>
    <TextBox1>
    </TextBox1>
    <Button1>Open1</Button1>
    </Form1>

    ετσι οσα αντικειμενα εχουν κειμενο τα αντιλαμβανεται δυναμικα και φτιαχνει το xml οπως του ζητω, μετα μπορω ευκολα να ανοιξω το XML και να κανω μεταφραση σε οποια γλωσα θελω,
    και με μια αντιστροφη function διαβαζω το xml αυτο και τα αντιστοιχα αντικειμενα περνουν το νεο κειμενο που εγραψα. με αλλα λογια Localization.

    αυτο ομως για να δουλεψει και να αντιλαμβανεται toolbars η column captions απο datagrids πρεπει να γραψω ενα σωρο IF.

    εγω θα ηθελα αυτην την μεθοδο να την κανω πιο Γενικη ποιο generic να μπορω να την εφαρμωζω σε οποιαδηποτε εφαρμωγη αναπτυσω χωρις να αγχονομαι αν θα "πιανει" με τα IF ολων των ειδων αντικειμενα και υποαντικειμενα! κατι που απο οπου και να το καλω θα παιζει αμεσα.

    τωρα αναγκαζομαι και το κανω custom για καθε εφαρμογη και δεν ειναι λιγα τα IF και τα ειδη των αντικειμενων που δεν αντιλαμβανεται (σωστα) το for each ctr as control in me.controls 
    να ελεγα θα κατσω μερικες μερες και θα κανω ενα που να τα πιανει ολα! δεν ξερω τι θα ειναι αυριο μεθαυριο.

    απο την αλλη δοκιμασα την localization μεθοδο με resx του VS08 το βρησκω πολυ χρονοβορο και ασκοπο, καθος πρεπει να εχει παντου vs, εγω θελω ο πελατης αν θελει να μπορει να ανοιξει ενα αρχεια ευκολα και απλα και να γραφει μεσα οτι θελει να το αποθηκαυει και τελος. ετσι βολευει και εμενα δεν καθομαι να ασχολουμε με το design και κανω αλαγες-διορθωσεις αμεσα.

    προτασεις και ιδεες για την καλητερη - εξυπνοτερη- και γρηγοροτερη λυση να κανει καποιος localization .?? ας παρει χρονο να γραφτει την πρωτη φορα δεν με νιαζει αρκει να μπορω να καλω αυτην την κλαση μετα παντου και να παιζει!

    σας ευχαριστω για το χρονο σας.


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  07-10-2008, 21:42 45241 σε απάντηση της 45231

    Απ: Πως μπορουμε να "δουμε" ολα τα αντικειμενα και υποαντικειμενα σε μια φορμα?

    H ιδέα είναι να φτιάξεις ένα recursive function μέσα στο οποίο για κάθε control του controls collection θα ελέγχεις αν έχει κι αυτό controls collection και αν ναι, θα καλείς πάλι το function περνόντας εκ νέου ως παράμετρο το control.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim ControlNames As List(Of String) = GetControlNames(Me)
    End Sub

    Private Function GetControlNames(ByVal item As Control) As List(Of String)
       Dim names As List(Of String) = New List(Of String)

       For Each ctrl As Control In item.Controls
          If ctrl.Controls.Count > 0 Then
             names.AddRange(GetControlNames(ctrl))
          Else
             names.Add(ctrl.Text)
          End If
       Next

       Return names
    End Function

     

     


    Vir prudens non contra ventum mingit
  •  07-10-2008, 21:49 45242 σε απάντηση της 45241

    Απ: Πως μπορουμε να "δουμε" ολα τα αντικειμενα και υποαντικειμενα σε μια φορμα?

    Πάντως, ως προς το localization που αναφέρεις, το localization δεν είναι απλά μετάφραση των strings. Συχνά χρειάζεται να μετακινήσεις ή/και να κάνεις resize  τα controls της φόρμας ώστε να καλαίσθητα με το νέο τους κείμενο. Αυτό μπορεί να γίνει αυτόματοποιημένα μέσα από τα resources ενώ αν πας να φτιάξεις δικό σου μηχανισμό... χαιρετίσματα...
    Vir prudens non contra ventum mingit
  •  07-10-2008, 22:01 45244 σε απάντηση της 45242

    Απ: Πως μπορουμε να "δουμε" ολα τα αντικειμενα και υποαντικειμενα σε μια φορμα?

    θα το δοκιμασω και θα σου πω πως πηγε, σε ευχαριστω πολυ παντος για την απαντηση, διχνει οτι ειναι αυτο που θελω.Yes

    οσο για τις διαστασεις ναι εχεις δικαιο αλλα το εχω σκευτει ηδη και ετσι εχω αλλη function που τα προσαρμοζει αυτοματα αν χρειαζεται!

    και παλι ευχαριστω θα το δοκιμασω


    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems