• Lunes 23 de Diciembre de 2024, 00:54

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 - Brroz

Páginas: 1 ... 8 9 [10] 11 12 ... 43
226
Visual Basic 6.0 e inferiores / Re: Control Activex
« en: Viernes 19 de Noviembre de 2004, 09:18 »
Hola pacegar.

Habría varias formas, la mejor que se me ocurre sería:

Crear un evento en el actX que se desencadenará al finalar el proceso el activeX, mediante una variable boolean controla en la aplicación el desencadenamiento del evento

En el Control activeX:
Código: Text
  1.  
  2. Public Event FinalizadoProceso()
  3.  
  4. Public Sub HazAlgo()
  5. .
  6. .
  7. .
  8.      RaiseEvent FinalizadoProceso
  9.    
  10. End Sub
  11.  
  12.  

En el form:
Código: Text
  1.  
  2. Private bFinalizado as boolean
  3.  
  4. Private Sub Comand1_Click()
  5.     .
  6.     .
  7.     .
  8.     bFinalizado = True
  9.     ControlActiveX1.HazAlgo
  10.     Do Until bFinalizado
  11.         Doevents
  12.     Loop
  13.     .
  14.     .
  15.     .
  16.  
  17. End Sub
  18.  
  19. Private Sub ControlActiveX1_FinalizadoProceso()
  20.  
  21.     bFinalizado = True
  22.  
  23. End Sub
  24.  
  25.  

Chao.

227
Visual Basic 6.0 e inferiores / Re: Ocultar Iconos Del Escritorio
« en: Miércoles 17 de Noviembre de 2004, 17:37 »
Hola Via

Sólo se me ocurre una cosa:

Los iconos en el escritorio son archivos que precisamente se encuentran ubicados en la carpeta que corresponde al escritorio. Con mover el/los archivo/s que te interesen de ubicación, éstos desaparecen del escritorio.

Para encontrar la vía de acceso al escritorio:
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function SHGetSpecialFolderPath Lib "shell32.dll" Alias "SHGetSpecialFolderPathA" _
  5. (ByVal hwnd As Long, ByVal sPath As String _
  6. , ByVal Folder As Long, ByVal Create As Long) As Long
  7.  
  8. Public Function GetPathEscritorio() as string
  9.     Const MAX_PATH_LEN = 256
  10.     Dim s1 As String, lRc As Long
  11.     s1 = String(MAX_PATH_LEN , Chr(0))
  12.     lRc = SHGetSpecialFolderPath(0&, s1, 0&, 0&)
  13.     If lRc > 0 Then
  14.         s1 = UCase(Left(s1, InStr(1, s1, Chr(0)) - 1))
  15.         If Right(s1, 1) <> "\" Then s1 = s1 & "\"
  16.         GetPathEscritorio = s1
  17.     End If
  18. End Function
  19.  
  20.  

Espero que te arregles.

Chao.

228
Visual Basic 6.0 e inferiores / Re: Ftp
« en: Miércoles 17 de Noviembre de 2004, 17:29 »
Kaixo Sagutxo!

Puedes utilizar un control Microsoft Internet Transfer Control. Añádelo a tu proyecto. Su uso es muy sencillo, fíjate en la ayuda del control.

Citar
Inet1.Execute "FTP://ftp.microsoft.com", _
"GET Disclaimer.txt C:\Temp\Disclaimer.txt"

También podrías crear un archivo de proceso por lotes con los comandos FTP que necesites y ejecutarlo.

Espero que esto te sirva.

Agur.

229
Visual Basic 6.0 e inferiores / Re: Ayuda Con Store Procedures En Sql Y Visual Basic
« en: Lunes 15 de Noviembre de 2004, 17:54 »
Hola m@gnus.

A lo mejor es una gambada..., pero prueba declarando un objeto de tipo recordset e inicializándolo con el resultado del 'Execute'.
Código: Text
  1.  
  2. Dim rs1 as ADODB.Recordset
  3. Set rs1 = CBtis.Commands(1).Execute()
  4.  
  5.  
Intenta luego recuperar los valores del primer registro.

Chao.

230
VBA / Re: Parametros En Vb 6.0
« en: Viernes 12 de Noviembre de 2004, 16:06 »
Hola estudiante.

Debes utilizar el objeto Command para recuperar los parámetros de la línea de mandatos...

Código: Text
  1.  
  2. Private Sub Main()
  3.  
  4.     MsgBox "Los parámetros tecleados son: " & vbcrlf _
  5.     Command$  
  6.  
  7. End Sub
  8.  
  9.  

Para simular en tiempo de diseño/debug la recepción de los argumentos, ve a Proyecto>Propiedades del proyecto, elige la pestaña 'Generar' y en 'Argumentos de la línea de comandos' puedes escribir los argumentos que necesites para probar.

Chao.

231
Visual Basic 6.0 e inferiores / Re: Otra Inquietud!!!
« en: Viernes 12 de Noviembre de 2004, 16:01 »
Hola vbmc_2004.

No comprendo muy bien lo que quieres decir, pero en todo caso, utiliza el evento Click del ComboBox para limpiar los TextBox, no uses el Change.

Ya nos contarás.

Chao.

232
Visual Basic 6.0 e inferiores / Re: Error En Una Sola Máquina
« en: Viernes 12 de Noviembre de 2004, 15:29 »
Hola.

Siguiendo con lo que dice Sagutxo, creo que el problema más que de falta de algún componente, es de incompatibilad de versiones. Alguna clase de algún componente ocx o dll que utilizas en tu proyecto cuenta con propiedades distintas (en este caso en una clase falta una propiedad que tú intentas utilizar).

Posible solución:
Examina todos los archivos con dependencias en tu proyecto (puedes obtener una lista con el asistente de empaquetado y distribución de vb) y comprueba que la versión de los archivos en los dos equipos con w98 es la misma. Seguramente encontrarás en el equipo en el que falla la aplicación un archivo más antiguo. Sustitúyelo (desregistra, reemplaza, registra) y imagino que se solucionará tu problema.

Chao.

233
Visual Basic 6.0 e inferiores / Re: Detectar Dispositivos
« en: Miércoles 10 de Noviembre de 2004, 20:01 »
Hola.

Sobre lo que comentas de manipular el registro es algo que hago mediante funciones del api. Si necesitas info tal vez te pueda ayudar...

En lo que respecta a sacrificar a los lectores... precisamente la gracia de estos foros es que cualquiera con un problema similar pueda seguir el desarrollo del tema hasta el final y así sacar su propio provecho, y que las aportaciones vengan desde cualquiera de los forer@s.

Por otro lado tampoco me quiero comprometer en exceso con problemas particulares, ya que luego tal vez no pueda (o no me apetezca, o no sepa) dar el soporte al asunto que me gustaría que a mi me dieran... de todas formas mi intención es ayudar (dentro de unos límites, claro, porque al fin y al cabo yo no vivo de esto).

Suerte, chao.

234
Visual Basic 6.0 e inferiores / Re: Desarrollar Aplicacion
« en: Miércoles 10 de Noviembre de 2004, 19:48 »
Hola BlackBoy.

Veo que no se te dió... me voy a explayar un poco con lo que se me ocurre:

Lo primero que debes hacer es averiguar la resolución actual. Esto lo puedes hacer de esta forma:
Código: Text
  1.  
  2. Private Sub RtvResolucion ()
  3.    MsgBox Screen.Width / Screen.TwipsPerPixelX _
  4.    & " x " & Screen.Height / Screen.TwipsPerPixelY
  5. End Sub
  6.  
  7.  

Bueno, lo siguiente es calcular mediante una regla de tres un coeficiente por el cual multiplicar alto y ancho de todos sus formularios y controles... y ya de paso, sus propiedades Top y Left para recolocarlos de acuerdo con su nuevo tamaño.

Este cálculo sería una regla de tres de este estilo:
Por ejemplo, el ancho original del Form es a la resolución horizontal original como x (el nuevo ancho para el Form) es a la resolución horizontal actual.
O lo que sería lo mismo (si es que no me estoy equivocando:
NDH = NRH / ARH * ADH
donde:
NDH=Nueva dimensión horizontal del objeto
NRH=Nueva resolución horizontal del monitor
ARH=Antigua resolución horizontal del monitor
ADH=Antigua dimensión horizontal del objeto

Como no sé si me habré explicado muy bien, pongo un ejemplo:
- Cuado diseñé la aplicación la resolución era 800 x 600
- Ahora la nueva resolución es 1034 x 728
- Cuando diseñé la aplicación, el ancho (width) de un objeto era 5000 twips
- ¿Cuál sería el nuevo ancho adecuado para el objeto una vez cambiada la resolución?
* La respuesta es:
Objeto.Width = 1034 / 800 * 5000

Resumiendo y así a grandes rasgos... En un módulo:
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Public dCoefX as double
  5. Public dCoefY as double
  6.  
  7. Private Sub Main
  8.     Const X_RES_ORG = 800 'Por ejemplo
  9.     Const Y_RES_ORG = 600
  10.     dCoefX = Screen.Width / Screen.TwipsPerPixelX / X_RES_ORG
  11.     dCoefY = Screen.Height / Screen.TwipsPerPixelY / Y_RES_ORG
  12. End Sub
  13.  
  14.  
En cada Form:
Código: Text
  1.  
  2. Private Sub Form_Resize
  3.    On Error Resume Next
  4.    Me.Width = Me.Width * dCoefX
  5.    Me.Heigth = Me.Height * dCoefY
  6.    Dim ctl1 As Control
  7.    For Each ctl1 In Me.Controls
  8.        ctl1.Move _
  9.        ctl1.Left * dCoefX, _
  10.        ctl1.Top * dCoefY, _
  11.        ctl1.Width * dCoefX, _
  12.        ctl1.Height * dCoefY
  13.    Next ctl1
  14. End Sub
  15.  
  16.  

Esto tiene una salvedad... si los forms pueden ser dimensionados por el usuario se producirá un efecto indeseado a no ser que en vez de multiplicar por el coeficiente las dimensiones actuales,  hagas con las originales a partir de un valor constante.

Supongo que habrás amarrado la idea... espero que con con esto puedas arreglar y sacar algo en limpio.

El mundo de las proporciones es muy curioso. Suerte.

235
Visual Basic 6.0 e inferiores / Re: Como Puedo Enviar Bytes Por El Puerto Serie
« en: Viernes 5 de Noviembre de 2004, 17:08 »
Hola

viendo el último comentario, comento un par de cosillas:

Si abres un archivo como binario, podrás leer y escribir en él utilizando Get y Put respectivamente. Los parámetros que reciben estos métodos son el número de canal del archivo abierto, un desplazamiento (offset) a partir del cual leer y/o escribir y una variable de typo byte. Sobre los dos primeros parámetros creo que sobran explicaciones, el último aparte de contener el valor leído/escrito indica la cantidad de bytes que se leen/escriben. Es decir, si utilizas una matriz dimensionada con x elementos, leeras/escribirás x bytes en el archivo. Si no utilizas una matriz, logicamente leeras/escribirás 1 byte.

Tambien hay que considerar que a la hora de abrir el puerto con OPEN, se pueden indicar parámetros para configurar la comunicación con el mismo (ahora mismo no sabría la sintáxis, pero hacer, se hace).

A partir de esto, como creo que el el caso de scorpion25acv, podría ocurrir que en una máquina leas de un archivo en disco cierta cantidad (al fin y al cabo como si dimensionaras un buffer) de bytes y a continuación los escribas en un puerto exactamente igual como si de un archivo en disco se tratase (configuraciones e historias así aparte). En otro punto existirá otro equipo leyendo información (con Get) de su puerto también abierto como un archivo.
La salvedad a la parte que escucha, es que mietras que no se reciben datos del archivo (del puerto), la ejecución del código se detiene en el Get...

Sin duda que el control Comm simplifica la tarea, pero básicamente supongo que viene a hacer lo mismo.

Chao.

236
Visual Basic 6.0 e inferiores / Re: Detectar Dispositivos
« en: Viernes 5 de Noviembre de 2004, 16:44 »
Hola scorpion25acv.

Tal vez unas pequeñas modificaciones en el código, obviando el control Comm sirvan para hayar el puerto COM más alto. Yo no tengo módem ni ratón serial para hacer pruebas, pero puedes probarlo tú y contar como te fué... No las tengo todas conmigo de que funcione, pues a pesar de no conocer como funciona internamente el control, supongo que hace algo parecido, abriéndolo como un archivo.
Código: Text
  1.  
  2. Public Function MaxComPort() As Integer
  3.  
  4.     On Error GoTo Err_Chk
  5.     Dim i1 As Integer, iCanal As Integer
  6.     For i1 = 1 To 16
  7.         iCanal = FreeFile
  8.         Open "COM" & i1 For Binary As #iCanal
  9.         Close #iCanal
  10.     Next i1
  11.  
  12. Exit_Chk:
  13.     On Error Resume Next
  14.     Close #iCanal
  15.     MaxComPort = i1
  16.     Exit Function
  17.    
  18. Err_Chk:
  19.     If Err.Number = 53 Then ' (53 el archivo no existe)
  20.         i1 = i1 - 1
  21.         Resume Exit_Chk
  22.     Else
  23.         MsgBox Err.Description
  24.     End If
  25.  
  26. End Function
  27.  
  28.  

Ahora una cuestión que surge es: ¿qúe ocurre con los puertos USB?

Tal vez al final la mejor solución pueda estar recuperando valores del registro de windows. Échale un vistazo a esta clave (w98):
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/Modem
Contendrá una subclave para cada uno de los módems instalados. Uno de sus valores será "AtachedTo" que te indicará el puerto.

Espero que esto pueda ayudar. Abur.

237
Visual Basic 6.0 e inferiores / Re: Detectar Dispositivos
« en: Viernes 5 de Noviembre de 2004, 15:31 »
Hola.

A ver si a lo largo de la tarde puedo probar estas cosas que me comentas y te digo algo...

Sobre las apis puedes buscar información en el MSDN. Personalmente no las he utilizado nunca y para poder decirte algo con fundamento tendría que informarme y probarlo.

Chao.

238
Visual Basic 6.0 e inferiores / Re: Imagenes En Access A Fichero
« en: Viernes 5 de Noviembre de 2004, 15:25 »
Yo también haría lo mismo, sin duda... es más sencillo y versátil.

Chao.

239
Visual Basic 6.0 e inferiores / Re: Adaptar Picturebox Al Tamaño De La Imagen
« en: Viernes 5 de Noviembre de 2004, 15:22 »
Hola civinet.

Si te es indiferente, utiliza un control Image que cuenta con la propiedad Strech, que establecida a True ajusta el tamaño de la imagen al del control. Esta es la solución más sencilla.

Si te es indispensable usar un PictureBox, podrías utilizar su propiedad Autosize, pero esto ocasionaría que el control se ajustase al tamaño de la imagen, cosa normalmente indeseable. Podrías optar por dos soluciones más que se me ocurren:
Utilizar la función api StrechBlt para hacer más pequeña la imagen y posteriormente copiar sobre el dc del PictureBox.
Insertar el PictureBox dentro de un control Frame, establecer la propiedad del PictureBox Autosize=True y controlar mediante controles ScrollBar el desplazamiento del PictureBox para la visualización de la imagen (en este mismo foro hay algún ejemplo de cómo hacer esto).

Suerte.

240
Visual Basic 6.0 e inferiores / Re: Form_unload No Me Resulta!!!!
« en: Jueves 4 de Noviembre de 2004, 19:57 »
Kaixo Sagutxo (Digo Kaixo por la tx del nick, pero a lo mejor meto la gamba!)

Pues no soy profesor, no... pero la verdad es que normalmente intento esforzarme para que se comprenda lo que quiero decir. Tal vez sea que estudié letras y eso me sirvió de algo (desde luego para comer no).

Por cierto, me parece ver en tu avatar a una marmota haciendo trabajos manuales, ¿voy desencaminado...?

Salud.

241
Visual Basic 6.0 e inferiores / Re: Abrir Formularios Al Ejecutar
« en: Jueves 4 de Noviembre de 2004, 18:33 »
Hola de nuevo.

Así de flash me acabo de dar cuenta de un pequeño detalle que hará que la solución que te doy no funcione: Al finalizar la aplicación se descargarán todos los formularios... por lo que se hará un 'DeleteSetting' de todos y cada uno. Para evitar esto, puedes usar una variable booleana definida como pública a nivel de módulo y condicionar el 'DeleteSetting' por esa variable: es decir, antes del End de la aplicación puedes poner la variable a True

Código: Text
  1.  
  2. Public indFinal as Boolean
  3.  
  4. Private Sub FinAplicación()
  5.     HacerCosas
  6.     indFinal = True
  7.     End
  8. End Sub
  9.  
  10.  
Código: Text
  1.  
  2. Private Sub Form_Unload(Cancel as integer)
  3.    If Not indFinal Then DeleteSetting App.ExeName, Me.Name
  4. End Sub
  5.  
  6.  

Espero que me haya explicado ok.

Chau.

242
Visual Basic 6.0 e inferiores / Re: Controlar Camara Remota
« en: Jueves 4 de Noviembre de 2004, 18:20 »
Hola.

Si estas trabajando en un entorno empresarial y no tienes tiempo pero sí recursos, te recomendaría que te enterases de las posibilidades que ofrece el producto Terminal Server de Microsoft. Aunque no soy gran conocedor, estoy seguro de que podrías realizar lo que te propones de una forma sencilla... El único requisito para el equipo remoto sería tener instalado el cliente de Terminal Server, claro... Tal vez esta solución suponga para ti matar moscas a cañonazos, pero puedes tenerla en cuenta.

También podrías contemplar crear una aplicación mediante sockets... en este foro hay gente buena conocedora del control winsock y me consta que hay bastantes temas explicando su uso... o una aplicación Exe ActiveX...
Ahora bien, en una vpn o similar no habría mayor problema, pero para poder acceder desde cualquier sitio de internet al equipo de la cámara, supongo necesitarás algo más que vb...

Lamento no poder ser de más ayuda.

Suerte.

243
Visual Basic 6.0 e inferiores / Re: Ayuda Con El Codigo
« en: Jueves 4 de Noviembre de 2004, 18:03 »
kai excellion.

La sentencia SQL debería funcionar, pero pudiera producirse un fallo que desembocase en un error de sintaxís en el caso de que el valor de la variable persona contuviese una comilla sencilla.

Si este es tu caso, sustituye la comilla sencilla por dos comillas sencillas. Como me da la sensación de que usas access y no vb, no podrás usar la función replace, por lo que tendrías que crear una función para parsear el valor.

Suerte.

244
Visual Basic 6.0 e inferiores / Re: Form_unload No Me Resulta!!!!
« en: Jueves 4 de Noviembre de 2004, 17:18 »
Hola.

Como complemento a estas cosas, te recomendaría utilizar el evento QueryUnload del formulario que se desencadena justo antes del Unload pero que permite controlar la causa por la que el formulario es descargado mediante el parámetro UnloadMode, aunque en tu caso ésto tal vez te sea indiferente.

Abur.

245
Visual Basic 6.0 e inferiores / Re: Abrir Formularios Al Ejecutar
« en: Jueves 4 de Noviembre de 2004, 17:13 »
Hola fap1603.

Puedes conseguir lo que pretendes de varias formas, si bien yo aquí te muestro una de mi gusto.

Se trata de utilizar funciones de vb que nos permiten almacenar , borrar y recuperar 'propiedades' en el registro de windows (poco nos importará en que sección o clave...)
Estas funciones son SaveSetting , GetSetting y DeleteSetting

Cada vez que muestres un formulario de estos que quieres que sea visible en el caso que dices, síguelo de una llamada a SaveSetting:
Código: Text
  1.  
  2.     .
  3.     .
  4.     .
  5.     Dim frm1 As Form1
  6.     Set frm1 = Form1
  7.     frm1.Show
  8.     SaveSetting App.ExeName, frm1.Name, "Cargado", "Sí"
  9.     .
  10.     .
  11.     .
  12.  
  13.  

En el evento Unload del formulario añade:
Código: Text
  1.  
  2. Private Sub Form_Unload(Cancel as integer)
  3.     DeleteSetting App.ExeName, Me.Name
  4. End Sub
  5.  
  6.  

En el procediento que se inicie la aplicación (Sub Main o evento Load del formulario principal) recupera los formularios que estaban visibles.
Supongamos que los formularios de tu proyecto son 5 y se llaman FormN, donde N es el número de formulario. El código podría ser algo así:
Código: Text
  1.  
  2. Private Sub Main()
  3.    Dim i1 as Integer , s1 as String, frm1 as Form
  4.    For i1 = 1 to 5
  5.        s1 = "Form" & i1
  6.        If "Sí" = GetSetting(App.ExeName, s1, "Cargado", "No") Then
  7.            Select Case i1
  8.                Case 1
  9.                    Set frm1 = new Form1
  10.                case 2
  11.                    Set frm1 = new Form2
  12.                case 3
  13.                    Set frm1 = new Form3
  14.                case 4
  15.                    Set frm1 = new Form4
  16.                case 5
  17.                    Set frm1 = new Form5
  18.            End Select
  19.            frm1.Show
  20.        End If
  21.    Next i1
  22.    Set frm1 = Nothing
  23. End Sub
  24.  
  25.  

Si cuentas con una utilidad para desinstalar tu aplicación, o cuando te interese borrar estas propiedades, utiliza:
Código: Text
  1.  
  2. DeleteSetting App.ExeName
  3.  
  4.  

Espero que con estos ejemplos explicara la idea lo suficientemente bien... es posible que en el código haya cometido algún fallo (está escrito al vuelo), pero la idea sería esa.

Suerte.

246
Visual Basic 6.0 e inferiores / Re: Desarrollar Aplicacion
« en: Miércoles 3 de Noviembre de 2004, 17:10 »
Hola Black Boy.

Utiliza la herramienta de búsqueda en este mismo foro indicando como palabra a buscar resolución. Veras varios temas que ahondan en el problema con los que seguro encuentras tu solución.

Chao.

247
Visual Basic 6.0 e inferiores / Re: A Alguien Se Le Ocurre El Como Hacer Este Proceso?
« en: Miércoles 3 de Noviembre de 2004, 17:04 »
Hola.

Te adjunto un pequeño código para que veas a lo que me refería...

Añade en un formulario un PictureBox y pega el siguiente código:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Type TiempoXEstado
  5.     Estado As Integer
  6.     Horas As Double
  7. End Type
  8.  
  9. Private Sub Form_Load()
  10.    
  11.     Picture1.AutoRedraw = True
  12.     Picture1.BackColor = vbWhite
  13.     Picture1.ForeColor = vbBlack
  14.     Picture1.FontName = "Small Fonts"
  15.     Picture1.FontSize = 6
  16.    
  17.     'Datos de ejemplo
  18.     Dim Datos(1 To 5) As TiempoXEstado
  19.     Datos(1).Estado = 1
  20.     Datos(1).Horas = 23
  21.     Datos(2).Estado = 2
  22.     Datos(2).Horas = 7
  23.     Datos(3).Estado = 3
  24.     Datos(3).Horas = 1
  25.     Datos(4).Estado = 4
  26.     Datos(4).Horas = 84
  27.     Datos(5).Estado = 8
  28.     Datos(5).Horas = 10.3
  29.    
  30.     On Error Resume Next
  31.    
  32.     Dim i1 As Integer
  33.     i1 = UBound(Datos)
  34.    
  35.     Picture1.Cls
  36.    
  37.     If i1 = 0 Then Exit Sub
  38.    
  39.     Picture1.Scale (-5, -5)-(95, i1 * 10 + 7)
  40.    
  41.     Picture1.DrawStyle = 0
  42.    
  43.     Picture1.Print "Estados"
  44.     Picture1.Line (0, 0)-(0, i1 * 10)
  45.     Picture1.Line (0, i1 * 10)-(90, i1 * 10)
  46.     Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth("Horas") / 2
  47.     Picture1.CurrentY = Picture1.ScaleHeight - Picture1.TextHeight("Horas") - 5
  48.     Picture1.Print "Horas"
  49.    
  50.     Picture1.DrawStyle = 2
  51.     Picture1.DrawWidth = 1
  52.    
  53.     Dim i2 As Integer
  54.     For i2 = 10 To 88 Step 10
  55.         Picture1.ForeColor = vbBlue
  56.         Picture1.Line (i2, 0)-(i2, i1 * 10)
  57.         Picture1.Print i2
  58.     Next i2
  59.    
  60.     Picture1.DrawWidth = 4
  61.    
  62.     For i2 = 1 To i1
  63.         Picture1.ForeColor = vbRed
  64.         Picture1.Line (Datos(i2).Horas, i2 * 10 - 5)-(0, i2 * 10 - 5)
  65.         Picture1.CurrentX = Picture1.CurrentX - 2 * Picture1.TextWidth(Datos(i2).Estado)
  66.         Picture1.Print Datos(i2).Estado
  67.     Next i2
  68.  
  69. End Sub
  70.  
  71.  

Espero que te sirva.

Chao.

248
Visual Basic 6.0 e inferiores / Re: Celda Vacia Msflexgrid
« en: Martes 2 de Noviembre de 2004, 18:15 »
Hola El_Lucho.

Es posible que tengas en algún lado del código 'On Error Resume Next', que se produzca un error (por ejemplo que 'i' o 'j' tengan un valor incorrecto para el índice de una de las dimensiones) y consecuentemente la ejecución del código pase a la siguiente instrucción.

Por otro lado (y en caso de que la situación anterior no se produjese)... ahora mismo no recuerdo el tipo de datos que devuelve TextMatrix, pero ten en cuenta que si devuelve un variant y la celda está vacía el valor devuelto puede ser Null , que como sabrás no es lo mismo que "".

Ahora mismo marcho y no voy a probar esto anterior, pero si mañana aún no has arreglado, lo comprobaré si el tiempo y las ganas lo permiten.

Chao.

249
Hola pacegar.

Realmente no sé dónde tienes el atasco, pero la cosa como ya habrás imaginado consiste en:

Primer lugar (como muy bien ya sabes) debes obtener el total de tiempo para cada uno de los estados. Esta información podrías alamacenarla en un recordset si la obtienes mediante una sentencia SQL, en una matriz de dos dimensiones (estado y tiempo), en una estructura de datos definida por ti, etc...

Lo siguiente es dibujar la gráfica. Te puedes valer de un PictureBox al que mediante su metodo Scale habrás definido la forma de representar las coordenadas... utiliza métodos gráficos para pintar la correspondiente grafica (¿que tal una tipo barras? puede ser la más sencilla).

No creo que tengas problemas para hacer las gráficas... tal vez puedas concretar un poco más lo que necesitas y mañana hablamos (en breve marcho a casa).

Abur.

250
Visual Basic 6.0 e inferiores / Re: Buscar Un Fichero Para Macro Excel
« en: Martes 2 de Noviembre de 2004, 17:37 »
Imos ver...

En el mismo módulo en el que tienes el código del macro, crea una función que devolverá un valor string. Ese valor corresponderá con el nombre de un archivo seleccionado mediante el uso de la función api GetOpenFileName (si no sabes utilizarla, busca en este mismo foro, te repito que hay un ejemplos de su uso). La declaración del api puedes hacerla también en el módulo donde tienes el macro.

En vez de utilizar un literal ("D:\LOGS\LOG ISA\FW.log") , usa una variable a la que previamente habrás asignado el valor devuelto por la función de la que hablamos antes.

¿Mexplicao mejor?,¿lo pillas ya?,¿prefieres todo el código ya escrito?...

Chau.

Páginas: 1 ... 8 9 [10] 11 12 ... 43