|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - javierbalk
51
« en: Martes 10 de Diciembre de 2002, 03:02 »
Bueno, Cero Kull:
Eso es lo que yo interpreté que querías hacer, a mi parecer funciona perfecto (acabo de probarlo), va a salir el mensaje hasta que ingreses algo en el TextBox.
¿No es eso lo que querías?
Javier
53
« en: Lunes 9 de Diciembre de 2002, 21:11 »
Hola José:
En la colección Printers tienes todas las impresoras presentes en el sistema.
Para cambiar la impresora a la que referencia el objeto Printer de VB tienes que hacer por Ej. así:
Dim P as Printer Dim LaImpresoraQueQuiero as String
LaImpresoraQueQuiero = "HP692 Desjet etc..."
For Each P in Printers If P.DeviceName = LaImpresoraQueQuiero then Set Printer = P Exir For End If Next
Además tendrías que tener una pantalla de configuración en donde el usuario configura a qué impresora va a mandar cada cosa, esto lo hace una sola vez. Luego podrías guardar esos datos en el registro para saber cual hay que utilizar para cada operación.
Si dsinstaló una de las impresoras y por lo tanto no la encuentra en la colección de printers lo correcto sería informar la situación con un mensaje de error.
Saludos, Javier
54
« en: Lunes 9 de Diciembre de 2002, 20:19 »
Hola sMorph:
Para tener los eventos de los controles y una variable a nivel de formulario para referenciarlos, debes hacerlo así:
Dim WithEvents MiCommand1 as CommandButton
Set MiCommand1 = Controls.Add ("VB.CommandButton, "NombreBoton1")
Private sub MiCommand1_Click() ' escribir el procedimiento de evento acá End Sub
Para referenciarlo:
MiCommand1.Caption = "&Presione aquí"
Lo mismo para otro tipo de controles, debes declararlo con el tipo específico (Label, TextBox, etc,) y luego escribir los procedimientos de eventos, con todos los parámetros necesarios.
Para hacer la declaración correcta puedes poner un control del tipo en un form y copiar la declaración del evento que VB coloca automáticamente y modificarla para el nombre de tu control.
Saludos, Javier
56
« en: Lunes 9 de Diciembre de 2002, 17:46 »
Hola Empar:
Te hice un ejemplo, para probarlo abre un proyecto nuevo, coloca un botón de comando y pega el sig. código:
'***************************** Dim v() As Long
Option Explicit
Private Sub Command1_Click() Dim Texto As String Dim X As Long AgregarElemento For X = 1 To UBound(v) Texto = Texto & v(X) & vbCrLf Next MsgBox Texto End Sub
Private Sub AgregarElemento() Dim I As Long Dim X As Long Dim YaExiste As Boolean Dim NuevoIndice As Long I = Int(Rnd * 19) ' cambiar por lo que sea YaExiste = True Do Until Not YaExiste YaExiste = False For X = 1 To UBound(v) If v(X) = I Then YaExiste = True I = Int(Rnd * 19) ' cambiar por lo que sea Exit For End If Next Loop NuevoIndice = UBound(v) + 1 ReDim Preserve v(NuevoIndice) v(NuevoIndice) = I End Sub
Private Sub Form_Load() ReDim v(0) ' inicializo el vector con la posicón 0 que luego nuca uso, lo voy a usar a partir de la 1, pero hago esto para que despues ya esté inicializado y no me de error End Sub '*****************************
Tené en cuenta que por ejemplo, en este caso, una vez que ya hay 19 elementos ingresados se queda indefinidamente buscando cual agregar, pero resulta que como ya están los 19 no encuentra uno que no esté y no sale más del loop, si en tu caso puede pasar algo parecido tendrías que ponerle una validación o protección para que eso no ocurra.
Saludos, Javier
57
« en: Lunes 9 de Diciembre de 2002, 17:19 »
Hola Jode:
Si tu codigo es:
cadena = "Provider = microsoft.jet.oledb.4.0;" & "data source =C:peliculasvideoteca.mdb;"
Cambialo por
cadena = "Provider = microsoft.jet.oledb.4.0;" & "data source =" & App.Path & "videoteca.mdb;"
Y luego agrega la base de datos en el Asistente de empaquetado y distribución en donde dice archivos adicionales como ya te dijo Alberto.
Saludos, Javier
58
« en: Lunes 9 de Diciembre de 2002, 17:13 »
Hola Cero Kull: Yo también estoy de acuerdo en que tienes que leer un libro o tutorial, fijate si en la web del Guille http://guille.costasol.net hay algo. Lo que pasa es que estos son foros de consultas, no de enseñanza, ya que sería difícil eso, para eso se escriben los libros y los tutoriales, para que haya que escribirlos una sola vez y no uno para cada alumno. Además aprendiendo solo de esta manera corres el riesgo que te indiquen algo mal, lo cual te va a confundir más. Unas cositas: Option Explicit ---> indica que en ese formulario o módulo de código todas las variables se tienen que declarar explícitamente. Por ejemplo si abres un proyecto nuevo y escribes: a = "Prueba" MsgBox a va a andar siempre y cuando no diga arriba Option Explicit, sino va a saltar un error. El código entonces tendría que ser: Dim a a = "Prueba" MsgBox a Ahí no va a saltar el error. El ámbito o alcance de las variables, sean globales o no, no va a cambiar por haber puesto Option Explicit. En el menú Herramientas, Opciones en la paleta Edición hay una casilla que dice "Requerir declaración de variables", si está tildada, VB te va a colocar el Option Explicit automáticamente cada vez que agregues un formulario o un módulo. Otra cosa que puedes hacer para aprender es posicionar el cursor en una palabra, por ejemplo en este caso Option y presionar F1, la ayuda de Vb es buena (al menos la de VB5 lo era, ahora ya no la uso tanto) y te van a salir todas las formas de usar la palabra Option (Option Explicit, Option Base, Option Compare ... etc) Ver la ayuda es más rápido que poner posts (creo). Un comentario más: el usar la declaración explícita de variables puede parecer un poco incómodo, porque hay que escribir más, ya que hay que declararlas a todas, pero es totalmente recomendable ya que de otra manera puede haber errores muy difíciles de detectar, por ejemplo: MiVariable = "prueba" MsgBox MiVarriable No sale nada ¿Por qué? porque me equivoqué y puse una r demás en el segundo uso. Entonces vb cree que son dos variables diferentes, MiVariable y MiVarriable. El Option Explicit elimina esos problemas ya que va a saltar un error que me avisa que la variable no se encuentra declarada. Conclusión: Usar siempre Option Explicit, poner la casilla tildada en la pantalla de opciones. Saludos, Javier
59
« en: Lunes 9 de Diciembre de 2002, 16:51 »
Hola Jorge:
Otra forma de identificar a esas teclas es usar las contantes de vb:
vbKeyRight ' derecha vbKeyLeft ' izquierda vbKeyUp ' arriba vbKeyDown ' abajo
Saludos, Javier
60
« en: Lunes 9 de Diciembre de 2002, 02:30 »
Hola Gaby:
Si, respondo en varios foros, es como un pasatiempo (o vicio) que agarré últimamente, lo que tiene de bueno es que cuando puedo ayudo gente, y además a veces aprendo algo leyendo las repuestas de otros.
Con respecto a tu pregunta, yo nunca utilizé el DataControl, siempre hice todo con DAO, así que espero que otro te pueda ayudar mejor con eso.
Creo que s así para almacenar en la base de datos:
Datacontrol.RecordSet.Edit Datacontrol.RecordSet!NombreCampo = Variable Datacontrol.RecordSet.Update
y la operación inversa (pasar de la Bd a una variable):
Variable = Datacontrol.RecordSet!NombreCampo
Saludos, Javier
62
« en: Sábado 7 de Diciembre de 2002, 17:25 »
Hola Maxier:
Yo para saber en que plataforma está corriendo el programa uso el sig. código:
'**************************** Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long '1 = Windows 95. '2 = Windows NT szCSDVersion As String * 128 End Type
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
Private Function EsNt() As Boolean Static sCalculado As Boolean Static iValor As Boolean If Not sCalculado Then iValor = GetVersion = 2 sCalculado = True End If EsNt = iValor End Function
Private Function GetVersion() As Long Dim osinfo As OSVERSIONINFO Dim retvalue As Integer osinfo.dwOSVersionInfoSize = 148 osinfo.szCSDVersion = Space$(128) retvalue = GetVersionExA(osinfo) GetVersion = osinfo.dwPlatformId End Function '****************************
Así como está lo puedes colocar en un form, pero si lo colocas en un módulo cambia la delaración de la función EsNt de Private a Public.
Retorna True si corre en la plataforma NT y False si es 95/98/ME
Saludos, Javier
63
« en: Sábado 7 de Diciembre de 2002, 10:07 »
Hola Andreu: El mensaje tuyo que te decía está aquí: http://www.mailgate.org/es/es.comp.leng ... 20202.htmlYo no sé como eran las news antes porque no iba, hace poco que voy, pero lo que pienso que si pones eso en los mensajes a nadie le va a dar ganas de ayudarte, por eso preguntaba, no entendia por que ponías eso de pobres. De paso ¿Cómo eran antes? Saludos, Javier
64
« en: Sábado 7 de Diciembre de 2002, 02:46 »
Hola Janhisse (de paso, que lindo nombre):
Mira, por lo que dice el error parecería que ese campo sat_numsat no existe o está mal escrito, chequea eso.
Saludos, Javier
65
« en: Sábado 7 de Diciembre de 2002, 02:40 »
Hola Jrtuarez:
Mira, eso ya alguien lo hizo, aunque no creo que sea por fuerza bruta (así le dicen a eso de probar todas las combinaciones) porque una vez encontré un programita que te da la contraseña al toque, no tarda nada. Buscá información de eso con Google, por ahí alguien publicó como se hace.
Saludos, Javier
PD: no me lo pidan porque ni sé adonde tengo ese programita
66
« en: Sábado 7 de Diciembre de 2002, 01:59 »
Andreu:
Fijate que alguien te contestó algo en el foro de Mailgate.org
Saludos, Javier
67
« en: Sábado 7 de Diciembre de 2002, 01:47 »
Hola .:Gaby:.
Seria bueno que dijeras en que etapa estás: Si ya tienes la base hecha, si está en Access, si ya tienes el código para abrir la base, que usas (DAO, ADO, RDO...etc)
Yo hasta ahora solo usé Access y DAO, así que te podría indicar como hacerlo así, pero si usas otra cosa mejor lo aclaras asi te indicamos yo u otra persona correctamente.
Saludos, Javier
68
« en: Sábado 7 de Diciembre de 2002, 01:40 »
Hola Maxier: Además del código que te pasó .:Gaby:., que sirve para bloquear las teclas, te paso este otro para que tu aplicación no aparezca en la lista: '************************** Option Explicit Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessId As Long, ByVal dwType As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Private Const RSP_SIMPLE_SERVICE = 1 Private Sub Form_Load() Call RSP(GetCurrentProcessId, RSP_SIMPLE_SERVICE) End Sub Private Function RSP(ByVal dwProcessId As Long, ByVal dwType As Long) As Long On Error Resume Next RSP = RegisterServiceProcess(dwProcessId, dwType) End Function '************************** Nota: esto funciona solamente en Windows 95/98/ME pero no en NT/2000/XP, la forma de hacerlo para las dos plataformas no la sé (si se puede). Me parece que lo bloquear las teclas también anda sólo en 95/98/ME. Recuerdo haber visto un proyecto de ejemplo para bloquear las teclas en Win NT/2000/XP en http://www.pscode.com/vb si te interesa tendrías que buscarlo. Saludos, Javier
69
« en: Sábado 7 de Diciembre de 2002, 01:18 »
Hola Andreu:
Por lo que dices creo que tienes que encontrar cual es la secuencia para que la impresora acomode automaticamente el papel para hacer una nueva impresión, no es exactamente una secuencia para retroceder, sino una para decirle: acomoda el papel bien para imprimir un nuevo documento.
He visto que lo hacen (al menos las Epson) presionando una tecla, asi que se debe poder hacer también enviándole la secuencia correcta. Para encontrarla te sugiero leer en el manual de la impresora, que seguramente debe venir toda la documentación.
Averiguarlo mandando cualquier secuencia sería difícil, me parece, pero de hacerlo mi intuicion empezaria con Chr(27) + otro caracter.
Además, si no tengo el manual trataría de ver documentación on line que esté publicada sobre la impresora para ver si lo encuentro, y si no, buscaría manual o documentación on line de otra impresora similar, ya que las ordenes muy probablemente sean las mismas.
He visto que has preguntado en varios foros sobre como retroceder, mas bien yo preguntaría como dar la orden de acomodar el papel para empezar a imprimir.
De paso ¿Que es eso que has puesto en otros lados que dices "Hola a todos en estas pobres NEWS..."?
Saludos, Javier
70
« en: Viernes 6 de Diciembre de 2002, 05:34 »
Hola M00g:
En tiempo de ejecución, puedes acceder a las propiedades de los menús ya que son controles (tipo Menu) de VB.
Cuando creas el menú, por cada entrada te pide un nombre, luego con ese nombre accedes al control menú.
Suponiendo que hayas creado un menú "Archivo", podrías haber colocado por ejemplo mnuArchivo como nombre y "&Archivo" como caption.
Luego en tiempo de ejecución para habilitarlo o deshabilitarlo usas la propiedad Enabled:
mnuArchivo.Enabled = False
Saludos, Javier
71
« en: Viernes 6 de Diciembre de 2002, 03:46 »
Hola sMorph:
Se hace así:
Dim C As Control
Set C = Controls.Add("VB.CommandButton", "NombreNuevoCommand") C.Visible = True C.Top = 1000 'c. ...etc
'y así con los otros, por ejemplo un label:
Set C = Controls.Add("VB.Label", "NombreNuevoLabel") C.Visible = True C.Top = 2000 C.Caption = "Prueba"
Saludos, Javier
72
« en: Jueves 5 de Diciembre de 2002, 14:37 »
Mas acerca del tema:
En el objeto Screen de VB tienes propiedades de la pantalla:
Width = Ancho Height = Alto
se usa, por ejemplo: Msgbox Screen.Width
Te lo da en Twips, que es una unidad de medida que es Standar en VB (hasta VB6).
Los formularios a su vez tienen las propiedades:
Width = Ancho Height = Alto
y
Top = Posición a lo alto, es decir, determina la posición en el eje de las Y, nada más que al aumentar el valor se coloca más abajo.
Left= Posición en el eje de las X, siempre en Twips
También los controles tienen estas propiedades, de modo que se pueden ajustar las posiciones.
Todas estas propiedades se pueden cambiar tanto en tiempo de diseño como en tiempo de ejecución.
Ahora, bien, si las vas a cambiar en tiempo de ejecución para ajustarla a la resolución de pantalla o al estado de una ventana (si la maximiza o la restaura por ejemplo), necesitas de un evento donde hacerlo. Para eso puedes utilizar el evento Resize del formulario y colocar el código necesario ahí. Este evento se dispara cada vez que el formulario cambia de tamaño. También este evento ocurre la primera vez que se está por mostrar el formulario.
Una forma lógica sería colocar los Width, Height, Left y Top de los controles en este evento Resize del Form, y los Width, Height, Left y Top de los formularios antes de mostrarlos, es decir antes de poner Fomulario.Show
Para situar los controles se tomaría como referencia el alto y ancho del form.
Y para determinar posición y tamaño que debe tener el form se tomaría las dimensiones de la pantalla.
(Me parece que esta mañana me levanté inspirado, o al menos con ganas de escribir)
Si quedó alguna dude decime.
Saludos, Javier
73
« en: Jueves 5 de Diciembre de 2002, 04:59 »
Hola:
Cambiale el Top de ese form para colocarlo más arriba.
Ejemplo: Formulario.Top = 1000
Saludos, Javier
74
« en: Miércoles 4 de Diciembre de 2002, 23:22 »
Hola Michael:
Si, trabaja con la pila, pero no es una pila alcalina o de esas para hacer funcionar relojes etc. La pila es un lugar de la memoria donde se almacenan las llamadas a los procesos y de que manera y donde deben retornar.
Si por ejemplo haces una rutina:
Private sub LLenarPila LLenarPila End Sub
Te va a salir un mensaje de error que dice que se quedó sin espacio de pila, es que tiene 64K de memoria para almacenar las llamadas y retornos, si se le acaba da el error.
Se llama pila porque es como si fuera apilando cosas, luego las va sacando cuando retorna, desde la de mas arriba hacia abajo.
Otro ejemplo sería:
Public Sub Proceso1() Proceso2 End Sub
Public Sub Proceso2() Proceso1 End Sub
Llamando a cualquiera de los dos se va a llenar la pila.
Espero haber sido mas o menos claro.
Saludos, Javier
|
|
|