http://blogs.dotnethell.it/SwDev/ HyperBlogs Professional v.2.0 WPF - Keyboard shortcuts http://blogs.dotnethell.it/SwDev/Post_18490.aspx Thu, 12 Jul 2012 12:45:24 +0100 Ignazio Catanzaro <p>Salve a tutti, dopo una lunga assenza scrivo questo piccolo post :) </p><p>Molte volte si ha bisogno di gestire i famosi quanto indispensabili shortcut da tastiera, vediamo come fare utilizzando C# e WPF :</p><p>Creiamo in una classe una variabile statica di tipo RoutedCommand :</p><p>&nbsp; <b>public static RoutedCommand MioCommand = new RoutedCommand();</b><br></p><p>Inoltre, sulla variabile MioCommand bisogna necessariamente aggiungere una KeyGesture :&nbsp;</p><p>&nbsp; <b>MioCommand.InputGestures.Add( new KeyGesture( Key.P , ModifierKeys.Control )); //Lo shortcut è CTRL+P</b></p><p>Successivamente nello xaml della nostra/o window/usercontrol andiamo ad aggiungere un oggetto di tipo CommandBinding all'interno della proprietà CommandBindings e ne impostiamo la proprietà command assegnando ad essa la variabile statica di tipo RoutedCommand :</p><p>&nbsp; <b>&lt;Window.CommandBindings&gt;<br>&nbsp; &nbsp; &nbsp; &nbsp;&lt;CommandBinding Command="{x:Static local:MiaClasse.MioCommand }" Executed="MioCommandExecuted"/&gt;<br>&nbsp; &lt;/Window.CommandBindings&gt;</b></p><p>Possiamo notare la presenza dell'evento "Executed" , tramite l'editor xaml generate l'event handler e all'interno di tale metodo eseguite le operazioni da effettuare alla pressione dello shortcut :</p><p>&nbsp; <b>private void MioCommandExecuted( object sender, ExecutedRoutedEventArgs e )</b></p><p><b>&nbsp; {</b></p><p><b>&nbsp; &nbsp; &nbsp;//Operazioni varie</b></p><p><b>&nbsp; }</b></p><p><br></p><p>Per approfondire di piu l'argomento vi consiglio di dare una bella lettura ai seguenti articoli :</p><p><a href="http://msdn.microsoft.com/it-it/library/system.windows.uielement.commandbindings.aspx">http://msdn.microsoft.com/it-it/library/system.windows.uielement.commandbindings.aspx</a><br></p><p><a href="http://msdn.microsoft.com/it-it/library/system.windows.input.commandbinding.aspx">http://msdn.microsoft.com/it-it/library/system.windows.input.commandbinding.aspx</a><br></p><p><a href="http://msdn.microsoft.com/it-it/library/system.windows.input.routedcommand.aspx">http://msdn.microsoft.com/it-it/library/system.windows.input.routedcommand.aspx</a><br></p><p><a href="http://msdn.microsoft.com/it-it/library/system.windows.input.keygesture.aspx">http://msdn.microsoft.com/it-it/library/system.windows.input.keygesture.aspx</a></p><p>Stay tuned ;)</p> Ignazio Catanzaro 1 http://blogs.dotnethell.it/SwDev/ReadComment_18490.aspx Framework .Net Entity framework, metodo Last() non riconosciuto! http://blogs.dotnethell.it/SwDev/Post_17599.aspx Mon, 09 Jan 2012 18:32:19 +0100 Ignazio Catanzaro Salve a tutti!<div><br></div><div>Nella lista dei metodi delle entità generate da Entity Framework ci sono alcuni metodi che non vengono letteralmente riconosciuti dall'EF come metodi validi.</div><div><br></div><div>Uno tra tutti è il metodo Last() o LastOrDefault().</div><div><br></div><div>Se si vuole raggirare il problema si puo eseguire il metodo Last() su una lista generata a partire dall'Entity :</div><div><br></div><div>MiaEntità.Last() (Errore, EF non riconosce il metodo Last() come valido)</div><div>MiaEntità.ToList().Last() (Il metodo viene eseguito su una lista generica e pertanto il listato produce il risultato voluto).</div><div><br></div><div>Qui c'è una lista di tutti i metodi non supportati da EF :&nbsp;<a href="http://msdn.microsoft.com/en-us/library/bb738550.aspx" style="font-size: 10pt; ">http://msdn.microsoft.com/en-us/library/bb738550.aspx</a></div><div><br></div><div>Stay tuned! ;)</div> Ignazio Catanzaro 0 http://blogs.dotnethell.it/SwDev/ReadComment_17599.aspx Framework .Net Gestione Handly Printer http://blogs.dotnethell.it/SwDev/Post_17242.aspx Fri, 17 Jun 2011 18:02:26 +0100 Ignazio Catanzaro Salve a tutti!<div><br></div><div>Chi ha a che fare con il Mobile a livello aziendale, prima o poi si ritroverà ad armeggiare con le famose Handly Printers, ovvero, stampanti termiche di piccole dimensioni utilizzate ad esempio nell'ambito della tentata vendita.</div><div><br></div><div>Ogni stampante termica ha un suo SDK e nel migliore dei casi un linguaggio proprietario (come ad esempio le stampanti Zebra).</div><div><br></div><div>Ma se volessimo semplicemente stampare del testo (ad esempio una bolla, una fattura, etc) e la nostra applicazione potrebbe usufruire potenzialmente di N diversi tipi di stampanti? Implementare nel software N SDK risulterebbe tedioso.</div><div><br></div><div>Come fare quindi? Semplice, utilizzando la porta seriale impostata alla connessione del dispositivo (le stampanti vengono associate al terminale Mobile tramite Bluetooth).</div><div><br></div><div>In basso, il listato della classe PrintEngine che permette la stampa tramite connessione seriale.</div><div>Il suo utilizzo è molto semplice :</div><div><br></div><div>1) Creare un nuovo oggetto di tipo PrintEngine dando al costruttore come parametro il nome della porta seriale su cui è connessa la stampante</div><div><br></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PrintEngine PE = new PrintEngine("COM1");</div><div><br></div><div>2) Aggiungere righe al documento da stampare tramite il metodo AddLine();</div><div><br></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PE.AddLine("Ciao io sono la prima Linea di testo");</div><div><br></div><div>3) Lanciare la stampa tramite Print();</div><div><br></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PE.Print();</div><div><br></div><div>4) Visualizzare un'anteprima (Opzionale) in una textbox con il metoto Preview();</div><div><br></div><div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><pre style="background-color: transparent; border-top-style: none; border-bottom-style: none; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><span class="c1" style="color: rgb(0, 128, 0); ">//*******************************</span> <span class="c1" style="color: rgb(0, 128, 0); ">//Ignazio Catanzaro - 2011 *</span> <span class="c1" style="color: rgb(0, 128, 0); ">// * </span> <span class="c1" style="color: rgb(0, 128, 0); ">//For Compact Framework (CE-WM) *</span> <span class="c1" style="color: rgb(0, 128, 0); ">// * </span> <span class="c1" style="color: rgb(0, 128, 0); ">//*******************************</span></pre></span></div><div><span class="Apple-style-span" style="font-family: 'Bitstream Vera Sans Mono', monospace; white-space: pre; "><span class="k" style="color: rgb(0, 0, 255); "> using</span> <span class="nn">System</span><span class="p">;</span></span></div><div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><span class="k" style="color: rgb(0, 0, 255); ">using</span> <span class="nn">System.Linq</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">using</span> <span class="nn">System.Collections.Generic</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">using</span> <span class="nn">System.Text</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">using</span> <span class="nn">System.IO.Ports</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">namespace</span> <span class="nn">MPPrint</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">class</span> <span class="nc" style="color: rgb(43, 145, 175); ">PrintEngine</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">private</span> <span class="n">SerialPort</span> <span class="n">SerialConn</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">private</span> <span class="n">List</span><span class="p">&lt;</span><span class="kt" style="color: rgb(43, 145, 175); ">string</span><span class="p">&gt;</span> <span class="n">Lines</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">private</span> <span class="n">StringBuilder</span> <span class="n">PreviewBuffer</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="nf">PrintEngine</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">Lines</span> <span class="p">=</span> <span class="k" style="color: rgb(0, 0, 255); ">new</span> <span class="n">List</span><span class="p">&lt;</span><span class="kt" style="color: rgb(43, 145, 175); ">string</span><span class="p">&gt;();</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span> <span class="p">=</span> <span class="k" style="color: rgb(0, 0, 255); ">new</span> <span class="n">SerialPort</span><span class="p">();</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">BaudRate</span> <span class="p">=</span> <span class="m">9600</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">Parity</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="Apple-tab-span" style="white-space:pre"> </span><span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">StopBits</span> <span class="p">=</span> <span class="n">StopBits</span><span class="p">.</span><span class="n">One</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">DataBits</span> <span class="p">=</span> <span class="m">8</span><span class="p">;</span> <span class="p">}</span> <span class="p">~</span><span class="n">PrintEngine</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">try</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(</span><span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">IsOpen</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">Close</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">catch</span> <span class="p">{</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">void</span> <span class="nf">AddLine</span><span class="p">(</span><span class="kt" style="color: rgb(43, 145, 175); ">string</span> <span class="n">Line</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">Lines</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="n">Line</span><span class="p">);</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">void</span> <span class="nf">AddLine</span><span class="p">(</span><span class="n">List</span><span class="p">&lt;</span><span class="kt" style="color: rgb(43, 145, 175); ">string</span><span class="p">&gt;</span> <span class="n">Lines</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">Lines</span><span class="p">.</span><span class="n">AddRange</span><span class="p">(</span><span class="n">Lines</span><span class="p">);</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">void</span> <span class="nf">ClearLines</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">Lines</span><span class="p">.</span><span class="n">Clear</span><span class="p">();</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">void</span> <span class="nf">FormFeed</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(</span><span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">IsOpen</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">Write</span><span class="p">(</span><span class="s" style="color: rgb(163, 21, 21); ">"\f"</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">void</span> <span class="nf">Print</span><span class="p">()</span> <span class="p">{</span> <span class="kt" style="color: rgb(43, 145, 175); ">int</span> <span class="n">num</span> <span class="p">=</span> <span class="m">1</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(</span><span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">IsOpen</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">using</span> <span class="p">(</span><span class="n">List</span><span class="p">&lt;</span><span class="kt" style="color: rgb(43, 145, 175); ">string</span><span class="p">&gt;.</span><span class="n">Enumerator</span> <span class="n">enumerator</span> <span class="p">=</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">Lines</span><span class="p">.</span><span class="n">GetEnumerator</span><span class="p">())</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">while</span> <span class="p">(</span><span class="n">enumerator</span><span class="p">.</span><span class="n">MoveNext</span><span class="p">())</span> <span class="p">{</span> <span class="kt" style="color: rgb(43, 145, 175); ">string</span> <span class="n">current</span> <span class="p">=</span> <span class="n">enumerator</span><span class="p">.</span><span class="n">Current</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(</span><span class="n">current</span> <span class="p">==</span> <span class="s" style="color: rgb(163, 21, 21); ">"&amp;&amp;FF"</span> <span class="p">|</span> <span class="n">current</span> <span class="p">==</span> <span class="s" style="color: rgb(163, 21, 21); ">"&amp;&amp;0"</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(</span><span class="n">current</span> <span class="p">==</span> <span class="s" style="color: rgb(163, 21, 21); ">"&amp;&amp;FF"</span><span class="p">)</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">FormFeed</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">else</span> <span class="p">{</span> <span class="kt" style="color: rgb(43, 145, 175); ">byte</span><span class="p">[]</span> <span class="n">bytes</span> <span class="p">=</span> <span class="n">Encoding</span><span class="p">.</span><span class="n">Default</span><span class="p">.</span><span class="n">GetBytes</span><span class="p">(</span><span class="n">current</span><span class="p">);</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">Write</span><span class="p">(</span><span class="n">bytes</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">bytes</span><span class="p">.</span><span class="n">Length</span><span class="p">);</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="s" style="color: rgb(163, 21, 21); ">"\r"</span><span class="p">);</span> <span class="n">num</span><span class="p">++;</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="k" style="color: rgb(0, 0, 255); ">void</span> <span class="nf">PrintSpace</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(</span><span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">IsOpen</span><span class="p">)</span> <span class="p">{</span> <span class="kt" style="color: rgb(43, 145, 175); ">short</span> <span class="n">num</span> <span class="p">=</span> <span class="m">1</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">do</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">SerialConn</span><span class="p">.</span><span class="n">Write</span><span class="p">(</span><span class="s" style="color: rgb(163, 21, 21); ">" "</span><span class="p">);</span> <span class="n">num</span> <span class="p">+=</span> <span class="m">1</span><span class="p">;</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">while</span> <span class="p">(</span><span class="n">num</span> <span class="p">&lt;=</span> <span class="m">7</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">public</span> <span class="kt" style="color: rgb(43, 145, 175); ">string</span> <span class="nf">Preview</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">PreviewBuffer</span> <span class="p">=</span> <span class="k" style="color: rgb(0, 0, 255); ">new</span> <span class="n">StringBuilder</span><span class="p">();</span> <span class="k" style="color: rgb(0, 0, 255); ">using</span> <span class="p">(</span><span class="n">List</span><span class="p">&lt;</span><span class="kt" style="color: rgb(43, 145, 175); ">string</span><span class="p">&gt;.</span><span class="n">Enumerator</span> <span class="n">enumerator</span> <span class="p">=</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">Lines</span><span class="p">.</span><span class="n">GetEnumerator</span><span class="p">())</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">while</span> <span class="p">(</span><span class="n">enumerator</span><span class="p">.</span><span class="n">MoveNext</span><span class="p">())</span> <span class="p">{</span> <span class="kt" style="color: rgb(43, 145, 175); ">string</span> <span class="n">current</span> <span class="p">=</span> <span class="n">enumerator</span><span class="p">.</span><span class="n">Current</span><span class="p">;</span> <span class="k" style="color: rgb(0, 0, 255); ">if</span> <span class="p">(!(</span><span class="n">current</span> <span class="p">==</span> <span class="s" style="color: rgb(163, 21, 21); ">"&amp;&amp;1"</span> <span class="p">|</span> <span class="n">current</span> <span class="p">==</span> <span class="s" style="color: rgb(163, 21, 21); ">"&amp;&amp;0"</span><span class="p">))</span> <span class="p">{</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">PreviewBuffer</span><span class="p">.</span><span class="n">Append</span><span class="p">(</span><span class="n">current</span><span class="p">);</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">PreviewBuffer</span><span class="p">.</span><span class="n">Append</span><span class="p">(</span><span class="s" style="color: rgb(163, 21, 21); ">"\r\n"</span><span class="p">);</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="k" style="color: rgb(0, 0, 255); ">return</span> <span class="k" style="color: rgb(0, 0, 255); ">this</span><span class="p">.</span><span class="n">PreviewBuffer</span><span class="p">.</span><span class="n">ToString</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><span class="p"><br></span></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><span class="p">Potete ottenere risultati come questo :</span></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><img src="http://blogs.dotnethell.it/filestore/9029_img_20110613_055519.jpg"></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><br></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">Potete, ad esempio, creare un piccolo linguaggio di markup e gestire formati di stampa diversi come ho fatto io per il mio software di gestione logistica/contabilità :</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><br></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><img src="http://blogs.dotnethell.it/filestore/9030_immagine.png"></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">Come potete notare attraverso alcuni tag speciali : &lt;Header&gt;&lt;/Header&gt; , &lt;Body&gt;&lt;/Body&gt;, &lt;Footer&gt;&lt;/Footer&gt;, &lt;Compress&gt;&lt;/Compress&gt;, etc...</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">posso identificare le varie "zone" del formato ed operare sulla PrintEngine in modo tale da ottenere il risultato voluto.</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">Altra cosa "sfiziosa" è quella di creare dei "posizionatori", ovvero, delle variabili (in celeste nel formato) che a runtime vengono</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">letteralmente sostituite con i valori correnti, ad esempio : @DOMAG è il magazzino del documento che a runtime verra sostituito con (1) - Centrale (vedi foto stampa).</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><br></pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">Spero di esservi stato d'aiuto! Alla prossima!</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; ">Stay Tuned!</pre><pre style="background-color: transparent; border-top-width: 1px; border-top-style: none; border-top-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: none; border-bottom-color: rgb(204, 204, 204); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; font-family: 'Bitstream Vera Sans Mono', monospace; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-right-style: none; border-left-style: none; border-width: initial; border-color: initial; overflow-x: auto; overflow-y: auto; "><br></pre></span></div> Ignazio Catanzaro 0 http://blogs.dotnethell.it/SwDev/ReadComment_17242.aspx Mobile Application Auguri di buona Pasqua! http://blogs.dotnethell.it/SwDev/Post_17129.aspx Tue, 26 Apr 2011 10:15:07 +0100 Ignazio Catanzaro Anche se un po in ritardo, auguri a tutti di buona Pasqua (passata&nbsp;<img src="http://blogs.dotnethell.it/icons/teeth_smile.gif">&nbsp;).<div><br></div><div>Spero l'abbiate trascorsa nel migliore dei modi :)</div><div><br></div><div>AUGURIIII!!!!&nbsp;</div> Ignazio Catanzaro 0 http://blogs.dotnethell.it/SwDev/ReadComment_17129.aspx Generale, Eventi Enumeratori e Binding http://blogs.dotnethell.it/SwDev/Post_17117.aspx Mon, 11 Apr 2011 17:14:31 +0100 Ignazio Catanzaro <div style="text-align: left; font-size: 10pt; font-family: 'Trebuchet MS'; ">Salve a Tutti! Oggi, effettuando il refactoring di un progetto ho avuto la necessita di gestire diverse enumerazioni e i relativi Binding ai controlli, in pratica l'interfaccia gestisce N combobox cui Items non sono altro che i valori di un dato Enumeratore. La questione relativamente al full framework è molto semplice ovvero basta utilizzare il metodo GetValues() della classe statica Enum per impostare come DataSource di un controllo i relativi valori dell'enumeratore :</div><div><font class="Apple-style-span" face="'Trebuchet MS'" size="2"></font><font class="Apple-style-span" face="'Trebuchet MS'" size="2" style="font-size: 10pt; font-family: 'Trebuchet MS'; "><br></font><div><pre id="codeSnippet" style="text-align: -webkit-auto; background-color: rgb(244, 244, 244); border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; color: black; overflow-x: visible; overflow-y: visible; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 1156px; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; direction: ltr; font-family: 'Trebuchet MS'; font-size: small; "><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: 11px; line-height: 16px; ">tuaComboBox.DataSource = Enum.GetValues( <span style="color: #0000ff;">typeof</span> ( TuoEnumeratore ) );</span></pre> <br><div style="text-align: left; font-size: 10pt; font-family: 'Trebuchet MS'; "><span class="Apple-style-span" style="font-size: small; ">Per quanto concerne il Compact Framework invece, la questione è leggermente più complessa in quanto il metodo GetValues non è implementato.</span></div><div style="text-align: left; font-family: 'Trebuchet MS'; font-size: 10pt; "><font class="Apple-style-span" face="'Trebuchet MS'"><br></font></div><font class="Apple-style-span" face="'Trebuchet MS'" size="2" style="font-size: 10pt; font-family: 'Trebuchet MS'; "><div style="text-align: left;">Abbiamo bisogno quindi di un metodo che dato come parametro l'istanza di un Enumeratore ci ritorni una lista o un'interfaccia IEnumerable :</div></font><br><pre id="codeSnippet" style="background-color: rgb(244, 244, 244); font-family: 'Courier New', Courier, monospace; font-size: 8pt; line-height: 12pt; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; color: black; overflow-x: visible; overflow-y: visible; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; width: 100%; margin-top: 0em; margin-right: 0em; margin-bottom: 0em; margin-left: 0em; direction: ltr; text-align: left; "><span style="color: #0000ff;"> public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">class</span> Utilies<br> {<br> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> IEnumerable&lt;Enum&gt; EnumToList(Enum Enumeratore)<br> {<br> List&lt;Enum&gt; _enumerazioni = <span style="color: #0000ff;">new</span> List&lt;Enum&gt;();<br> <span style="color: #0000ff;">foreach</span> (FieldInfo InfoValori <span style="color: #0000ff;">in</span> Enumeratore.GetType().GetFields(BindingFlags.Public))<br> {<br> _enumerazioni.Add((Enum)InfoValori.GetValue(Enumeratore));<br> }<br> <span style="color: #0000ff;">return</span> _enumerazioni;<br> }<br> } </pre><br><div style="text-align: left; font-family: 'Trebuchet MS'; font-size: 10pt; "><font class="Apple-style-span" face="'Trebuchet MS'" size="2" style="font-size: 10pt; font-family: 'Trebuchet MS'; ">Il metodo si utilizza molto semplicemente in</font><font class="Apple-style-span" face="'Trebuchet MS'" size="2" style="font-size: 10pt; font-family: 'Trebuchet MS'; ">&nbsp;questa maniera :</font></div><div style="text-align: left; font-family: 'Trebuchet MS'; font-size: 10pt; "><br></div><div style="text-align: left; "><i>tuaComboBox.DataSource = EnumToList(new TuoEnumeratore());</i></div><br><font class="Apple-style-span" face="'Trebuchet MS'" size="2" style="font-size: 10pt; font-family: 'Trebuchet MS'; ">Stay Tuned ;)</font></div></div> Ignazio Catanzaro 0 http://blogs.dotnethell.it/SwDev/ReadComment_17117.aspx Framework .Net