Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#1781
Cita de: DSREY en  5 Septiembre 2017, 03:54 AM
no se si revisaste un poco mas abajo el tema, ya detalle todo...

-_-

Mi comentario lo escribí ayer (antes de que tú escribieras ese comentario con la factura) pero lo he publicado hace un rato. Lo siento. De odas formas eso no cambia las cosas... es importante dar la información necesaria lo primero de todo al formular una duda sobre programación :-/

Es bastante tarde aquí, mañana veré si puedo ayudar en algo. Un saludo.
#1782
.NET (C#, VB.NET, ASP) / Re: Calcular porcentaje
5 Septiembre 2017, 04:08 AM
Cita de: Meta en 22 Agosto 2017, 01:38 AM
Código (csharp) [Seleccionar]
progressBar_barrra_progreso.Value = 0; // Resetear progressBar a 0.

Lo correcto, tanto por estética del código fuente, como por rendimiento y seguridad del producto final, sería utilizar el método ProgressBar.Increment:

Código (csharp) [Seleccionar]
progressBar1.Increment(1);

De esta forma evitarías futuros posibles errores humanos como sería por ejemplo:
Código (csharp) [Seleccionar]
progressBar1.Maximum = 100;
progressBar1.Value = 101;

...Este código de arriba provocaría una excepción de tipo ArgumentOutOfRangeException, mientras que si usases el método ProgressBar.Increment podrías rebasar el valor máximo por accidente sin provocar ninguna excepción.

Ejemplo demostrativo:
Código (csharp) [Seleccionar]
progressBar1.Maximum = 100;
for (int x = 0; x <= 999; x++) {
progressBar1.Increment(1);
}





Cita de: Meta en 22 Agosto 2017, 01:38 AM
Código (csharp) [Seleccionar]
Application.DoEvents();

No sé si habrás tenido la oportunidad de leer lo que programadores profesionales siempre han opinado sobre el método Application.DoEvents, pero todas las opiniones escritas en la World Wide Web se podrian resumir brevemente en las siguientes palabras: "Application.DoEvents() is EVIL, do not use it." - y quien dijo eso tuvo mucha razón. No debes utilizar dicho método a menos que seas consciente de lo que hace y como lo hace intérnamente, sé que es una via de escape facil para solventar la respuesta o responsiveness de la interfáz de usuario, pero es que esa metodología conlleva muchas desventajas, y a día de hoy es prehistórica. Lo único que te debería importar es lo siguiente: al lo único que consigues llamando a ese método de forma continua dentro de un búcle, es disminuir el rendimiento (la velocidad) de tu programa y el algoritmo de copiado, y no lo estás disminuyendo un poco, sino MUCHO ( puedes hacer la prueba por ti mismo con y sin llamar a Application.DoEvents() ).

( Aquí te dejo una opinión del gran gurú Hans Passant: https://stackoverflow.com/a/5183623/1248295 )

En lugar de utilizar el método Application.DoEvents(), puedes utilizar esto otro método:
...De esta manera, las llamadas continuas a Application.DoEvents() se disminuirán en consideración, y con ello aumentará bastante el rendimiento de tus algoritmos donde tengas que llamar a Application.DoEvents(). Y por supuesto al usar esta alternativa/mejora, la interfáz de usuario seguirá siendo responsiva a los eventos de notificación de Click.

...Pero mucho mejor y más correcto que utilizar Application.DoEvents(), que como ya dije ES UNA METODOLOGÍA PREHISTÓRICA (aparte de peligrosa), sería recurrir a los instrumentos que .NET Framework nos proporciona hoy en día, me refiero a la programación asincrónica, ni más, ni menos. Si necesitamos interactuar con los elementos de control de una UI, entonces lo más adecuado sería utilizar el componente BackgroundWorker, puesto que está precisamente diseñado para llevar a cabo la interactuactuación con la UI, pero podemos utilizar la classe Task, o Thread. También es importante utilizar los métodos Control.BeginInvoke / Control.Invoke según las circunstancias. Hay varias maneras de llevarlo a cabo, depende del escenario / circunstancias.

Por último, te muestro un pequeño ejemplo gráfico:

       

PD: Ahora que lo pienso mejor, debería haber escrito "responive UI" en lugar de "app" en la imagen, pero bueh. Si, ya sé que me preocupo por tonterías, soy así de exquisito o perfeccionista... según se mire xD.

Saludos.
#1783
.NET (C#, VB.NET, ASP) / Re: HTML to PDF/TIFF
5 Septiembre 2017, 04:04 AM
Hola. Open-Source no conozco ninguna, pero las librerías comerciales de SautinSoft funcionan muy bien:

HTML > PDF:
PDF Metamorphosis .Net

PDF > TIFF
PDF Focus .Net

PD: ...Siempre puedes tratar de buscar la "medicina" por la World Wide Web.

Saludos.
#1784
Cita de: SrTrp en 12 Agosto 2017, 23:44 PMcomo podría evitar que salieran los <tr y td que solo me estableciera los numeros.

Hola.

Lee:

Un ejemplo que podrías adaptar a tus necesidades:
Código (vbnet) [Seleccionar]
Dim html As XElement =
   <html>
       <body>
           <table>
               <tr>
                   <th>Column</th>
               </tr>
               <tr>
                   <td>17788481</td>
                   <td>5955996</td>
                   <td>58585</td>
               </tr>
           </table>
       </body>
   </html>

Using wb As New WebBrowser

   wb.ScriptErrorsSuppressed = True
   wb.DocumentText = ""
   wb.Document.OpenNew(replaceInHistory:=True)
   wb.Document.Write(html.ToString())

   Dim elements As HtmlElementCollection = wb.Document.GetElementsByTagName("TD")
   For Each el As HtmlElement In elements
       Debug.WriteLine(el.InnerText)
   Next

End Using


PD: Para parsear documentos HTML en .NET, conviene utilizar la librería de terceros (y gratuita) HtmlAgilityPack.

Saludos
#1785
Hola.

El algoritmo es correcto y funciona. Probablemente el fallo lo tengas en esta instrucción:
Citar
Código (csharp) [Seleccionar]
if (dgv.Columns[dgv.CurrentCell.ColumnIndex].Name == "cantidadContada")

...Fíjate bien en que ahí estás evaluando la propiedad Name de la columna (por defecto: 'Column1', 'Column2', etc), no la propiedad DataPropertyName.

Un modo rápido de resolverlo:
Código (csharp) [Seleccionar]
if (dgv.Columns[dgv.CurrentCell.ColumnIndex].DataPropertyName == "cantidadContada")

Saludos.

#1786
Hola.

El código que has mostrado es el código auto generado por Visual Studio (donde se declara cada control que arrastras a la interfáz de usuari, y los valores de cada propiedad modificada).

Habría que poder analizar en profundidad el problema que describes para intentar determinar con certeza que es lo que ha ocurrido... por que a simple vista es algo inusual. Solo se me ocurre que quizás tu tengas una versión antigua de Visual Studio y tu amiga haya utilizado una versión más reciente para desarrollar el proyecto, y entonces al migrar el proyecto de una versión reciente a una mas antigua, te ha ido mal. No lo puedo saber, es solo una hipótesis. De todas formas Visual Studio tiene un sofisticado sistema de actualización de proyectos para migraciones...pero eso funciona bien solo para actualizar de versiones antiguas a más nuevas, no sé como irá para los downgrades del formato del archivo de solución (.sln) xD.

Por si te sirve de ayuda para el futuro, podrías probar a intentar "forzar" a que el diseñador de Forms reconozca la clase como un Form, añadiendo los siguientes atributos de clase:

Form1.vb  /  Form_Produc_Modi.vb:
Código (vbnet) [Seleccionar]
<DesignerCategory("Form")>
<DesignTimeVisible(True)>
<ToolboxItemFilter("System.Windows.Forms", ToolboxItemFilterType.Require)>
Public Class Form_Produc_Modi
' ...
End Class


Form1.Designer.vb  /  Form_Produc_Modi.Designer.vb:
Código (vbnet) [Seleccionar]
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
<DesignerCategory("Form")>
<DesignTimeVisible(True)>
<ToolboxItemFilter("System.Windows.Forms", ToolboxItemFilterType.Require)>
Partial Class Form_Produc_Modi : Inherits Form
' ...
End Class


PD: La clase de atributo o metadato ToolboxItemFilter en un principio no tendría ningún efecto, ya que sirve para restringir la tecnología del componente en el ToolBox de VS, pero como lo que describes es un problema extraño, casi yo diría aislado, pues lo he preferido añadir por si acaso implicase algún posible beneficio.

Saludos.
#1787
En el caso de que seas el dueño de ese negocio, entonces yo en tu lugar invertiría 20€ o 30€ en que un programador freelance te desarrolle un parser/web-crawler, y tendrías el problema resuelto en 1 día o menos (dependiendo de las ganas del programador), ya que por lo general es algo facil. En el caso de que seas un empleado, pues siempre puedes explicarle el problema al jefe y que éste apoquine esos 20€ o 30€ para salir ganando y mejorar el rendimiento del empleado y de su negocio.

De lo contrario, lo único que te queda sería aprender un lenguaje de programación como ya te han sugerido. Yo te recomendaría VB.NET (ya que has publicado la pregunta en el foro de VB6), no necesitas migrar a otros lenguajes como Python, en .NET puedes hacerlo de forma sencilla a la par que eficiente mediante librerías como HtmlAgilityPack en cuestión de minutos/horas, o en su defecto aBot. En VB6 no sabría decirte.

Saludos.
#1788
Hola.

Cita de: |  Sota  | en 24 Agosto 2017, 06:52 AMCodejo~1.ocx Error VB en Windows 7

Ese nombre de archivo hace referencia a alguno de los componentes ActiveX de la compañia Codejock. Siempre se han utilizado bastante para el diseño de interfaces de usuario en VB6.


En teoría deberías poder solucionar el problema descargando el paquete de controles ActiveX (la misma versión utilizada por tu proyecto de VB6 o una superior), y registrando en el sistema operativo cada componente OCX / dll.

PD: En Google puedes encontrar una infinidad de versiones del producto, tanto las versiones craqueadas, como las trial/demo.

Saludos.
#1789
.NET (C#, VB.NET, ASP) / Re: Crear Linea de Tiempo
5 Septiembre 2017, 03:54 AM
Hola.

Cita de: Leiray en 21 Agosto 2017, 03:05 AMEspero que alguien me pueda ayudar.

No has mostrado tus progresos, por eso me pregunto a mi mimo: ¿qué esperas exactamente, que te entregemos el código de un user-control que haga lo que quieres, y gratis?. Para eso ya está Google, donde podemos encontrar varios controles de usuario disponibles que te podrían servir:


...Yo personálmente te sugiero utilizar un Framework de terceros profesional, como Telerik UI for WinForms / Telerik UI for WPF, DevComponents DotNetBar, o DevExpress. Los 3 proveen un control de tipo 'TimeLine'. Da mucha pereza intentar hacerlo por uno mismo... la verdad xD.

Saludos.
#1790
.NET (C#, VB.NET, ASP) / Re: Limpiar textBox en C#
5 Septiembre 2017, 03:52 AM
Hola.

1. El evento TextBox.KeyDown, como su nombre indica por si mismo es un evento de teclado, no del ratón. Éste se dispara cuando presionas una tecla (para ser exactos: al momento de pulsarla, no al soltarla).

2. Lo que quieres hacer es una muy mala idea, aparte de ser algo intrusiva. La razón es simple: al intentar editar el texto no podrás seleccionar parte de éste, pues siempre que hagas un click, el texto / la selección se borraría.

Un ejemplo gráfico de lo que acabo de mencionar:





Una vez aclarado estos inconvenientes que he explicado aquí arriba, como respuesta a tu pregunta: una solución sería controlar el evento TextBox.Click

Código (csharp) [Seleccionar]
private void textBox_Click(object sender, KeyEventArgs e) {
   DirectCast(sender, TextBox).Clear();
}


Saludos.