<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Jose Gonzalvo</title><link>http://blogs.clearscreen.com/jgonzalvo/</link><description>.NET y otras adicciones</description><managingEditor>Jose Gonzalvo</managingEditor><dc:language>es-ES</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Jose Gonzalvo</dc:creator><title>viemu released!</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/07/27/2367.aspx</link><pubDate>Wed, 27 Jul 2005 16:30:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/07/27/2367.aspx</guid><description>&lt;p&gt;Aunque hace tiempo que no posteo nada en este blog (espero dentro de poco informaros de las razones), si quiero felicitar a &lt;a href="http://www.ngedit.com"&gt;NGEDIT Software&lt;/a&gt; por el lanzamiento de &lt;a href="http://www.ngedit.com/viemu.html"&gt;viemu&lt;/a&gt;, un add-in para Visual Studio que emula el modo de trabajo de vi/vim. &lt;/p&gt;
&lt;p&gt;¡Mucha suerte!&lt;/p&gt;
&lt;p&gt;Por cierto, vale la pena subscribirse a &lt;a href="http://blog.ngedit.com"&gt;su blog&lt;/a&gt;; hay posts muy interesantes.&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/2367.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Aunque hace tiempo que no posteo nada en este blog (espero dentro de poco informaros de las razones), si quiero felicitar a <a href="http://www.ngedit.com">NGEDIT Software</a> por el lanzamiento de <a href="http://www.ngedit.com/viemu.html">viemu</a>, un add-in para Visual Studio que emula el modo de trabajo de vi/vim. </p>
<p>¡Mucha suerte!</p>
<p>Por cierto, vale la pena subscribirse a <a href="http://blog.ngedit.com">su blog</a>; hay posts muy interesantes.</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/2367.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Tipos de clientes</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/06/19/1938.aspx</link><pubDate>Sun, 19 Jun 2005 09:57:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/06/19/1938.aspx</guid><description>&lt;p&gt;Leyendo el blog de &lt;a href="http://www.userscape.com/blog/2005/06/14/firing-your-customers/"&gt;Ian Landsman&lt;/a&gt; he llegado hasta &lt;a href="http://www.christopherhawkins.com/06-13-2005.htm#78"&gt;este artículo&lt;/a&gt; de Christopher Hawkins, en el que habla de los tipos de clientes de los que conviene deshacerse lo antes posible. Define 11 "tipos" de clientes que es preferible evitar.&lt;/p&gt;
&lt;p&gt;Haciendo memoria y grosso modo, de todos los clientes con los que he trabajado aproximadamente un 25% podrían encajar en alguno de los 11 tipos. ¿Son muchos? ¿He tenido suerte?&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1938.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Leyendo el blog de <a href="http://www.userscape.com/blog/2005/06/14/firing-your-customers/">Ian Landsman</a> he llegado hasta <a href="http://www.christopherhawkins.com/06-13-2005.htm#78">este artículo</a> de Christopher Hawkins, en el que habla de los tipos de clientes de los que conviene deshacerse lo antes posible. Define 11 "tipos" de clientes que es preferible evitar.</p>
<p>Haciendo memoria y grosso modo, de todos los clientes con los que he trabajado aproximadamente un 25% podrían encajar en alguno de los 11 tipos. ¿Son muchos? ¿He tenido suerte?</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1938.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Nuevo aumento de velocidad: 4 Megas</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/06/19/1936.aspx</link><pubDate>Sun, 19 Jun 2005 09:46:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/06/19/1936.aspx</guid><description>&lt;p&gt;Parece que por fin la guerra de precios y velocidades que mantienen las operadoras de telecomunicaciones en España empieza a dar sus frutos. Hace tan sólo &lt;a href="http://blogs.clearscreen.com/jgonzalvo/archive/2005/04/21/1402.aspx"&gt;2 meses&lt;/a&gt; multiplicaron por 5 la velocidad de descarga sin coste alguno. Ahora, me han subido otro mega y me han rebajado la cuota 15 € !!! (en todo el combinado).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1936.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Parece que por fin la guerra de precios y velocidades que mantienen las operadoras de telecomunicaciones en España empieza a dar sus frutos. Hace tan sólo <a href="http://blogs.clearscreen.com/jgonzalvo/archive/2005/04/21/1402.aspx">2 meses</a> multiplicaron por 5 la velocidad de descarga sin coste alguno. Ahora, me han subido otro mega y me han rebajado la cuota 15 € !!! (en todo el combinado).</p>
<p> </p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1936.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Posible fecha de lanzamiento para Visual Studio 2005</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/06/07/1863.aspx</link><pubDate>Tue, 07 Jun 2005 19:47:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/06/07/1863.aspx</guid><description>&lt;p&gt;Hasta ahora todos lo rumores que he podido leer sobre la fecha de lanzamiento del Visual Studio 2005 apuntaban a final de año. Muchos afirmaban que incluso podría ser a finales de diciembre.&lt;/p&gt;
&lt;p&gt;Sin embargo parece ser que será &lt;a href="http://msdn.microsoft.com/launch2005/"&gt;un poco antes&lt;/a&gt;, concretamente para el 7 de noviembre, casi un mes despues del &lt;a href="http://msdn.microsoft.com/events/pdc/"&gt;PDC '05&lt;/a&gt;.&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1863.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Hasta ahora todos lo rumores que he podido leer sobre la fecha de lanzamiento del Visual Studio 2005 apuntaban a final de año. Muchos afirmaban que incluso podría ser a finales de diciembre.</p>
<p>Sin embargo parece ser que será <a href="http://msdn.microsoft.com/launch2005/">un poco antes</a>, concretamente para el 7 de noviembre, casi un mes despues del <a href="http://msdn.microsoft.com/events/pdc/">PDC '05</a>.</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1863.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Vista agrupada en ListView</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/31/1726.aspx</link><pubDate>Tue, 31 May 2005 13:02:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/31/1726.aspx</guid><description>&lt;p&gt;A partir de la versión 6.0 de la librería Common Controls (Comctl32.dll), el listview permite, en la vista 'detalles', agrupar los elementos.&lt;/p&gt;
&lt;p&gt;Afortunadamente, si la versión de Comctl32.dll disponible es anterior a la 6.0 e intentamos agrupar los elementos, no se produce ningún error, simplemente se ignora.&lt;/p&gt;&lt;img style="FLOAT: right" src="/jgonzalvo/files/listviewagrupado.gif" /&gt; 
&lt;p&gt;Estoy diseñando un formulario para administrar los informes que tiene instalados mi aplicación y uso esta característica para separar los informes que hacen referencia a Empleados, Clientes, etc. El problema es que en Windows 2000, que usa la versión 5.0 de Comctl32.dll, la lista aparece obviamente, sin agrupar.&lt;br /&gt;La solución que se me ha ocurrido es añadir en este caso una columna con el nombre del grupo. Esta columna sólo se añadirá si la capacidad de agrupar no está disponible.&lt;/p&gt;
&lt;p&gt;A continuación incluyo el código de una función que devuelve si esta característica está disponible o no.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
[DllImport(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"shell32.dll"&lt;/span&gt;)]
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;extern&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; DllGetVersion(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ref&lt;/span&gt; DLLVERSIONINFO2 pdvi);

[StructLayout(LayoutKind.Sequential)]
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;struct&lt;/span&gt; DLLVERSIONINFO
{
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; cbSize;
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; dwMajorVersion;
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; dwMinorVersion;
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; dwBuildNumber;
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; dwPlatformID;
}

[StructLayout(LayoutKind.Sequential)]
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;struct&lt;/span&gt; DLLVERSIONINFO2
{
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; DLLVERSIONINFO info1;
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; dwFlags;
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; ullVersion;
}

&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt;? listViewGroupsAvailable &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;;

&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt; AreListViewGroupsAvailable()
{
 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (listViewGroupsAvailable == &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;)
 {
  DLLVERSIONINFO2 versionInfo &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; HelperClass.DLLVERSIONINFO2();
  versionInfo.info1.cbSize &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; System.Runtime.InteropServices.Marshal.SizeOf(versionInfo.info1);
  &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (DllGetVersion(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;ref&lt;/span&gt; versionInfo) == 0)
  {
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt; (versionInfo.info1.dwMajorVersion &amp;lt; 6)
    listViewGroupsAvailable &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;false&lt;/span&gt;;
   &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt;
    listViewGroupsAvailable &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;;
  }
  &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt;
  {
   &lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;// TODO: Log that DllGetVersion fails&lt;/span&gt;
   listViewGroupsAvailable &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;false&lt;/span&gt;;
  }
 }       

 &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; (&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt;)listViewGroupsAvailable;
}
&lt;/span&gt;&lt;/pre&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1726.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>A partir de la versión 6.0 de la librería Common Controls (Comctl32.dll), el listview permite, en la vista 'detalles', agrupar los elementos.</p>
<p>Afortunadamente, si la versión de Comctl32.dll disponible es anterior a la 6.0 e intentamos agrupar los elementos, no se produce ningún error, simplemente se ignora.</p><img style="FLOAT: right" src="/jgonzalvo/files/listviewagrupado.gif" /> 
<p>Estoy diseñando un formulario para administrar los informes que tiene instalados mi aplicación y uso esta característica para separar los informes que hacen referencia a Empleados, Clientes, etc. El problema es que en Windows 2000, que usa la versión 5.0 de Comctl32.dll, la lista aparece obviamente, sin agrupar.<br />La solución que se me ha ocurrido es añadir en este caso una columna con el nombre del grupo. Esta columna sólo se añadirá si la capacidad de agrupar no está disponible.</p>
<p>A continuación incluyo el código de una función que devuelve si esta característica está disponible o no.</p>
<p></p><pre><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
[DllImport(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"shell32.dll"</span>)]
<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">static</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">extern</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> DllGetVersion(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ref</span> DLLVERSIONINFO2 pdvi);

[StructLayout(LayoutKind.Sequential)]
<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">struct</span> DLLVERSIONINFO
{
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> cbSize;
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> dwMajorVersion;
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> dwMinorVersion;
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> dwBuildNumber;
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> dwPlatformID;
}

[StructLayout(LayoutKind.Sequential)]
<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">struct</span> DLLVERSIONINFO2
{
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> DLLVERSIONINFO info1;
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> dwFlags;
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">int</span> ullVersion;
}

<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">static</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">bool</span>? listViewGroupsAvailable <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>;

<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">static</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">bool</span> AreListViewGroupsAvailable()
{
 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (listViewGroupsAvailable == <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>)
 {
  DLLVERSIONINFO2 versionInfo <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> HelperClass.DLLVERSIONINFO2();
  versionInfo.info1.cbSize <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> System.Runtime.InteropServices.Marshal.SizeOf(versionInfo.info1);
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (DllGetVersion(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">ref</span> versionInfo) == 0)
  {
   <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span> (versionInfo.info1.dwMajorVersion &lt; 6)
    listViewGroupsAvailable <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">false</span>;
   <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">else</span>
    listViewGroupsAvailable <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>;
  }
  <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">else</span>
  {
   <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">// TODO: Log that DllGetVersion fails</span>
   listViewGroupsAvailable <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">false</span>;
  }
 }       

 <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">bool</span>)listViewGroupsAvailable;
}
</span></pre><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1726.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Bug en PrintPreviewDialog</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/16/1516.aspx</link><pubDate>Mon, 16 May 2005 20:53:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/16/1516.aspx</guid><description>&lt;p&gt;Me he tropezado con otro bug en VS.NET 2005 beta2; esta vez en el componenter &lt;em&gt;PrintPreviewDialog&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Los síntomas del error son que cuando se llama al método &lt;em&gt;ShowDialog()&lt;/em&gt;, tanto la ventana de previsualización como la ventana de la aplicación que hace la llamada pierden el foco y otra ventana de las que tengamos abiertas se pone en primer plano. &lt;/p&gt;
&lt;p&gt;Tras comprobar que el error no estaba dado de alta en &lt;a href="http://msdn.microsoft.com/feedback"&gt;msdn.microsoft.com/feedback&lt;/a&gt;, puse un mensaje en los &lt;a href="http://msdn.microsoft.com/subscriptions/managednewsgroups/list.aspx"&gt;managed newsgroups &lt;/a&gt;de msdn y me confirmaron que está dado de alta en la base de datos interna de Microsoft, con lo que estará solucionado para la RTM.&lt;br /&gt; &lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1516.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Me he tropezado con otro bug en VS.NET 2005 beta2; esta vez en el componenter <em>PrintPreviewDialog</em>. </p>
<p>Los síntomas del error son que cuando se llama al método <em>ShowDialog()</em>, tanto la ventana de previsualización como la ventana de la aplicación que hace la llamada pierden el foco y otra ventana de las que tengamos abiertas se pone en primer plano. </p>
<p>Tras comprobar que el error no estaba dado de alta en <a href="http://msdn.microsoft.com/feedback">msdn.microsoft.com/feedback</a>, puse un mensaje en los <a href="http://msdn.microsoft.com/subscriptions/managednewsgroups/list.aspx">managed newsgroups </a>de msdn y me confirmaron que está dado de alta en la base de datos interna de Microsoft, con lo que estará solucionado para la RTM.<br /> </p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1516.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>ConfigurationSettings obsolete en la beta2</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/05/1459.aspx</link><pubDate>Thu, 05 May 2005 08:23:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/05/1459.aspx</guid><description>&lt;p&gt;Sigo con los cambios que estoy teniendo que hacer para pasar de la beta1 a la beta2 de VS.NET 2005. En esta ocasión se trata de &lt;em&gt;ConfigurationSettings&lt;/em&gt; que está marcada como 'obsolete' y hay que sustituirla por &lt;em&gt;ConfigurationManager&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Para poder utilizarla hay que tener en cuenta que tendremos que añadir a nuestro proyecto la referencia a &lt;em&gt;System.Configuration&lt;/em&gt;. Con &lt;em&gt;ConfigurationSettings&lt;/em&gt; no era necesario.&lt;/p&gt;
&lt;p&gt;También se sustituye el método &lt;em&gt;GetConfig&lt;/em&gt; por &lt;em&gt;GetSection&lt;/em&gt;.&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1459.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Sigo con los cambios que estoy teniendo que hacer para pasar de la beta1 a la beta2 de VS.NET 2005. En esta ocasión se trata de <em>ConfigurationSettings</em> que está marcada como 'obsolete' y hay que sustituirla por <em>ConfigurationManager</em>. </p>
<p>Para poder utilizarla hay que tener en cuenta que tendremos que añadir a nuestro proyecto la referencia a <em>System.Configuration</em>. Con <em>ConfigurationSettings</em> no era necesario.</p>
<p>También se sustituye el método <em>GetConfig</em> por <em>GetSection</em>.</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1459.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Bug en ToolStripContainer</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/03/1445.aspx</link><pubDate>Tue, 03 May 2005 21:37:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/03/1445.aspx</guid><description>&lt;p&gt;Hay un bug en el nuevo control &lt;em&gt;ToolStripContainer&lt;/em&gt; que lo hace inservible hasta que sea corregido.&lt;/p&gt;
&lt;p&gt;El problema se manifiesta si tenemos un &lt;em&gt;GroupBox&lt;/em&gt; en el &lt;em&gt;ContentPanel&lt;/em&gt; y tiene la propiedad Anchor por ejemplo a&lt;em&gt; Letf, Top y Right&lt;/em&gt;. Al abrir y cerrar el diseñador o al ejecutar la aplicación, el tamaño y posición del &lt;em&gt;GroupBox&lt;/em&gt; toma valores extremos.&lt;/p&gt;
&lt;p&gt;Parece que alguien ya ha informado del error en &lt;a href="http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=b88b3c76-5caa-48c0-8692-36896261cd90"&gt;MSDN Product Feedback&lt;/a&gt;.&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1445.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Hay un bug en el nuevo control <em>ToolStripContainer</em> que lo hace inservible hasta que sea corregido.</p>
<p>El problema se manifiesta si tenemos un <em>GroupBox</em> en el <em>ContentPanel</em> y tiene la propiedad Anchor por ejemplo a<em> Letf, Top y Right</em>. Al abrir y cerrar el diseñador o al ejecutar la aplicación, el tamaño y posición del <em>GroupBox</em> toma valores extremos.</p>
<p>Parece que alguien ya ha informado del error en <a href="http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=b88b3c76-5caa-48c0-8692-36896261cd90">MSDN Product Feedback</a>.</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1445.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Visual Studio.NET 2005: de beta1 a beta2</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/03/1442.aspx</link><pubDate>Tue, 03 May 2005 11:09:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/05/03/1442.aspx</guid><description>&lt;p&gt;Tras instalar la beta2 de Visual Studio 2005 he cargado el proyecto en el que he estado trabajando desde que salió la beta1. He cruzado los dedos y he pulsado Control+Mays+B:&lt;/p&gt;
&lt;p&gt;Casi 100 errores y más de 300 warnings. Sin embargo, no es tan grave como parece. Estas son algunas de las cosas que generaban la mayor parte de alarmas:&lt;/p&gt;
&lt;p&gt;- La clase ReadOnlyCollection&lt;t&gt; ahora está en System.Collections.ObjectModel.&lt;br /&gt;- La propiedad AutoScaleBaseSize de los Forms pasa a llamarse AutoScaleDimensions&lt;br /&gt;- Los controles RaftingContainers desaparecen en favor de un nuevo control llamado ToolStripContainer&lt;br /&gt;- Algunos cambios en las propiedades de los ToolStrip&lt;br /&gt;- Otros cambios en ConfigurationSettings&lt;/t&gt;&lt;/p&gt;
&lt;p&gt;Tal como esperaba la mayor parte de los cambios están en la parte de Windows Forms, que es la que he ido dejando para el final.&lt;/p&gt;
&lt;p&gt;Corregir todos estos problemas es muy sencillo en la mayor parte de los casos, ya que el texto de los warnings es muy descriptivo. Te informa que la tal o cual clase/propiedad está obsoleta y cuál debes utilizar en su lugar. &lt;/p&gt;
&lt;p&gt;Otra cosa que parece que se ha arreglado es el consumo desmesurado de memoria de la beta1. Después de estar trabajando con el IDE unas horas, no era raro ver que Visual Studio tenía más de 500 Mbytes asignados y subiendo.&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1442.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Tras instalar la beta2 de Visual Studio 2005 he cargado el proyecto en el que he estado trabajando desde que salió la beta1. He cruzado los dedos y he pulsado Control+Mays+B:</p>
<p>Casi 100 errores y más de 300 warnings. Sin embargo, no es tan grave como parece. Estas son algunas de las cosas que generaban la mayor parte de alarmas:</p>
<p>- La clase ReadOnlyCollection<t> ahora está en System.Collections.ObjectModel.<br />- La propiedad AutoScaleBaseSize de los Forms pasa a llamarse AutoScaleDimensions<br />- Los controles RaftingContainers desaparecen en favor de un nuevo control llamado ToolStripContainer<br />- Algunos cambios en las propiedades de los ToolStrip<br />- Otros cambios en ConfigurationSettings</t></p>
<p>Tal como esperaba la mayor parte de los cambios están en la parte de Windows Forms, que es la que he ido dejando para el final.</p>
<p>Corregir todos estos problemas es muy sencillo en la mayor parte de los casos, ya que el texto de los warnings es muy descriptivo. Te informa que la tal o cual clase/propiedad está obsoleta y cuál debes utilizar en su lugar. </p>
<p>Otra cosa que parece que se ha arreglado es el consumo desmesurado de memoria de la beta1. Después de estar trabajando con el IDE unas horas, no era raro ver que Visual Studio tenía más de 500 Mbytes asignados y subiendo.</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1442.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Jose Gonzalvo</dc:creator><title>Microsoft ISV Empower Program</title><link>http://blogs.clearscreen.com/jgonzalvo/archive/2005/04/28/1434.aspx</link><pubDate>Thu, 28 Apr 2005 20:58:00 GMT</pubDate><guid>http://blogs.clearscreen.com/jgonzalvo/archive/2005/04/28/1434.aspx</guid><description>&lt;p&gt;Hoy he recibido el kit de bienvenida de &lt;a href="http://www.microsoft.com/Spanish/msdn/Spain/isv/empower/default.asp"&gt;Microsoft ISV Empower Program&lt;/a&gt;. Si estás desarrollando una aplicación comercial, como es mi caso, es una oportunidad de oro afiliarte a este programa. &lt;/p&gt;
&lt;p&gt;Por 320 € recibes un kit de bienvenida con prácticamente todos los productos de Microsoft en un montón de DVD's, acompañados de un práctico maletín para almacenarlos (periódicamente los van actualizando), una subscripcion MDSN Universal, soporte preferente en los newsgroups, etc. Todos los productos con licencias para uso interno, desarrollo y pruebas.&lt;/p&gt;
&lt;p&gt;Puedes renovar el programa hasta 2 años. Toda la información está disponible &lt;a href="http://www.microsoft.com/Spanish/msdn/Spain/isv/empower/default.asp"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1434.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>Hoy he recibido el kit de bienvenida de <a href="http://www.microsoft.com/Spanish/msdn/Spain/isv/empower/default.asp">Microsoft ISV Empower Program</a>. Si estás desarrollando una aplicación comercial, como es mi caso, es una oportunidad de oro afiliarte a este programa. </p>
<p>Por 320 € recibes un kit de bienvenida con prácticamente todos los productos de Microsoft en un montón de DVD's, acompañados de un práctico maletín para almacenarlos (periódicamente los van actualizando), una subscripcion MDSN Universal, soporte preferente en los newsgroups, etc. Todos los productos con licencias para uso interno, desarrollo y pruebas.</p>
<p>Puedes renovar el programa hasta 2 años. Toda la información está disponible <a href="http://www.microsoft.com/Spanish/msdn/Spain/isv/empower/default.asp">aquí</a>.</p><img src ="http://blogs.clearscreen.com/jgonzalvo/aggbug/1434.aspx" width = "1" height = "1" /></body></item></channel></rss>