<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Localization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/17148.aspx</link><pubDate>Mon, 25 Sep 2006 21:17:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:17148</guid><dc:creator>thAAAnos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/17148.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=17148</wfw:commentRss><description>Προσοχή όμως στην ασφάλεια !!&lt;br /&gt;
&lt;br /&gt;
Το ότι ενα κουμπί ή μενού είναι disabled δεν σημαινει ότι δεν μπορείς να &lt;br /&gt;
&lt;br /&gt;
το πατήσεις ( αν είσαι αποφασισμένος... )&lt;br /&gt;
&lt;br /&gt;
Το αν καποιος δεν μπορεί ή δεν πρέπει να κάνει κάτι δεν πρέπει &lt;br /&gt;
&lt;br /&gt;
να ελέγχεται από το gui αλλα από το logic&lt;br /&gt;
&lt;br /&gt;
Το αναφέρω γιατι την ειχα πατήσει και το θυμαμαι ακόμα ...</description></item><item><title>Re: Localization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1370.aspx</link><pubDate>Mon, 07 Mar 2005 09:32:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1370</guid><dc:creator>Andreas Tsouchlaris</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1370.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=1370</wfw:commentRss><description>Έχεις δει το MM .NET framework της Oaksleaf?&lt;br /&gt; &lt;br /&gt; &lt;font face="Verdana" size="2"&gt;Mere Mortals .NET is designed from the ground up for creating applications that can be multi-lingual. You can even provide end-user access to our intuitive language tools, allowing them to add their own new languages and provide translations for existing text. This feature can also be used to provide variations of text in a single language. This is useful in vertical or horizontal market applications when you want to vary label text, messages, and so on.&lt;br /&gt; &lt;br /&gt; &lt;a target="_blank" title="http://www.oakleafsd.com/" href="http://www.oakleafsd.com/"&gt;http://www.oakleafsd.com/&lt;/a&gt;&lt;br /&gt; &lt;/font&gt;</description></item><item><title>Re: Localization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1352.aspx</link><pubDate>Fri, 04 Mar 2005 23:35:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1352</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1352.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=1352</wfw:commentRss><description>Α-Ο-Υ-Τ-Σ! Αυτό είναι μανίκι!&lt;br /&gt;&lt;br /&gt;Μου φαίνεται ότι έχεις δύο επιλογες:&lt;br /&gt;1. Προσέχετε να μην πειράζετε τα μενού χωρίς να ανανεώνετε και τη βάση. Πονάει, αλλά είναι η πιο απλή λύση.&lt;br /&gt;2. Θα πρέπει να αντιστρέψεις τη λογική των μενού. Αντί να προσπαθείς να βρεις τα μενού που πρέπει να εμφανίσεις ή να διαγράψεις, θα πρέπει να κρατάς σε μια λίστα το μενού και την κατάστασή του (ενεργοποιημένο κλπ.) Δες αυτό το άρθρο στο MSDN, &lt;a target="_blank" title="http://msdn.microsoft.com/msdnmag/issues/02/10/CommandManagement/" href="http://msdn.microsoft.com/msdnmag/issues/02/10/CommandManagement/"&gt;http://msdn.microsoft.com/msdnmag/issues/02/10/CommandManagement/&lt;/a&gt;, το οποίπ περιγράφει πως να κάνεις αυτή τη δουλειά για menuitems και toolbars ταυτόχρονα. Δημιουργεί μια κλάση CommandManager η οποία περιέχει αντικείμενα Commands. Το κάθε αντικείμενο Command περιέχει την μέθοδο που θα εκτελέσει και τα Menuitems ή toolbar buttons στα οποία αντιστοιχεί. Έτσι, αν αλλάξει το Enabled property ενός Command, αυτόματα αλλάζει και το Enabled property των menuitem και toolbarbutton.&lt;br /&gt;Οι αντιστοιχίες ορίζονται όπως στον παρακάτω κώδικα:&lt;br /&gt;&lt;br /&gt;&lt;pre class="clsCode"&gt;&lt;font size="2"&gt;private void InitializeCommandManager() &lt;br /&gt;{ &lt;br /&gt; cmdMgr = new CommandManager(); &lt;br /&gt; cmdMgr.Commands.Add( new Command( "EditCopy", &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Command.ExecuteHandler(&lt;strong&gt;OnCopy&lt;/strong&gt;), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Command.UpdateHandler(UpdateCopyCommand))); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmdMgr.Commands["EditCopy"].CommandInstances.Add( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new Object[]{&lt;strong&gt;mnuEditCopy&lt;/strong&gt;, &lt;strong&gt;tlbMain.Buttons[4]&lt;/strong&gt;}); &lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;font face="Verdana" size="2"&gt;Μετά μπορείς να αλλάξεις την κατάσταση ενός command απλά με:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cmdMgr.Commands["EditCopy"].Enabled=false;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;</description></item><item><title>Re: Localization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1351.aspx</link><pubDate>Fri, 04 Mar 2005 22:10:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1351</guid><dc:creator>Main</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1351.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=1351</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;ΩΩΩΩΩΩΩωωωω!!!!!!!&lt;br /&gt;θα σου πω πως το έκανα εγω.Αφου φτιάξω την φόρμα&amp;nbsp; μετα κανω copy το αντιστοιχο .resx αρχείο manual&amp;nbsp;προσθετοντας το locale&amp;nbsp;&lt;br /&gt;π.χ&amp;nbsp;Φτιαχνω την φόρμα&amp;nbsp;&amp;nbsp;AdminLogin αφου την παιδέψω και δω οτι είναι οκ κανω την παραπαμω διαδικασία manual. AdminLogin.resx -&amp;gt;AdminLogin.El.Resx , AdminLogin.Fr.Resx AdminLogin.De.resx Και εδω ήταν που περιεγραψα οτι είιναι πακέτο&amp;nbsp;οι αλλαγές και αλλα τέτοια συναφή.&amp;nbsp;Με έσωσες απο πολύ χρόνο απο κάτι που θα ανακάλυπτα ποιος ξερει μετα απο πόσο καιρό. Υπαρχει και η περίφημη έκφραση RTFM. (Το λεω για εμένα)&lt;br /&gt;&lt;br /&gt;Για να σε διαφωτήσω όσο αναφορά&amp;nbsp;&amp;nbsp;&lt;img src="/forums//emoticons/emotion-10.gif" alt="Embarrassed" /&gt; το personaliazation σε επίπεδο μενού απο την πλευρα της ασφάλειας της εφαρμογής.&lt;br /&gt;Η&amp;nbsp;εφαρμογή θα πρεπει να υποστηρίζει πολλαπλα σενάρια ασφαλείας.Π.Χ&lt;br /&gt;ο χρηστης 1 θα πρεπει να εχει ενεργό το μενου ταδε , ταδε και ταδε, Ενω ο χρηστης 2 θα πρεπει να εχει το μενου ταδε&amp;nbsp; και την επιλογή ταδε μονο.&lt;br /&gt;&lt;br /&gt;Αρα εγώ ο δύσμοιρος θα πρέπει να περάσω&amp;nbsp;σε μια&amp;nbsp;βάση το μενου tree&amp;nbsp;και την&amp;nbsp;πρόσβαση του καθε χρήστη για κάθε μενού ή&amp;nbsp;template, role αν πρωτιμάς.&lt;br /&gt;Και αυτο θα πρεπει να το χειρίζεται ο ταδε&amp;nbsp;διαχειριστης της εφαρμογής.&lt;br /&gt;&lt;br /&gt;Το πρόβλημα ξεκινα στο οτι τα&amp;nbsp;menuitems αν δεν τα ξερεις εχεις πρόβλημα να τα αναγνωρίσεις , με κάποιο τρόπο το ξεπερνάς αυτο αλλά&amp;nbsp;θα&amp;nbsp;είναι προβληματικό σε upgrades&amp;nbsp;και σε αλλαγές.&lt;br /&gt;π.χ έχεις &amp;nbsp;μια ρουτίνα στην εφαρμογή σου που σου κάνει export το schema του μενού και έχεις &lt;br /&gt;MainMenu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Menuitem1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem6&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem8&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem10&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MenuItem11&lt;br /&gt;&lt;br /&gt;Απο όσο&amp;nbsp;εψαξα το mainMenu εχει ενα&amp;nbsp;collection&amp;nbsp;Μenuitems&amp;nbsp;τα οποία με την σειρά τους μπορεί να έχουν και αυτά άλλα menuitems&lt;br /&gt;&lt;br /&gt;Το να το &amp;nbsp;καταχωρήσεις σε μια βαση και&amp;nbsp;να το &amp;nbsp;συνδεσεις με ενα πίνακα με rights απο τους χρήστες&amp;nbsp;(sql&amp;nbsp;ή της εφαρμογής ) ειναι οκ, όταν θα προσθέσεις ενα&amp;nbsp;menu&amp;nbsp;ή αλλαξεις εσυ ή καποιος συνάδελφος το όνομα του μενού τότε εχασες την&amp;nbsp;μπαλα. ή κανω λάθος ?&lt;br /&gt;(Η σκέψη είναι να μπορείς δυναμικά να&amp;nbsp;καταγράφεις το μενου&amp;nbsp;σε μια βάση καταγράφωντας το όνομα του μενού&amp;nbsp;Item&amp;nbsp;exp mainuitem1.&amp;nbsp;ωστε ακόμα και να αλλαξεις κατι να μπορεις&amp;nbsp;να βρείς ακρη , ισως με το&amp;nbsp;index&amp;nbsp;αλλα δεν είναι πολύ διακρητό και ειδικά σε εφαρμογή με πολυγλωσσικότητα.&lt;br /&gt;&lt;br /&gt;(Ελπιζω να&amp;nbsp;έδωσα ικανοποιητικές &lt;span style="FONT-SIZE: 9.5pt; BACKGROUND: #efefef; COLOR: black; FONT-FAMILY: Verdana"&gt;διευκρινίσεις)&lt;/span&gt;&lt;span lang="EN" style="mso-ansi-language: EN-US"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Localization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1346.aspx</link><pubDate>Fri, 04 Mar 2005 05:45:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1346</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1346.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=1346</wfw:commentRss><description>&lt;p&gt;Λοιπόν, δεν κατάλαβα τί προσπαθείς να κάνεις. &lt;br /&gt;&amp;nbsp; Πρώτα απ' όλα, τί πρόβλημα υπάρχει να χρησιμοποιήσεις το συνηθισμένο τρόπο localization? Εντάξει, για τα μηνύματα πρέπει να χρησιμοποιήσεις resource files, αλλά για τα μενού, κουμπιά, γενικά controls στη φόρμα, το μόνο που έχεις να κάνεις είναι να αλλάξεις το Localizable property της φόρμας σε True και να επιλέξεις τη γλώσσα για την οποία θέλεις να γράψεις τα νέα strings. Μετά πας σε κάθε control, μενού, κλπ. και γράφεις το string που θες. Το Visual Studio θα τα αποθηκεύσει όλα σε ξεχωριστό resource αρχείο και θα φτιάξει τον κατάλληλο κώδικα για να το φορτώσει στο InitializeComponents. Για να δεις όλα τα resource αρχεία, πάτα το κουμπί "Show All Files" στο Solution Explorer.&lt;br /&gt;&lt;br /&gt;Όσο για το .Name ... είναι περίεργο, αλλά δεν υπάρχει εύκολος τρόπος να κάνεις αυτό που θες. Τίποτα όμως δεν είναι αδύνατον αν ... το σκεφτείς λίγο ανάποδα!&lt;img src="/forums//emoticons/emotion-15.gif" alt="[8-|]" /&gt; Βλέπεις τα menu items είναι fields της φόρμας. Οπότε, χρησιμοποιώντας reflection μπορείς να τα βρεις αν ξέρεις το όνομα τους. &lt;br /&gt;&lt;br /&gt;Αν για παράδειγμα η φόρμα σου έχει ένα μενου με το όνομα menuItem1, μπορείς να αλλάξεις το visibility με τον παρακάτω κώδικα:&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;&lt;br /&gt;using System.Reflection;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;font size="2"&gt;&lt;br /&gt;FieldInfo fi= &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;.GetType().GetField("menuItem1",BindingFlags.NonPublic| BindingFlags.Instance);&lt;br /&gt;MenuItem mi=(MenuItem)fi.GetValue(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;this&lt;/font&gt;&lt;font size="2"&gt;);&lt;br /&gt;mi.Visible=!mi.Visible;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face="Verdana"&gt;Τέλος, όσον αφορά τα Ελληνικά. Εξαρτάται από το τί απάντηση περιμένεις. Κατάλαβα το δεύτερο κομμάτι της ερώτησής σου, αλλά για το πρώτο &lt;img src="/forums//emoticons/emotion-7.gif" alt="Tongue Tied" /&gt;. Αν δεν το πέτυχα, θα πρέπει να περιγράψεις καλύτερα τί θέλεις.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Localization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1343.aspx</link><pubDate>Fri, 04 Mar 2005 04:20:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1343</guid><dc:creator>Main</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1343.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=1343</wfw:commentRss><description>Θα ήθελα την συμβουλή σας σε κατι που ειναι πολύ της μόδας τελευταία.&lt;br /&gt;&amp;nbsp;Πολυγλωσσικότητα!&lt;br /&gt;&lt;br /&gt;Εχω βγάλει τα ματακια μου γυρίζοντας το συνεχές εργο "Coffee Nights" και εχω βρεί το ζευγος Resourcemanager + Resource files.&lt;br /&gt;&amp;nbsp;Μεχρι εδώ ας πούμε οτι είναι ok.&lt;br /&gt;Εχω ένα αρχείο για κάθε φόρμα ή ενα για τα&amp;nbsp;μπορώ να αντλω τα μηνύματα για τυχόν exceptions ή απλα μηνύματα. π.χ.&amp;nbsp;θελεις να κάνεις αυτό ? σε ενα MessageBox.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Το μεγα μου θέμα είναι τα : MENUS!&lt;br /&gt;&lt;br /&gt;Μπορώ μια χαρα να εχω το αντιστοιχο resx&amp;nbsp;αρχείο για κάθε φόρμα αλλα αν αλλαξει κάτι στο neutral culture resx&amp;nbsp;αρχείο εγω θα πρέπει να κανω μαγικά για να μεταφέρω τa&amp;nbsp;xml tags που δηλώνουν το μενού στα αντιστοιχα αρχεία γλωσσων.&lt;br /&gt;(Πράγμα που δεν το εχω κάνει).&lt;br /&gt;&lt;br /&gt;Α! και αυτα τα μενού εγω θα πρέπει να να τα διαχειρισθω&amp;nbsp; για θεματα ασφαλειας ,&amp;nbsp;ποιος χρήστης βλεπει τί , και αλλα τέτοια.&lt;br /&gt;απο ενα γρηγορο πέρασμα που έκανα στο mainmenu (να το πω collection?)&lt;br /&gt;είδα οτι δεν έχει καποιο property για να το συνδεσω εύκολα με το αντιγραφο του σε μια βάση (sql, oracle) μόνο το index ισως. θα βόλευε και το όνομα του αλλα στα menuitems δεν βρήκα κατι που να εχει property .name &lt;br /&gt;Για το τέλος δουλευω με Vb.net 2003&amp;nbsp;&lt;br /&gt;&lt;br /&gt;(Ψιτ και μην ακουσω για τα Ελληνικά μου! είμαι ευαίσθητος!)&lt;br /&gt;Thanks &lt;br /&gt;&amp;nbsp;&amp;nbsp;</description></item></channel></rss>