<?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>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18594.aspx</link><pubDate>Sat, 14 Oct 2006 19:23:04 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18594</guid><dc:creator>Alex_</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18594.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=18594</wfw:commentRss><description>Μια ιδέα είναι μπορεί να είναι και χαζή&lt;br /&gt;
&lt;br /&gt;
αν μπορούσες δυναμικά να κάνεις αναζήτηση με κάθε εισαγωγή χαρακτήρα&lt;br /&gt;
&lt;br /&gt;
στη δομή με τις λέξεις κλειδιά (καλά αυτό θα το ξέρεις σίγουρα ,για τη δομή χρησιμοποίησε μια γρήγορη αναζήτηση δυαδική η ότι καλύτερο βρεις)&lt;br /&gt;
&lt;br /&gt;
Για να σου δώσω να καταλάβεις πως χρησιμοποιουνε κατι μηχανές αναζήτησης&lt;br /&gt;
&lt;br /&gt;
που όταν γράφεις ενα γράμμα σε βοηθάνε  να συμπληρώσεις , ε εσύ να ελέγχεις ωστε ή να απορίπτεις το συνδιασμό χαρακτήρων εφόσον δεν υπάρχει στη λίστα αλλάζοντας το αρχικό (index) με το επόμενο και πάλι έλεγχος . Εαν τα γράμματα είναι σωστά το μόνο που έχεις, είναι τα χρωματίσεις με μια άλλη συνάρτηση&lt;br /&gt;
&lt;br /&gt;
(τα index τα έχεις ήδη κρατημένα οπότε να τα περνάς σε μια συνάρτηση &lt;br /&gt;
&lt;br /&gt;
όρισμα indexes[]).&lt;br /&gt;
&lt;br /&gt;
Μάλλον θα σε μπέρδεψα περισσότερο&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18572.aspx</link><pubDate>Fri, 13 Oct 2006 23:45:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18572</guid><dc:creator>Nassos.NET</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18572.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=18572</wfw:commentRss><description>Δες και αυτό το Άρθρο :&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/cs/miscctrl/richtextboxextended.asp</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/17150.aspx</link><pubDate>Mon, 25 Sep 2006 21:28:41 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:17150</guid><dc:creator>mitsos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/17150.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=17150</wfw:commentRss><description>http://downloads.delphi32.com/2619/5220/richSyntax.zip&lt;br /&gt;
&lt;br /&gt;
Ο Serhiy Perevoznyk έχει φτιάξει ένα καταπληκτικό highlighter.&lt;br /&gt;
&lt;br /&gt;
Κατέβασέ τον από το παραπάνω link. Είναι source κώδικας.&lt;br /&gt;
&lt;br /&gt;
Είναι σε pascal για Delphi. όμως μπορείς να δείς πολύ εύκολα την λογική του και να γράψεις έναν αντίστοιχο.</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16989.aspx</link><pubDate>Thu, 21 Sep 2006 03:11:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16989</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16989.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=16989</wfw:commentRss><description>&lt;P&gt;Θα μπορούσες να δεις μια μηχανή highlight που παράγει html κώδικα και να την αλλάξεις ώστε να παράγει rtf. Πχ η μηχανή που έχω προσθέσει στην rich html editor του dotNETZone.gr είναι το &lt;A href="http://www.projectdistributor.net/Projects/Project.aspx?projectId=11"&gt;Thomas Johansen Highlight v2.2&lt;/A&gt;. Μπορείς να πάρεις το source code του και να δεις τι μπορείς να κάνεις...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16973.aspx</link><pubDate>Wed, 20 Sep 2006 20:49:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16973</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16973.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=16973</wfw:commentRss><description>&lt;P&gt;Θα πρέπει να παίξεις με RTF formating. Δεν είναι δύσκολο, αρκεί να δεις πως αλλάζει το περιεχόμενο όταν κάνεις apply ένα χρώμα.&lt;/P&gt;
&lt;P&gt;Ως προς το flickering, δοκίμασε να κάνεις override την OnPaintBackground της φόρμας και να ελέγχεις μέσω μιας boolean αν θα περάσει η κλήση στην base.&amp;nbsp;Αν δεν παίξει κι αυτό, ρίξε μια ματιά σε αυτή τη λύση: &lt;A href="http://www.dotnet2themax.com/blogs/fbalena/PermaLink,guid,6336502b-57c5-430d-9d37-7f9be484f6b3.aspx"&gt;http://www.dotnet2themax.com/blogs/fbalena/PermaLink,guid,6336502b-57c5-430d-9d37-7f9be484f6b3.aspx&lt;/A&gt;.&amp;nbsp;Δεν θα την χαρακτήριζα "κομψή" αλλά αν είναι να βελτιωθεί το performance, χαλάλι. &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile" /&gt; &lt;/P&gt;</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16971.aspx</link><pubDate>Wed, 20 Sep 2006 19:40:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16971</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16971.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=16971</wfw:commentRss><description>mns:&lt;br /&gt;
&lt;br /&gt;
Ενδοιαφέρουσα δουλειά αλλά θα ήθελα περισσότερο να δώ "πώς" το κάνει.&lt;br /&gt;
&lt;br /&gt;
KelMan: Υπάρχει ένα πρόβλημα.Το formatting.Πώς θα πώ μέσω του StringBuilder "εσύ select, γίνε μπλέ. Εσύ AND ,γίνε γκρυ"?&lt;br /&gt;
&lt;br /&gt;
Στο richtextbox μπορώ να κάνω αλλαγές στο Text mode και αυτές να εναρμονίζονται  με το formatting στο RTF mod. Ξέρω λοιπόν ότι αν κάνω αλλαγή στο χρώμα στον χαρακτήρα 25 ο χαρακτήρας θα παραμείνει στο 25.&lt;br /&gt;
&lt;br /&gt;
Το suspend layout πάντος την ώρα που έκανα αλλαγές δεν φάνεικε να δουλεύει. Εξακολουθώ να έχω flickering.&lt;br /&gt;
&lt;br /&gt;
Επιπλέον θέλω να προσωμοιώσω την λειτουργία του Editor που έχει ο SQL Managment Studio 2005 όπου οι δεσμευμένες λέξεις χρωματίζονται άμεσα άσχετα αν μετά δεν ακολουθεί κενό.&lt;br /&gt;
&lt;br /&gt;
Τώρα, για έναν πιο έξυπνο τρόπο.....το ψάχνω..</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16905.aspx</link><pubDate>Tue, 19 Sep 2006 18:49:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16905</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16905.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=16905</wfw:commentRss><description>Μπορείς να ρίξεις μια ματιά στον &lt;a href="http://www.e-dynamica.com/en/editor/index.html"&gt;Dynamica Editor&lt;/a&gt;.&lt;br&gt;</description></item><item><title>Απ: Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16891.aspx</link><pubDate>Tue, 19 Sep 2006 17:07:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16891</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16891.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=16891</wfw:commentRss><description>&lt;P&gt;Μερικές γενικές ιδέες για να βελτιστοποιήσεις την ταχύτητα:&lt;BR&gt;&lt;BR&gt;Δεν φαίνεται από τον κώδικα που παραθέτεις αλλά καλό είναι αν δεν το κάνεις να χρησιμοποιείς Regular Expressions για να βρίσκεις τα keywords καθώς είναι πολύ ταχύτερα από τις μεθόδους της String class. Επίσης, για intensive string manipulation καλύτερα είναι να χρησιμοποιήσεις τον StringBuilder. Τέλος, σχετικά με το flickering μπορείς να κάνεις suspend το refresh της φόρμας μέχρι να τελειώσεις και έτσι να αποφύγεις να χρησιμοποιείς διπλό control. Αυτό μπορεί να γίνει με τις SuspendLayout και ResumeLayout μεθόδους της φόρμας. Δηλαδή:&amp;nbsp;γεμίζεις το SortedList με τα keywords που τα έχεις βρει με regex -&amp;gt; περνάς τα περιεχόμενα του RichTextBox στον StringBuilder -&amp;gt; κάνεις freeze την φόρμα με suspend layout -&amp;gt; αλλάζεις τα περιεχόμενα του string builder -&amp;gt; περνάς τον stringbuilder στο RichTextBox -&amp;gt; κάνεις unfreeze την φόρμα.&lt;/P&gt;
&lt;P&gt;Τώρα, ως προς την λογική της ρουτίνας,&amp;nbsp;νομίζω ότι όλα αυτά θα πρέπει να τα κάνεις όχι στο OnTextChanged (δηλαδή με κάθε key press) αλλά όταν ο χρήστης πατάει πλήκτρα που εμφανίζουν χαρακτήρες όπως space, τελεία, ερωτηματικό κλπ, που σημαίνει ότι κατά πάσα πιθανότητα ο χρήστης έχει τελειώσει να πληκτρολογεί το reserved word. Φαντάσου ότι αν ο χρήστης πληκτρολογίσει &amp;lt;space&amp;gt;-S-E-L-E-C-T-I-O-N-&amp;lt;space&amp;gt; θα έχεις τρέξει την ρουτίνα 11 φορές τσάμπα και κατά τα μισά θα έχεις κάνει μπλέ το "SELECT" για να το ξανακάνεις μαύρο όταν θα πατήσει το "I". Επίσης, μπορείς να βρεις έναν τρόπο να την κάνεις πιο έξυπνη ελέγχοντας που έχουν γίνει οι τελευταίες αλλαγές ώστε να μην κάνεις το scan κάθε φορά από την αρχή ώστε να κρατήσεις την υπάρχουσα μορφοποίηση. &lt;/P&gt;</description></item><item><title>Φτοιάχνοντας έναν λεκτικό αναλυτή για SQL με Richtextbox</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/16890.aspx</link><pubDate>Tue, 19 Sep 2006 16:41:22 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:16890</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/16890.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=16890</wfw:commentRss><description>Έχοντας βρεί τις δεσμευμένες λέξεις από ένα άλλο project είπα να φτοιάξω έναν λεκτικό αναλυτή για SQL και να χρωματίζω τι λέξεις και τους τελεστές.&lt;br&gt;Έχω κάνει κάτι που δουλεύει μεν σωστά αλλά είναι τραγικά αργό&lt;img src="/cs/emoticons/emotion-6.gif" alt="Sad" /&gt;&lt;br&gt;Δεν γνωρίζω καλά το RichTextBox Και σκέφτηκα ότι κάτι μου διαφεύγει οπότε σας παραθέτω τι κάνω.&lt;br&gt;&lt;br&gt;Κάθε φορά που αλλάζει κάτι στον editor(OnTextChanged) , διατρέχω όλο το κείμενο ψάχνοντας για αναγνωρίσιμες λεκτικές μονάδες τις οποίες και αποθηκεύω σε ένα SortedList(aka Lex (key,value)--&amp;gt;(StartingIndex λεκτικής μονάδας, EndinxIndex λεκτικής μονάδας) . Μόλις τελειώσω,διατρέχω την λίστα και για κάθε λεκτική μονάδα αποφασίζω το χρώμα της. Οι αλλαγές γίνονται σε ένα dummy RichTextBox και μόλις τελειώσουν το περιεχόμενό του αντιγράφεται αυτούσιο στο κανονικό μου RichTextBox. Αυτό το κάνω γιατί παρατηρείται Flickering κατά την αλλαγή χρωμάτων.&lt;br&gt;&lt;br&gt;Από ότι παρατήρησα αυτό που αργεί είναι η απαρίθμηση των λεκτικών μονάδων και ο χρωματισμός τους που γίνεται σε αυτή τη συνάρτηση.&lt;br&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;private&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; PaintLexWords()&lt;br /&gt;        {&lt;br /&gt;            dummyEditor.Select(0, dummyEditor.Text.Length);&lt;br /&gt;            dummyEditor.SelectionColor &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Color.Black;&lt;br /&gt;            dummyEditor.Select(cursorPos, 0);&lt;br /&gt;            &lt;br /&gt;            &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;foreach&lt;/span&gt; (&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; index &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;in&lt;/span&gt; Lex.Keys)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;string&lt;/span&gt; token &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; dummyEditor.Text.Substring(index, Convert.ToInt32(Lex[index]) &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;-&lt;/span&gt; index);&lt;br /&gt;                &lt;br /&gt;                dummyEditor.Select(index, Convert.ToInt32(Lex[index]) &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;-&lt;/span&gt; index);&lt;br /&gt;                dummyEditor.SelectionColor &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; GetTokenColor(token);&lt;br /&gt;                dummyEditor.Select(cursorPos, 0);&lt;br /&gt;                dummyEditor.SelectionColor &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; _defaultColor;&lt;br /&gt;            }&lt;br /&gt;        }&lt;/span&gt;&lt;br&gt;Έχετε καμοιά ιδέα &lt;img src="/cs/emoticons/emotion-18.gif" alt="Huh?" /&gt;&lt;br&gt;&lt;br&gt;Βασικά αυτά τα καταραμένα τα strings (με μονά και διπλά "αυτάκια") είναι που δημιουργούν προβλήματα και με αναγκάζουν να διατρέχω όλο τον editor Κάθε φορά.&lt;br&gt;</description></item></channel></rss>