|
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
76
« en: Miércoles 4 de Diciembre de 2002, 05:05 »
Te contesté en lawebdelprogramador.com
Saludos, Javier
77
« en: Miércoles 4 de Diciembre de 2002, 02:22 »
Hola Cero Kull:
Y no, porque el lostfocus lo que hace es validar lo que tiene el y no los otros texts. No lo he probado mucho, sino solo que modifiqué tu código, pero supongo que debe andar bien. Si llegás a detectar algún problema lo solucionamos.
Saludos, Javier
78
« en: Lunes 2 de Diciembre de 2002, 04:46 »
Hola Cero Kull:
No me parece que esté mal lo que hiciste, pero modifiqué tu código para hacerte la vida más sencilla. Agrega un módulo estándar al proyecto y pega el sig. código:
'********************************************* Public Sub ProcesarKeyPressTextSoloTexto(Keyascii As Integer, txt As TextBox) If Asc(UCase(Chr(Keyascii))) < Asc("A") Or Asc(UCase(Chr(Keyascii))) > Asc("Z") Then If Keyascii <> 8 And Keyascii <> 13 And Keyascii <> 209 And Keyascii <> 241 And Keyascii <> 34 And Keyascii <> 225 And Keyascii <> 233 And Keyascii <> 237 And Keyascii <> 32 And Keyascii <> 243 And Keyascii <> 250 Then Keyascii = 0 Beep End If If Keyascii = 13 Then SendKeys "{TAB}" End If Else Keyascii = Asc(UCase(Chr(Keyascii))) End If End Sub
Public Sub ProcesarLostFocusText(txt As TextBox) txt.Text = Trim(UCase(txt.Text)) If txt.Text = "" Then MsgBox " INGRESE ALGO ", vbCritical txt.SetFocus End If End Sub '*********************************************
Luego en los TextBox cambia el código por el sig:
'********************************************* Private Sub Text1_KeyPress(Keyascii As Integer) ProcesarKeyPressTextSoloTexto Keyascii, Text1 End Sub
Private Sub Text1_LostFocus() ProcesarLostFocusText Text1 End Sub '*********************************************
De manera que ahí tienes centralizado el manejo de eso, y sólo tienes que agregar esas líneas por cada TextBox.
También notarás que hice unos cambios: En lugar de enviar el foco al sig. control con SetFocus lo hice enviando la tecla Tab, de manera que no hace falta conocer cuál es, sólo que deberás poner bien en orden el TabIndex de cada uno para que funcione bien.
Además agregué que se pongan a mayúscula con cada letra y no solo al final. También cambié a que luego ponga (de nuevo) todo a mayúsculas cuando pierde el foco el control, porque con el otro código si el usuario en lugar de presionar Enter presionaba Tab no se ponía a mayúscula, lo mismo si hacía click con el mouse en otro lado.
Ahora ¿para qué poner a mayúscula en el LostFocus si ya está todo mayúscula por cada pulsación? Bueno, si haces click con el botón derecho en el textbox verás que puedes copiar algo que esté en el portapapeles, es por eso, porque lo copia en minúsculas si está así.
Lo mismo con la validación por si está vacío, la puse en el LostFocus por la misma razón de más arriba (si cambia de control sin presionar Enter).
Con respecto a una rutina más simple, si es que quieres experimentar, hay una API que se llama IsAlphaNumeric que retorna 1 si el KeyAscii es un caracter alfanumérico y 0 si no lo es. Combinando esta API con IsNumeric podrías determinar si es un caracter de letra o no.
La declaración es:
Public Declare Function IsAlphaNumeric& Lib "user32" Alias "IsCharAlphaNumericA" (ByVal cChar As Byte) ' Si son letras o números devuelve 1, sino devuelve 0
Y se usa:
If IsAlphaNumeric(KeyAscii) = 1...
Espero que te haya ayudado.
Saludos, Javier
79
« en: Lunes 2 de Diciembre de 2002, 01:39 »
Hola José:
Tienes que referenciar a la base de datos no con un path absoluto, por ej. "C:MisProgramasEsteBase.mdb", sino con un path relativo utilizando la variable App.Path, ej:
App.Path & "" & Base.mdb
La variable App.Path te da la ruta donde está corriendo tu programa.
Saludos, Javier
80
« en: Domingo 1 de Diciembre de 2002, 19:11 »
Si, en el Asistente de empaquetado y distribución hay un lugar para añadir archivos, tienes que agregarla ahí.
Saludos, Javier
81
« en: Domingo 1 de Diciembre de 2002, 16:46 »
Hola Macarena:
Primero no te desesperes por estas cuentiones de la vida.
Segundo tenes que hacer el paquete de instalación de modo de llevar todos los archivos necesarios, puedes usar el Asistente de empaquetado y distribución que viene con Visual Basic, te sale en Inicio, Programas, Visual Basic 6...
Saludos, Javier
82
« en: Domingo 1 de Diciembre de 2002, 16:43 »
Cuando instales asegurate que no haya otros programas de VB corriendo, cierra todas las aplicaciones. Lo que puede pasar es que esos archivos están en uso y no los puede actualizar. Tal vez omitiéndolos ande todo bien también.
Saludos, Javier
83
« en: Sábado 30 de Noviembre de 2002, 17:40 »
No sé que será lo que estás haciendo, pero me parece que deberías usar algo como ASP y hacer que la aplicación corra en el servidor y que entregue los resultados en el Browser, sin tener que instalar nada en el cliente.
Saludos, Javier
84
« en: Sábado 30 de Noviembre de 2002, 02:11 »
Mejor di Señores amigotes...jeje
Si no quieres mostrar ningún formualrio en tu aplicación, puedes poner en un módulo un procedimiento:
Public Sub Main () ' hacer lo que haya que hacer End Sub
y luego en en menú Proyecto selecciona Propiedades, en donde dice Objeto inicial selecciona Sub Main.
Para que no esté todo el tiempo en un loop, lo que puedes es poner un Timer, pero ahi entonces vas a tener que agregar un formulario. Para no mostrarlo puedes hacerlo así:
Public Sub Main () Load Form1 End Sub
en el timer coloca Interval = 5000
Luego en el procedimiento del timer escribes la consulta que quieres hacer.
Saludos, Javier
85
« en: Viernes 29 de Noviembre de 2002, 19:52 »
No entiendo, ¿Podrís explicar mejor para los que no sabemos Clipper?
¿Quieres cambiar el nombre de las variables o el valor que tienen asigando?
Javier
86
« en: Viernes 29 de Noviembre de 2002, 19:49 »
Ahí te hice la modificación para trabajar con la captura de errores y detectar que presionó el botón cancelar:
Private Sub Command1_Click() Cdl1.Filter = "Archivo de texto(*.txt)|*.txt" Cdl1.CancelError = True On Error Resume Next Cdl1.ShowSave If Err.Number = 0 Then Open Cdl1.FileName For Output As #1 Print #1, Text1.Text Close #1 End If End Sub
Saludos, Javier
87
« en: Viernes 29 de Noviembre de 2002, 05:58 »
Sabes que pasa Michael, si haces una pregunta porque no sabes hacer algo especificamente de Visual el que sabe te va a responer, pero tu tienes que hacer un proyecto y no sabes ni como empezar, como van a saber que decirte los otros si ni siquiera saben bien como tiene que hacer tu proyecto.
Primero tienes que entender bien y saber exactamente que es lo que quieres hacer, con el mayor detalle posible, luego viene la parte de como hacerlo. Entonces cuando ya empiezas a definir algo, si te trabas con un tema puedes preguntar eso que es específico.
Pero si haces una pregunta así es como si un aquitecto dijera a sus colegas: amigos, tengo que hacer una casa ¿que hago? Y nadie va a saber que decirle.
Bueno, no es para que lo tomes a mal, pero las cosas no son por magia, es por pensar y por trabajo.
Saludos, Javier
88
« en: Viernes 29 de Noviembre de 2002, 03:05 »
Hola Alvarado: No es tan sencillo, VB no lo soporta él mismo a eso. Hay varios componentes OCX que lo hacen (algunos son gratis), puedes buscar en Google Visual Basic Resize, resizer, sizer. También puedes buscar en http://www.pscode.com/vb/ que seguramente haya algo también. Saludos, Javier
89
« en: Jueves 28 de Noviembre de 2002, 03:46 »
El TextBox tiene la propiedad Alignment para acomodar el texto a la izquierda, derecha o centrado, justificado no tiene.
Para justificar lo que se me ocurre es tomar cada línea de texto e ir agregando espacios de más entre las palabras hasta llegar al ancho; pero hay que hacer la rutina.
Saludos, Javier
90
« en: Jueves 28 de Noviembre de 2002, 03:41 »
Ahora, yo pregunto: ¿De qué manera podemos ayudarte?
Javier
91
« en: Jueves 28 de Noviembre de 2002, 03:39 »
Hola, bueno, no sé, será por la configuración de la pantalla, yo para unos programas los saqué así y habían quedado perfectos, pero lógicamente si encontrás los íconos mejor. Saludos,
Javier
92
« en: Jueves 28 de Noviembre de 2002, 01:02 »
Tal vez ya no vuelvas a ver el mensaje, pero aunque sea para otros lo comento:
Si no los encuentras es muy sencillo, abres el Word (o la aplicación que sea), haces un PrintScreen, esa tecla de arriba a la derecha (-2), abres el Paint, lo recortas y lo pegas en otra ventana de Paint. Lo grabas y listo.
Saludos, Javier
93
« en: Miércoles 27 de Noviembre de 2002, 15:39 »
Coloca la propiedad del formulario ControlBox = False
Saludos, Javier
94
« en: Miércoles 27 de Noviembre de 2002, 15:36 »
Mira, yo no trabajo muchos con bases de datos, pero me parece que el SQL "Delete * from Tabla" debería funcionar, el motor de bases de datos es el que se engarga del formato de la base, corregime si estoy equivocado.
Saludos, Javier
96
« en: Martes 26 de Noviembre de 2002, 05:25 »
1) Para activar el salvapantallas que está configurado en Windows usa el sig. código (agrega un command a un proyecto nuevo y pega esto): Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Const WM_SYSCOMMAND = &H112& Const SC_SCREENSAVE = &HF140& Private Sub Command1_Click() Dim lRes As Long lRes = SendMessage(Me.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0&) End Sub '**************Fin del código******* 2) Si en cambio lo que quieres es activar cualquier salvapantallas, agrega un command a un proyecto nuevo y usa el sig. código: Private Sub Command1_Click() Shell "C:WindowsSystemLaberinto 3d.scr /s" End Sub Normalmente los salvapantallas están en el directorio de sistema, pero este puede ser diferente en cada instalación, por lo que deberías usar la API GetSystemDirectory para saber donde es. 3) Si lo que quieres es programar uno, tienes que cambiar la extensión .exe por .scr. En la dirección http://groups.google.com.ar/groups?q=vi ... cl&rnum=11 hay más datos. Saludos, Javier
97
« en: Martes 26 de Noviembre de 2002, 05:02 »
Lo que dices es un imposible. Primero necesitas entender como está constituida una base de datos, que son las tablas, campos y registros.
Cada vez que agregas un registro se agregan todos los campos de esa tabla, es imposible agregar un campo solo, necesariamente siempre que agregas, agregas un registro. Lo que puedes hacer es poner a 0 los campos que no te interesan, a 0 si son numéricos o a "" si son texto.
Saludos, Javier
98
« en: Lunes 25 de Noviembre de 2002, 01:56 »
Bueno, si estoy entendiendo lo que quieres, incluye esta línea en el código antes que se muestre:
Combo1.ListIndex = 0
Ahí va a mostrar el primer elemento de la lista. Saludos,
Javier
99
« en: Domingo 24 de Noviembre de 2002, 23:58 »
Hola Patty:
La forma más simple que conozco de crear la base de datos es en Access. Ahí puedes hacer también las relaciones entre las distintas tablas. Luego desde VB la usas, y haces el ABM y consultas en tu programa VB. Saludos,
Javier
100
« en: Domingo 24 de Noviembre de 2002, 23:55 »
El tipo de datos numérico más grande con el que trabaja VB es el Double.
Dim MiNumero as Double
Pero no tiene tantos dígitos, tal vez te convenga usar tipo de datos String si es que no tienes que hacer operaciones matemáticas.
Saludos,
Javier
|
|
|