|
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 - Brroz
Páginas: 1 ... 3 4 [5] 6 7 ... 43
101
« en: Miércoles 2 de Febrero de 2005, 09:15 »
Ya, pues que sepas que te sobra el bucle y repites algo ya dicho: También podrías optar por validar el texto mediante el evento en un lostfocus o en un validate (mejor). Te llegaría con una línea así:
Text1.Text = LTrim(Replace(Text1.Text, Chr(32) & Chr(32), Chr(32))
De todas formas con esto obligas al desaparecido Cmps360 a programar una validación. El mismo... Abur.
102
« en: Martes 1 de Febrero de 2005, 17:03 »
Hola Desarrollo.
Aunque no te guste para crear un paquete de instalación, puedes usar el asistente de vb para obtener un archivo de dependencias (.dep). Ahí podrás encontrar información sobre todas las dependencias de tu proyecto.
Por otro lado, conocer qué archivos pueden hacer falta puede ser bastante intuítivo y en la práctica resultará algo así:
1- MSVBVM60.DLL Runtime de vb 6.0. Aunque no es una dependencia de un proyecto, este archivo es imprescindible para poder ejecutar programas vb 6.0. Posiblemente esté instalado en la máquina destino, pero ante la duda...
2- Consulta las referencias de tu proyecto. Deberás incluir todos los componentes seleccionados excepto 'Visual Basic for applications', 'Visual Basic Runtime objects...' y 'Visual Basic Objects & procedures' y si fuese el caso 'Ole automation'. Para el resto, fíjate en la ubicación que se indica para el archivo cuando seleccionas la referencia.
3- Como con las referencias, pero ahora con los componentes. Tres cuartos de lo mismo. Piensa también que probablemente los controles más comunes ya se encuentren instalados en la máquina destino.
4- Otros archivos necesarios. Bases de datos, archivos ini, archivos reg, fonts, cualquier archivo que use tu aplicación y que no crees en tiempo de ejecución...
Podría ocurrir que en tu programa uses una referencia a un objeto en tiempo de ejecución (p.e. CreateObject("Lib.Clase") ). Este tipo de dependencias, deben ser recordadas para incluir el correspondiente archivo en caso necesario.
También es posible que alguno de los componentes que uses cuenten a su vez con otras dependencias que tal vez tengas que incluir. Yo aquí no sabría qué hacer, aunque también te digo que nunca se me ha presentado ningún problema con esto.
Esto para que te hagas una idea. Espero que te sirva. Chao.
103
« en: Martes 1 de Febrero de 2005, 11:35 »
Hola riciar. Puedes probar abriendo en binario con OPEN el puerto como un archivo más. Para enviar datos escribe en el archivo con PUT. Dim iCanal As Integer, byt1() As Byte iCanal = FreeFile Open "USB1" For Binary As iCanal . . . Put #iCanal, ,byt1 . . . Close #iCanal
Suerte.
104
« en: Martes 1 de Febrero de 2005, 11:26 »
¿Y tus profesores no te orientan?, ¿los conoces? pero se que puedo asimiliar otros códigos con rapidez
Ya, ya... ya percibo a qué te refieres con asimilar. Que tengas mucha suerte amigüit@.
105
« en: Martes 1 de Febrero de 2005, 11:15 »
¿Y los espacios intermedios?
106
« en: Martes 1 de Febrero de 2005, 11:11 »
Hola.
Te falta un espacio antes de 'VALUES'
Chao.
107
« en: Sábado 29 de Enero de 2005, 08:47 »
Hola agfed.
No estoy seguro pues nunca lo he probado en el caso concreto, pero supongo que el método PrintOut admitirá como uno de sus parámetros (como en otras ocasiones) el número de página/s que quieres imprimir. Especifícalo.
A ver si así. Chao.
108
« en: Sábado 29 de Enero de 2005, 08:42 »
Hola. Tu código no funciona (tampoco en un textbox sin multiline) en el caso de que el usuario escriba en el medio de un texto existente: es decir, la cosa va bien si escribes en el textbox todo seguido, pero si te posicionas en el medio del texto ya existente y escribes ahí, el código ya no funciona. La cosa podría quedar asín: Private Sub Text1_KeyPress(Keyascii As Integer) If Keyascii = 32 Then If Text1.SelStart = 0 Then Keyascii = 0 ElseIf Mid(Text1.Text, Text1.SelStart, 1) = " " Then Keyascii = 0 ElseIf Text1.SelStart + 1 <= Len(Text1.Text) Then If Mid(Text1.Text, Text1.SelStart + 1, 1) = " " Then Keyascii = 0 End If End If End If End Sub
También podrías optar por validar el texto mediante el evento en un lostfocus o en un validate (mejor). Te llegaría con una línea así: Text1.Text = LTrim(Replace(Text1.Text, Chr(32) & Chr(32), Chr(32))
No se contempla el caso de evitar un espacio al final del texto ya que no dices nada sobre ello. De todas formas si lo necesitas no te debería costar mucho hacerlo... Chao.
109
« en: Jueves 27 de Enero de 2005, 09:17 »
Hola Desarrollo.
Para un caso así, crea un bitmap con la imagen que desees como fondo. Asigna este bitmap a la propiedad Picture del MDIForm.
Chao.
110
« en: Jueves 27 de Enero de 2005, 09:15 »
Hola SpIdErFuCk. El error lo obtienes por intentar asignar a la propiedad DataSource una cadena en lugar de un objeto origen de datos. Asigna a DataSource el recordset. También te puede interesar llamar a continuación al método Rebind del DataGrid. Set DataGrid1.DataSource = rs DataGrid1.Rebind
A ver si ahora... Abur.
111
« en: Martes 25 de Enero de 2005, 15:02 »
Hola zeekel. 1- Yo hubiese pensado en hacer un proceso independiente exclusivamente para controlar el tiempo de las conexiones. Eliminaría toda parte interactiva de este programa y lo ejecutaría como un servicio. Para comunicar los programas podrías pensar en sockets, activex, bases de datos, punteros... También podrías llamar este programa desde el principal ejecutándolo en una nueva hebra del procesador. Hombre, ahora que acabo de escribir esto, se me acaba de ocurrir una forma simpática para controlar el tiempo de cada conexión: a) Crea un programa que se finalice el solito después de un tiempo que le hayas pasado como parámetro. Cuando tengas una conexión nueva y desees que comience a contar el tiempo para ella, abre una nueva hebra (OpenProcess) llamando al programita anterior pasando como parámetro el tiempo que desees que se esté ejecutando. Asocia (en una matriz por ejemplo) el Id. de proceso del nuevo thread y un Id para la conexión. c) Para comprobar si se ha acabado el tiempo de determinada conexión, comprueba si el Id. de proceso asociado está activo. O mejor aún, si todo esto lo encapsulas en una clase, puedes usar un bucle que controle cuando se finaliza el proceso que cuenta el tiempo. En cuanto el flujo salga del bucle, se ha acabado el tiempo. 2- Sobre como hacer que una aplicación esté oculta en el administrador de tareas: http://foros.solocodigo.com/index.php?showtopic=7717Espero que esto te ayude. Abur.
112
« en: Lunes 24 de Enero de 2005, 17:44 »
Hola dark_one. Supongo que el fallo tendrá que ver con el parámetro database de la cadena de conexión que utilizas: database=;
Èspecifica la base de datos después del signo = en la cadena de conexión u omite el parámetro si ya está especificado en el origen de datos. Si quieres obtener el texto para una cadena de conexión oledb yo suelo hacer lo siguiente: 1 - Creo un archivo con extensión .UDL 2 - Entro a las propiedades del archivo y elijo driver origen de datos y demás. 3 - Abro el archivo como texto y de ahí saco la cadena de conexión. A ver si con esto solucionas. Suerte. Chao.
113
« en: Lunes 24 de Enero de 2005, 14:57 »
Hola alfredopalafox.
Si buscas por este mismo foro encontrarás abundantes ejemplos de manejos básicos de hojas de cálculo excel desde vb. Estúdialos y aplica la forma de obtener una referencia a un libro excel con sus hojas. En cuanto consigas una referencia a un objeto de tipo 'Sheets' puedes utilizar su método PrintOut para imprimir las hojas seleccionadas. Usa los parámetros del método como más te convenga.
suerte.
114
« en: Lunes 24 de Enero de 2005, 14:47 »
Hola jodijo5. Puedes escribir un texto vertical en un form de la siguiente forma: Private Sub TextoVertical(ByVal Texto As String, Optional ByVal X As Single, Optional Y As Single) Me.CurrentY = Y Dim i1 As Integer i1 = 1 Do Until i1 > Len(Texto) Me.CurrentX = X Me.Print Mid(Texto, i1, 1) i1 = i1 + 1 Loop End Sub
Por supuesto que font, color y demás estarán en función de las respectivas propiedades del form. Importante: establece la propiedad del form Autoredraw = True. Si no haces esto, deberías redibujar todo lo hecho sobre el form con métodos gráficos en el evento Paint. Sobre el segundo punto... Si aún estás con ello, tal vez podrías especificar a qué te refieres con rotar un objeto en un control. ¿Te refieres a una imagen o a otra cosa? El tercero, Radical ya te lo ha explicado. Chao.
115
« en: Lunes 24 de Enero de 2005, 14:34 »
Hola Spow.
Exactamente, ¿qué es lo que te falla de este código?, porque creo que debería funcionar sin problemas.
Por otro lado, tal vez pudieras explicar por qué dices necesitar del manejo de una conexión por odbc...
Chao.
116
« en: Miércoles 19 de Enero de 2005, 15:35 »
Hola sircuit. Este código que pones ejecuta una llamada a RUNDLL32.EXE pasándole como parámetros 'url.dll,FileProtocolHandler C:\UnaRuta'. En la práctica esto abrirá una ventana mostrando el contenido de C:\UnaRuta. Si en lugar de 'C:\UnaRuta' pusieras 'C:\UnaRuta\UnArchivo.exe', intentaría ejecutar 'unArchivo.exe'. Para llamar a la función y que te muestre el contenido de una ruta que tu escribas en un textbox, o el nombre de un programa, simplemente llama a la función pasándole como parámetro el texto del textbox. ¿Que dónde tienes que poner esto?... pues en el evento Click de un commandButton, por ejemplo. Chao.
117
« en: Miércoles 19 de Enero de 2005, 15:19 »
Hola ebolo.
Realmente, creo que no debería afectar la resolución o el tamaño de la pantalla a la legibilidad del código... pienso que el ancho de un espacio en blanco o de una línea seguiría siendo proporcional. En todo caso, cuando detectes una resolución inadecuada podrías redimensionar el control y escalar el ancho de la línea usando 2 pixels en vez de 1.
Chao.
118
« en: Miércoles 19 de Enero de 2005, 14:52 »
Hola Nogard. Con w9x (y supongo que con nt y xp lo mismo, pero no lo he probado) puedes agregar el correspondiente valor en una de estas claves del registro: Para ejecutar siempre al inicio: - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run Para ejecutar una sola vez en el siguiente inicio: - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce Para ejecutar como un servicio: - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices Para ejecutar como servicio una sola vez: - HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce Para agregar el correspondiente valor puedes usar algo así: Option Explicit Private Const HKEY_LOCAL_MACHINE = &H80000002 Private Const ERROR_SUCCESS = 0& Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_SET_VALUE = &H2 Private Const KEY_CREATE_SUB_KEY = &H4 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 Private Const KEY_NOTIFY = &H10 Private Const KEY_CREATE_LINK = &H20 Private Const SYNCHRONIZE = &H100000 Private Const STANDARD_RIGHTS_ALL = &H1F0000 Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Public Function EjecutarAlInicio(Byval Descripcion as string, Byval CmdLine As string) As Boolean Dim lhKey1 As Long, lhKey2 As Long, lRc As Long lRc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software", 0&, KEY_QUERY_VALUE, lhKey1) If lRc <> ERROR_SUCCESS Then Exit Function lRc = RegOpenKeyEx(lhKey1, "Microsoft", 0&, KEY_QUERY_VALUE, lhKey2) RegCloseKey lhKey1 If lRc <> ERROR_SUCCESS Then Exit function lRc = RegOpenKeyEx(lhKey2, "Windows", 0&, KEY_QUERY_VALUE, lhKey1) RegCloseKey lhKey2 If lRc <> ERROR_SUCCESS Then Exit function lRc = RegOpenKeyEx(lhKey1, "CurrentVersion", 0&, KEY_QUERY_VALUE, lhKey2) RegCloseKey lhKey1 If lRc <> ERROR_SUCCESS Then Exit Function lRc = RegOpenKeyEx(lhKey2, "Run", 0&, KEY_ALL_ACCESS, lhKey1) RegCloseKey lhKey2 If lRc <> ERROR_SUCCESS Then Exit Function CmdLine = CmdLine & Chr(0) lRc = RegSetValueEx(lhKey1, Descripcion, 0&, 1&, ByVal CmdLine, Len(CmdLine)) EjecutarAlInicio = (lRc = ERROR_SUCCESS) End Sub
Espero que sirva. Abur.
119
« en: Miércoles 19 de Enero de 2005, 14:36 »
Hola. Puedes recuperar el nuevo número con una función de este estilo: Public Funcion NuevaClave(ByRef ConexionValida As ADODB.Connection, Byval Año as Integer) As Long Dim rs1 As ADODB.Recordset Set rs1 = ADODB.Recordset rs1.Open "SELECT MAX(CampoClave) FROM TablaEnCuestion " _ " WHERE CampoAño=" & Año, ConexionValida NuevaClave = IIf(Not IsNull(rs1.Fields(0).Value), rs1.Fields(0).Value + 1, 1) Set rs1 = Nothing End Function
Chau.
120
« en: Martes 18 de Enero de 2005, 15:36 »
A ver quién tiene valor de tragarse todo esto... deberías intentar poner los posts más claros... 'COMO DECIRLE PARA QUE SUENE CON OTRA TARJETA 'DE SONIDO EN EL CASO DE TENER DOS 'POR QUE mciOpenParms.wDeviceID= -1 NO FUNCIONA
No tengo idea, pero yo seguiría este camino para intentar ver algo: ¿Con qué valor para wDeviceID funciona el asunto? Si el valor es 0, el id tal vez sea un índice para el dispositivo. Prueba con 1 Si el valor tiene pinta de ser un manejador, busca alguna otra función del api que enumere los posibles dispositivos para obtener el manejador adecuado. Suerte.
121
« en: Martes 18 de Enero de 2005, 15:17 »
Hola esmeralda_
A lo mejor poco te ayuda esto, pero ten en cuenta que aunque el puerto pueda permitir una velocidad máxima, en la práctica esta velocidad se ve limitada por la que soporta el medio de transmisión que usas (el cable, vaya...) y los dispositivos a los que te conectes.
Chao.
122
« en: Martes 18 de Enero de 2005, 15:06 »
Hola ebolo.
Una línea dibujada en un control con DrawWidth=1 tendrá irremediablemente el ancho de 1 pixel. Y como quien dice por definición no hay forma de obtener una línea más fina que eso... a no ser claró está, que uses una resolución mayor para tu pantalla, caso en el que como es lógico la línea se verá más fina.
Como sabes, se puede uno imaginar el monitor como una matriz de (pixels_ancho * pixels_alto) puntos, según resolución. El Alto o ancho mínimo de una línea siempre será un punto de esa matriz (ancho DrawWidth=1).
Tampoco puedes 'iluminar la mitad de un punto de la pantalla', por lo que eso de conseguir una línea de ancho 1'5 pixel... chungo. en en cuenta que el valor de DrawWidth indicará el número de pixels de ancho de una línea.
Chao.
123
« en: Viernes 14 de Enero de 2005, 13:57 »
Ki empalador. Suponiendo que el proceso que ejecuta el programa y el que recibe los eventos sea el mismo, podrías usar una variable booleana de una forma similar a esta: Private bStop as Boolean Private Sub Objeto_EventoDetener() bStop = True Do While bStop DoEvents Loop End Sub Private Sub Objeto_EventoContinuar() bStop = False End Sub
Suerte.
124
« en: Jueves 13 de Enero de 2005, 09:28 »
Hola Esmeralda_
Puedes hacer una prueba eliminando el 'On Error Resume Next' o utilizando algún control de errores (mucho mejor). Puede ocurrir que se produzca un casque y no te enteres de que pasa por el On error resume next.
Chao.
125
« en: Jueves 13 de Enero de 2005, 09:25 »
Hola.
Get debe servir perfectamente para leer el archivo. Utiliza una variable de tipo byte para obtener los datos leídos. Si quieres leer más de un byte en cada 'Get' utiliza una matriz también de tipo byte dimensionada según el número de bytes que quieres leer en cada Get.
Chau.
Páginas: 1 ... 3 4 [5] 6 7 ... 43
|
|
|