• Lunes 18 de Noviembre de 2024, 05:28

Mostrar Mensajes

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

Páginas: 1 2 [3] 4 5 6
51
Visual Basic 6.0 e inferiores / Re: Validacion de los "text"
« 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

52
Visual Basic 6.0 e inferiores / Imprimir en diferentes impresoras
« en: Lunes 9 de Diciembre de 2002, 22:30 »
Hola José:

La verdad que nunca trabajé con Crystal, así que no te sabría decir como hacer.

Recuerdo que hace como una semana alguien planteó lo mismo en otro foro, creo que era en el de Microsoft: http://communities.microsoft.com/newsgr ... %2Ees%2Evb

o el de Mailgate.org: http://www.mailgate.org/es/es.comp.leng ... index.html

Lamento no poderte ayudar más.
Saludos,
Javier

53
Visual Basic 6.0 e inferiores / Re: Imprimir en diferentes impresoras
« 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
Visual Basic 6.0 e inferiores / Mas sobre Controles Dinámicos...
« 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

55
Visual Basic 6.0 e inferiores / Lista de impresoras
« en: Lunes 9 de Diciembre de 2002, 17:54 »
Hola Oscar:

para ver las distintas impresoras puedes:

    Dim P As Printer
   
    For Each P In Printers
        MsgBox P.DeviceName
    Next

Ahora para saber por que puerto se imprime, para eso probablemente haya que usar alguna API, no te sabría decir exactamente ya que nunca lo hice. Pero fijate en EnumPrinters:

http://www.allapi.net/apilist/EnumPrinters.shtml

Al final hay un ejemplo, el cual sería:

http://www.allapi.net/apilist/07D470F55 ... 7C541.html

Saludos,
Javier

56
Visual Basic 6.0 e inferiores / Trabajar con vectores
« 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
Visual Basic 6.0 e inferiores / Re: Ayuda sobre app.path y empaquetado.
« 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
Visual Basic 6.0 e inferiores / Re: Ayudenme a entender este CODIGO
« 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
Visual Basic 6.0 e inferiores / Re: moverse con las flechas
« 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
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

61
Visual Basic 6.0 e inferiores / Urgente Es para un trabajo en la Universidad
« en: Domingo 8 de Diciembre de 2002, 17:11 »
Hola Jorge:

Lo de las bases no sé, pero de la API puedes encontrar muchísimo aquí: http://www.allapi.net

Aquí hay ejemplos con API en castellano: http://guille.costasol.net/vb_api.htm

Saludos,
Javier

62
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
Visual Basic 6.0 e inferiores / Secuencia de escape para impresión
« 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.html

Yo 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
Visual Basic 6.0 e inferiores / Re: error 3265
« 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
Visual Basic 6.0 e inferiores / Solo pa' gente pila
« 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
Visual Basic 6.0 e inferiores / Re: Secuencia de escape para impresión
« 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
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
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
Visual Basic 6.0 e inferiores / Re: Secuencia de escape para impresión
« 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
Visual Basic 6.0 e inferiores / menus en Visual Basic
« 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
Visual Basic 6.0 e inferiores / Re: Creación de Objetos Dinámicos...
« 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
Visual Basic 6.0 e inferiores / Como no pasarme de la resolución de pantalla.
« 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
Visual Basic 6.0 e inferiores / Re: Como no pasarme de la resolución de pantalla.
« 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
Visual Basic 6.0 e inferiores / una duda, visual trabaja con pilas?
« 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

75
Visual Basic 6.0 e inferiores / nombres unicos
« en: Miércoles 4 de Diciembre de 2002, 05:25 »
Hola:

Fijate estas direcciones, todas tratan de eso:

http://www.freevbcode.com/ShowCode.Asp?ID=21

http://vbcode.com/asp/showsn.asp?theID=407

http://support.microsoft.com/default.as ... us;q176790

Aca hay uno que preguntó lo mismo y le dieron un montón de respuestas:

http://www.experts-exchange.com/Program ... 56900.html

Sino busca en Google:

http://www.google.com.ar/search?hl=es&i ... asic&meta=

lo que buscas se llama GUID: Globally Unique Identifiers

En castellanbo también salieron varias (hay que buscar las que sirven):

http://www.google.com.ar/search?hl=es&i ... %3Dlang_es

Te dejo a vos el estudio.

Saludos,,
Javier

Páginas: 1 2 [3] 4 5 6