-
Posts
128 -
Joined
-
Last visited
-
Days Won
4
Everything posted by susodicho
-
:mmm: Prueba bajando este archivo, extraes la única DLL que contiene y le cambias el nombre de lua5.1.dll a lualib5.dll. Después tendrías que mover esa DLL a la carpeta del programa. No tengo idea si funciona :huasonto:
-
ayuda con impresiones en VB
susodicho replied to Variator's topic in Aplicaciones de Escritorio & Scripts PHP
:mmm: Como no entendí muy bien lo que hace tu aplicación, hice un pequeño programa de ejemplo que imprime un documento de varias páginas. En todo caso, la llamada al método Print la tienes dentro de un ciclo For, eso es mala idea. Si quieres imprimir un documento de varias páginas y tienes que repetir el proceso pero cambiando el número de folio, entonces tienes que hacer que el manejador del evento PrintPage vuelva a empezar de la primera página e incremente el número de folio, y así hasta que no queden más folios (o lo que sea. Como dije, no entendí bien lo que hace tu aplicación :huasonto: ). [hide] La interfaz gráfica del programa de ejemplo que hice sería así: Contiene los siguientes controles (de arriba hacia abajo): NumericUpDownLabelProgressBarButtonLo único que hay que hacer es seleccionar la cantidad de páginas que quieres que tenga el documento y hacer clic en el botón que dice "Imprimir...". Al imprimir un documento de varias páginas, se recomienda crear una clase derivada de PrintDocument, y en ésta se guarda toda la información de estado de la impresión en curso. Tienes que tener en cuenta que el manejador del evento PrintPage debe imprimir sólo 1 página a la vez, así que cualquier cosa que no alcance a imprimirse en la página actual debe quedar pendiente para la siguiente página, y toda la información de lo que quede pendiente se guarda en la instancia de dicha clase derivada (esta instancia se pasa como parámetro sender al manejador del evento PrintPage). En este ejemplo, la clase derivada de PrintDocument se llama TrabajoImpresion. Para simplificar las cosas, la única información que se guarda es la cantidad de páginas que se han impreso hasta el momento y la cantidad total de páginas que se van a imprimir (se accede a esta información a través de las propiedades PaginasImpresas y PaginasEnTotal, respectivamente). Imports System.Drawing.Printing Imports System.Windows.Forms Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load lblProgreso.Text = "" End Sub Private Sub btnImprimir_Click(sender As System.Object, e As System.EventArgs) Handles btnImprimir.Click Dim doc As PrintDocument Dim CustomPageSize1 As New PaperSize("Tamaño de papel personalizado", 280, 300) doc = New TrabajoImpresion(CInt(NumericUpDown1.Value)) doc.DefaultPageSettings.PaperSize = CustomPageSize1 'Asignar manualmente el manejador de evento ' AddHandler doc.PrintPage, AddressOf doc_PrintPage 'Asociar manualmente el documento al "PrintDialog" ' PrintDialog1.Document = doc If PrintDialog1.ShowDialog() = DialogResult.OK Then ProgressBar1.Value = 0 ProgressBar1.Maximum = CInt(NumericUpDown1.Value) lblProgreso.Text = "Imprimiendo..." doc.Print() End If End Sub Private Sub doc_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Dim Fuente As New Font("Arial Narrow", 15) Dim impresion As TrabajoImpresion = CType(sender, TrabajoImpresion) impresion.PaginasImpresas += 1 'Imprimir contenido de la página ' e.Graphics.DrawString("Esta es la página " & CStr(impresion.PaginasImpresas) & " que se", Fuente, Brushes.Crimson, 5, 180) e.Graphics.DrawString("imprime correctamente", Fuente, Brushes.Crimson, 5, 210) System.Threading.Thread.Sleep(250) 'ELIMINAR ESTA LÍNEA ' 'Verificar si quedan más páginas por imprimir ' e.HasMorePages = (impresion.PaginasImpresas < impresion.PaginasEnTotal) 'Realizar cualquier tipo de actualización a controles que muestren el progreso de la impresión ' lblProgreso.Text = String.Format("{0} de {1}", impresion.PaginasImpresas, impresion.PaginasEnTotal) ProgressBar1.Value = impresion.PaginasImpresas Application.DoEvents() End Sub End Class Public Class TrabajoImpresion Inherits PrintDocument Private _pagTotal As Integer Private _pagImpresas As Integer Public Sub New(ByVal TotalPaginas As Integer) PaginasEnTotal = TotalPaginas PaginasImpresas = 0 End Sub Public Property PaginasEnTotal As Integer Get Return _pagTotal End Get Set(value As Integer) _pagTotal = value End Set End Property Public Property PaginasImpresas As Integer Get Return _pagImpresas End Get Set(value As Integer) _pagImpresas = value End Set End Property End ClassSi usas un PrintDialog, no tienes que asignar nada a la propiedad Document, ya que esto se hace manualmente en tiempo de ejecución (recuerda que se usa una clase derivada de PrintDocument ;) ). Si pruebas el programa usando la impresora virtual Microsoft XPS Document Writer y seleccionando 5 páginas, obtienes un documento como este: En tu caso, tienes que modificar la clase TrabajoImpresion de tal forma que el constructor acepte todos los datos relevantes para realizar la impresión. Quizás necesites pasar un arreglo con varios números de RUT, folio inicial, cantidad de folios, incremento de folio, cantidad de líneas por página,... eso lo sabes tú. Lo siguiente es opcional (ignora esto si no te manejas mucho en VB.NET) Por si acaso, el código de arriba funciona, pero no es la forma ideal de hacerlo. Lo ideal es que la clase TrabajoImpresion realice la impresión en un método (en este caso lo llamo ImprimirPagina) y que toda la información de estado se guarde en variables de instancia privadas y sólo se tenga acceso a información que sirva para saber el progreso de la impresión en curso a través de propiedades de sólo lectura (por ejemplo, cantidad de páginas impresas hasta el momento). Así que, en rigor, el manejador del evento PrintPage debería verse más parecido a esto: Private Sub doc_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Dim impresion As TrabajoImpresion = CType(sender, TrabajoImpresion) 'Imprimir y verificar si quedan más páginas por imprimir ' e.HasMorePages = impresion.ImprimirPagina(e.Graphics) 'Realizar cualquier tipo de actualización a controles que muestren el progreso de la impresión ' lblProgreso.Text = String.Format("{0} de {1}", impresion.PaginasImpresas, impresion.PaginasEnTotal) ProgressBar1.Value = impresion.PaginasImpresas Application.DoEvents() End SubObviamente, para que esto funcione, hay que hacer varias modificaciones a la clase TrabajoImpresion ;) Además, todos los objetos de tipo Font, Brush, etc. deberían ser variables de instancia privadas y deberían instanciarse en el constructor, y una vez que finalice la impresión, se liberan los recursos usados por éstas llamando al método Dispose para cada una de ellas. Si quieres hacer todo esto, queda como ejercicio... ;) [/hide] :huasonto: -
Para empezar, nunca me ha gustado mucho Visual Basic, estoy más acostumbrado a C#. Incluso me pareció raro que funcionara la forma: Form1.Show()Eso parece una llamada a un método estático, o sea, la parte Form1 se interpretaría como el nombre de una clase, y el Show() sería la llamada a un método que no requiere una instancia para llamarse. Sin embargo, no es eso lo que ocurre, Form1 es realmente una instancia de la clase Form1 :mmm: .Así que el código funciona porque se supone que por cada formulario que hay en un proyecto, hay una instancia de dicho formulario creada "mágicamente" (creo que en ninguna parte del código fuente vas a encontrar estas instancias declaradas explícitamente). Por lo tanto, el hecho que puedas mostrar un formulario sin tener que declarar un objeto previamente, es porque el lenguaje (VB.NET) ofrece un atajo para ello. El atajo en cuestión son las instancias predeterminadas. El problema con usar esta característica o "gracia" del lenguaje, es que te puedes mal acostumbrar. De hecho, en C# y otros lenguajes no existen las instancias predeterminadas, y eso puede darte problemas si, por ejemplo, tuvieses que migrar una aplicación VB.NET a otro lenguaje. Por ejemplo, en C#, la forma de hacer esto es: Form1 form1 = new Form1(); form1.Show(); En este caso, Form1 es el nombre de la clase, y form1 es el nombre del objeto (instancia). Por convención, los nombres de tipos se escriben con mayúscula inicial, y los nombres de variables con minúscula. Sin embargo, en VB.NET ni siquiera hay diferencia entre mayúsculas y minúsculas, así que el código resulta aun más confuso. De hecho, la llamada para mostrar el formulario podría escribirse de cualquiera de estas maneras en VB.NET: Form1.Show() form1.Show() FORM1.Show() Así que yo te recomendaría que lo hagas de la forma habitual, es decir, creando una instancia primero y después llamando al método: Dim formulario As New Form1() formulario.Show() Nótese que yo también prefiero poner los paréntesis vacíos cuando no hay parámetros (creo que evita que los métodos se confundan con variables o propiedades). :huasonto:
-
Ayuda para terminar codigo c
susodicho replied to brian69's topic in Aplicaciones de Escritorio & Scripts PHP
No te sugerí usar tabulación porque no siempre va a funcionar. Si hay mucha diferencia en los largos de los nombres de los artículos, no va a funcionar muy bien. Por ejemplo, si hay un artículo llamado "sal" y otro llamado "detergente", la tabulación no te va a dejar el listado muy ordenado... :huasonto: -
Ayuda para terminar codigo c
susodicho replied to brian69's topic in Aplicaciones de Escritorio & Scripts PHP
Porsiaca, este foro siempre ha tenido la posibilidad de subir código fuente (se respeta la indentación, etc.) :huasonto: Si quieres que quede alineado, puedes especificar cuántos caracteres de ancho debe tener la cadena (si la cadena tiene menos caracteres, entonces se rellena con espacios). Por ejemplo: fprintf (fp1,"%-15s %d\n", articulo, valor); en este caso, la cadena va a quedar con 15 caracteres de ancho, y si tiene menos caracteres, se agregarán espacios al final de ésta (a la derecha). Al usar un valor negativo indicas que quieres que el texto quede justificado a la izquierda. Tambien puedes especificar el ancho a través de un parámetro al ...printf. En este caso, esta forma podría ser práctica si el ancho se calcula en tiempo de ejecución (si calculas cuál es el artículo con nombre más largo antes de imprimir la lista de artículos). Ejemplo: fprintf (fp1,"%*s %d\n", -15, articulo, valor); si te fijas, en vez de especificar el ancho en la cadena de formato del fprintf, se pasa como parámetro. El asterisco indica que especificador de ancho se pasa como parámetro. :huasonto: -
:mmm: Intenta usando "\r" al final de la cadena que quieres imprimir y termina el print con una coma. Aquí hay un ejemplo: import time p = 0 while p < 100: print "Process: %d%%\r" % p, time.sleep(0.05) p += 1 print "Done!" + 7*' ' Esto debería funcionar bien en la línea de comandos (en el IDLE creo que no funciona bien).
-
En esta página hay una forma de obtener el día anterior a la fecha actual. Lo probé y funciona bien. Sólo tienes que adecuarlo a tu código (cambiar los nombres de algunas variables). Otra cosa, no sé por qué usas tantas veces @ECHO OFF, basta con que lo escribas una vez al comienzo del archivo y listo.
-
Sugerencias sobre programación OOP (C++)
susodicho replied to FabianAnarco's topic in Miscelánea Informática
Desarrollar aplicaciones con interfaz gráfica (GUI) en C++ es bastante complicado, incluso usando alguna librería para tal efecto (que están pensadas para ocultar la complejidad del API del sistema operativo sobre el que se ejecutan). De hecho, C++ ya es un lenguaje complejo, así que hacer una aplicación GUI en C++ te puede llevar harto tiempo y requiere un buen dominio del lenguaje. No dices qué plataforma usas, pero si la aplicación la vas a desarrollar y ejecutar en Windows, yo te recomendaría que la hagas en C# usando Visual Studio. C# se parece a C++, pero es más sencillo de entender y su orientación a objetos es más simple. Además Visual Studio te ayuda harto en cuanto a la creación de la interfaz gráfica y una importante cantidad de código la genera el entorno de desarrollo, también el IntelliSense ayuda mucho en la codificación. Yo creo que una aplicación desarrollada en C# es mucho más fácil de entender y de mantener que una hecha en C++. En este caso, creo que te convendría hacer una aplicación Windows Form, porque la otra opción, una aplicación WPF, significaría que además tendrías que aprender ciertas peculiaridades de WPF y te podría llevar algo de tiempo dominarlas. Por si acaso, la clase que tendrías que usar en C# para lo que necesitas es SerialPort (en la misma página puedes ver un código de ejemplo). -
Consulta sobre pantalla notebook 14"
susodicho replied to SimonCampos's topic in Soporte PC: Hardware & Software
El problema que habría sería de carácter trigonométrico :tonto: . Una pantalla tiene una relación de aspecto de 16:9 y la otra de 16:10, así que aunque las 2 tienen una diagonal de 14", los anchos y altos son distintos. Suponiendo que ambas sean de exactamente 14", sus dimensiones aproximadas serían de (ancho x alto, expresadas en pulgadas): 12,2 x 6,86 (la de 1366 x 768)11,87 x 7,42 (la de 1280 x 800) :mmm: Si te fijas, la más nueva es más ancha pero a su vez menos alta que la antigua. Por casualidad, ¿mediste las pantallas?. Así que el único detalle podría ser que te queden espacios a los lados y que no podrías ver los 800 pixeles de alto de la pantalla (suponiendo que la de 1280 x 800 calce en el otro notebook). Aunque la pantalla de 1280 x 800 tuviese una diagonal mayor a 14" (14,1" ó 14,2") y coincidieran los anchos de ambas, de todas formas el problema sería el alto (no podrías ver los 800 pixeles verticales porque la pantalla quedaría parcialmente cubierta). -
procedimiento almacenado y mysqldatareader
susodicho replied to bombero_7's topic in Aplicaciones de Escritorio & Scripts PHP
Entonces crea otro método que sirva para establecer los datos de una conexión :tonto: O sea, agrega 3 métodos a tu clase (y quita la propiedad conectar): AbrirConexionCerrarConexionCambiarConexionEste último recibiría como parámetro la dirección del servidor y/o cualquier otra información relevante para establecer la conexión. -
procedimiento almacenado y mysqldatareader
susodicho replied to bombero_7's topic in Aplicaciones de Escritorio & Scripts PHP
Francamente no creo que sea buena idea dar la posibilidad de acceder directamente al objeto que guarda la conexión a la base de datos. El objeto cn es privado, pero al implementar una propiedad que devuelve una referencia al objeto, estás permitiendo que el usuario haga lo que quiera con él. Deberías implementar métodos como te dije antes, y no una propiedad :no: Más encima implementaste el Set que permite que el usuario reemplace la conexión. Eso definitivamente está mal. Se supone que tu clase sirve como una capa de abstracción para una conexión a una base de datos, por lo tanto no puedes dejar que el usuario haga lo que quiera con la conexión. Otra cosa, se supone que el nombre de una propiedad no debería ser un verbo (tú la llamaste conectar). El nombre conectar sería más adecuado para un método. -
procedimiento almacenado y mysqldatareader
susodicho replied to bombero_7's topic in Aplicaciones de Escritorio & Scripts PHP
Intenta hacer los siguientes cambios: Public Function buscar(ByVal rut As String) As MySqlCommand Dim cmd As MySqlCommand = Nothing Try cmd = New MySqlCommand("buscar", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@rut1", rut) Catch ex As Exception MessageBox.Show("Error en comando buscar") End Try Return cmd End FunctionPrivate Sub btnbuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnbuscar.Click Dim cmd As MySqlCommand Dim reader As MySqlDataReader Try cn.Open() cmd = oDatos.buscar(txtrut.Text) reader = cmd.ExecuteReader() While reader.Read() txtnombre.Text = reader("nombre") txtapellido.Text = reader("apellido") End While reader.Close() Catch ex As Exception MessageBox.Show(ex.Message) Finally cn.Close() End Try End Sub :mmm: Supongo que oDatos es un objeto de la clase que hiciste tú, así que posiblemente no tengas acceso a cn desde el método btnbuscar_Click, entonces tendrías agregar (si es que todavía no los tienes) un par de métodos a dicha clase: uno para abrir la conexión a la base de datos y otro para cerrarla. Así que las llamadas cn.Open() y cn.Close() que puse, tendrías que cambiarlas por algo como oDatos.AbrirConexion() y oDatos.CerrarConexion(), respectivamente (o algo similar). -
Visor de imágenes en visual .net
susodicho replied to ExtreemD4t4's topic in Aplicaciones de Escritorio & Scripts PHP
:mmm: [hide] ACLARACIÓN: Por lo que entiendo, tú necesitas que se muestre el formulario de login antes de mostrarse cualquier otro formulario, y una vez que el usuario haya sido validado, recién entonces mostrar el formulario principal. Yo lo hice usando un formulario propio, pero supongo que también debería funcionar con el Formulario de inicio de sesión que se incluye en el Visual Studio. El formulario para iniciar sesión que usé como ejemplo se ve así: Y el código fuente es: Public Class FormLogin Private _LoginExitoso As Boolean = False Friend ReadOnly Property LoginExitoso As Boolean Get Return _LoginExitoso End Get End Property Private Sub btnDentrar_Click(sender As System.Object, e As System.EventArgs) Handles btnDentrar.Click If txtUsuario.Text = "jefe" And txtPassword.Text = "clave" Then _LoginExitoso = True Me.Close() Else txtPassword.Text = "" MessageBox.Show("No te conozco", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub Private Sub btnSalir_Click(sender As System.Object, e As System.EventArgs) Handles btnSalir.Click Me.Close() End Sub End ClassObviamente, tú tienes que hacer una validación de verdad del usuario (la del ejemplo es entera mula :tonto: ). Además deberías hacer que el formulario quede centrado en la pantalla y asignar las propiedades AcceptButton y CancelButton a los respectivos botones del formulario. Para poder elegir qué formulario quieres cargar al momento de iniciar la aplicación, tienes que agregar un módulo a tu proyecto: Proyecto > Agregar módulo...Lo guardas con el nombre que se te antojeEste nuevo módulo debe verse más o menos así: Module ModuloInicial <STAThread()> Friend Sub Main() Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Dim ingresar As Boolean = True If System.IO.File.Exists("login.txt") Then Dim frm As New FormLogin() Application.Run(frm) ingresar = frm.LoginExitoso End If If ingresar Then Application.Run(New Form1()) End If End Sub End ModuleOjo, este es un ejemplo burdo, se basa en la existencia de un archivo para saber si hay que mostrar el formulario de inicio de sesión (¡no se te ocurra hacerlo así! :tonto: ). Ahora necesitas indicarle a Visual Studio que no quieres usar un formulario principal, sino que quieres especificar un punto de entrada a tu aplicación. Para eso tienes que modificar las propiedades de tu proyecto: en el menú Proyecto selecciona Propiedades de <nombre_de_tu_proyecto>...: Selecciona la pestaña AplicaciónDesactiva la casilla que dice Habilitar marco de trabajo de la aplicaciónAl descativar esta casilla, la lista desplegable Formulario de inicio pasa a llamarse Objeto de inicio, en ésta selecciona Sub Main con esto logras que tu aplicación ejecute el Sub Main que está en el módulo que agregaste previamente (y éste es el que se encarga de decidir qué formulario se carga al inicio de la aplicación). [/hide] -
Visor de imágenes en visual .net
susodicho replied to ExtreemD4t4's topic in Aplicaciones de Escritorio & Scripts PHP
[hide] Si usas un DataGridView para mostrar los resultados de una búsqueda, puedes permitir que el usuario modifique los valores de las casillas en el propio DataGridView y, de ser necesario, puedes especificar que algunas columnas sean de sólo lectura. También deberías desactivar la opción de agregar filas a la tabla. La idea es más o menos así: En el siguiente ejemplo en ninguna parte se llama al método LlenarDataGridView, así que tienes que agregar esa parte. Por si acaso, a LlenarDataGridView le pasas la cadena con la consulta SQL que quieres usar para llenar el DataGridView, pero si por razones de seguridad necesitas usar un SqlCommand en vez de una cadena, entonces puedes usar esta sobrecarga del constructor de SqlDataAdapter y hacer las respectivas modificaciones a LlenarDataGridView. Private fuenteDatos As New BindingSource() Private adaptadorDatos As New SqlDataAdapter() Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load DataGridView1.DataSource = fuenteDatos btnGuardar.Enabled = False End Sub Private Sub LlenarDataGridView(ByVal consulta As String) Try cn.Open() adaptadorDatos = New SqlDataAdapter(consulta, cn) Dim cmdBuilder As New SqlCommandBuilder(adaptadorDatos) Dim tabla As New DataTable() adaptadorDatos.Fill(tabla) fuenteDatos.DataSource = tabla DataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader) Catch exp As Exception MessageBox.Show(exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally cn.Close() End Try End Sub Private Sub btnGuardar_Click(sender As System.Object, e As System.EventArgs) Handles btnGuardar.Click If Not fuenteDatos.DataSource Is Nothing Then adaptadorDatos.Update(CType(fuenteDatos.DataSource, DataTable)) End If End Sub Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click Me.Close() End Sub Private Sub DataGridView1_CellValueChanged(sender As System.Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged btnGuardar.Enabled = True End SubSe supone que la variable cn es de tipo SqlConnection. Quizás también te interese el evento CellValidating. [/hide] -
Visor de imágenes en visual .net
susodicho replied to ExtreemD4t4's topic in Aplicaciones de Escritorio & Scripts PHP
:mmm: ¿Estás seguro que es una aplicación web? Parece aplicación de escritorio. Por lo que veo, te basas en el nombre de archivo para saber si la imagen ya está o no. No sé si eso será buena idea, aunque depende de tu aplicación. En un disco podrías encontrar varios archivos con nombre "Sin título.jpg" en distintas carpetas, pero puede que todos sean diferentes (no son la misma imagen). Así que este detalle quizás te podría servir para asignarle un identificador a cada imagen, o sea, podrías usar un hash para saber si una imagen ya está en la carpeta de almacenamiento (y como nombre de archivo podrías usar el propio hash o algún GUID). -
impresion con visual basic net
susodicho replied to bombero_7's topic in Aplicaciones de Escritorio & Scripts PHP
Puedes especificar dimensiones usando, por ejemplo, RectangleF: e.Graphics.DrawImage(Image.FromFile(imagen), New RectangleF(10, 10, 512, 384)) En este ejemplo, la imagen se imprimiría con dimensiones de 512 x 384. -
Aers, no sé si estoy entendiendo bien o no, pero creo que estás tratando de obtener el resultado de una consulta desde el valor devuelto por ExecuteNonQuery. Ahí hay algo malo, porque una consulta puede devolver varias filas, y ExecuteNonQuery devuelve un entero (dependiendo de la consulta que hagas este número puede representar la cantidad de filas involucradas), no hay forma que este entero sirva para guardar la cantidad de información que puede devolver una consulta SQL. De hecho, en muchos casos, el valor devuelto por ExecuteNonQuery se ignora. Así que para obtener la información devuelta por una consulta, puedes usar un DataReader (mira los ejemplos que aparecen en el enlace).
-
Esa es la librería del Visual C++ 2012 y, por lo tanto, no tienes que meterte a ninguna página rara ni instalar ningún programa que escanee tu sistema, simplemente tienes que bajarlo de la página oficial, o sea, desde Microsoft. Bájalo desde este enlace y baja los archivos VSU3\vcredist_x86.exe y VSU3\vcredist_x64.exe. Cuando ya los hayas descargado, instala primero el vcredist_x64.exe, intenta correr el juego y si sigue pidiéndote la DLL, instala el otro (el vcredist_x86.exe).
-
Quizás modificaste sin querer la configuración del tamaño de texto en pantalla (quedó en un valor mayor a 100%). Mira este enlace para modificar la configuración (deberías dejarlo en 100%, que es la opción predeterminada).
-
Ayuda con tarea en VB 2010
susodicho replied to jotadflo's topic in Aplicaciones de Escritorio & Scripts PHP
:mmm: Estoy confundido, ¿es una aplicación C# o VB.NET? Tienes que declarar una variable dentro del formulario, así la pueden usar todos los miembros de la clase Form1. No es muy recomendable usar un manejador de evento para cada imagen (todos hacen básicamente lo mismo)...¿qué pasa si tienes 50 o más imágenes? :tonto: En estos casos defines un solo manejador de evento para todas las imágenes, y para saber qué imagen fue la que generó el evento usas el parámetro sender. Como parece que es una aplicación C# y estás usando un manejador de evento por cada imagen, entonces olvídate de lo que respondí antes. O sea, no uses la propiedad Tag, el precio se lo sumas en el propio manejador del evento Click. public partial class Form1 : Form { int loquesea = 0; public Form1() { InitializeComponent(); } // etc. } En el ejemplo de arriba, la variable loquesea puede ser usada por cualquier método del formulario. En tu caso, dicha variable la usarías para guardar el total, y al hacer clic en el botón Limpiar tienes que asignarle el valor cero. -
Ayuda con tarea en VB 2010
susodicho replied to jotadflo's topic in Aplicaciones de Escritorio & Scripts PHP
¿y dónde está el código que estás usando? ...además no tienes que "llamar" al Tag, es una propiedad. -
Ayuda con tarea en VB 2010
susodicho replied to jotadflo's topic in Aplicaciones de Escritorio & Scripts PHP
Puedes guardar el precio en la propiedad Tag de cada imagen. Así puedes asignarles precios usando la Vista de Diseño. Ojo, al asignar valores a la propiedad Tag de esta forma, los valores se guardan como cadenas (String), así que cuando quieras usarlos en el código fuente tienes que convertirlos a enteros usando CInt. -
ejercicio con visual basic 2008
susodicho replied to bombero_7's topic in Aplicaciones de Escritorio & Scripts PHP
Un ArrayList puede contener lo que sea (cualquier tipo de datos), por eso el método Add recibe como parámetro un tipo Object (en .NET, todas clases derivan de la clase Object). Aquí hay un ejemplo usando una clase Persona que tiene 3 atributos: nombre, edad y si es o no donante. Si te fijas, los 2 primeros elementos que se ingresan al ArrayList son objetos guardados en variables (habitante e individuo), mientras que el tercer elemento se agrega a través de un objeto anónimo (se crea el objeto usando el operador New sin usar alguna variable de tipo Persona). Tú eliges de qué forma prefieres agregar elementos al ArrayList... Public Class Form1 Private listado As New ArrayList Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim habitante As Persona Dim individuo As New Persona("Juan Pérez", 43, True) habitante = New Persona("Óscar Tapia", 15, False) listado.Add(individuo) listado.Add(habitante) listado.Add(New Persona("Claudia Jara", 61, True)) End Sub End Class Ahora, el ArrayList ve todos los elementos como tipo Object, así que para poder utilizarlos como el tipo original que son debes hacer una conversión explícita usando Ctype, así podrás acceder a todos los miembros (propiedades, métodos, etc.) del elemento correspondiente. Por ejemplo, para acceder al sexto elemento de un ArrayList que contiene objetos del tipo Persona tendrías que hacer algo como esto: Ctype(listado(5), Persona)Otra cosa, agrégale los tipos de datos a los parámetros del constructor de la clase Libro ;)