• Domingo 22 de Diciembre de 2024, 03:51

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 [2] 3 4 ... 43
26
Visual Basic 6.0 e inferiores / Re: Archivo De Configuracion
« en: Jueves 31 de Marzo de 2005, 10:40 »
Hola.

Solicito, disculpa la intromisión en el tema, pero me gustaría preguntarle a Widark o a alguien que lo sepa y pase por aquí... ¿qúe es eso del Splash?

Obrigado.

27
Visual Basic 6.0 e inferiores / Re: Texto Vertical
« en: Jueves 31 de Marzo de 2005, 10:37 »
Hola.

Me parece recordar que el api del gdi proporciona alguna función para rotar imágenes. Siendo así, lo único que se necesita es pintar el texto en el correspondiente DC y rotar la imagen.

Chao.

28
Sobre los Foros de SoloCodigo / Los Indios No Me Dan Permiso
« en: Jueves 31 de Marzo de 2005, 10:29 »
Buenas...

Hoy intentando contestar un tema a 'cangri' en el foro de VB, me encontré con este error tras pulsar el botón 'responder':
Citar
Forbidden
You don't have permission to access /index.php on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
--------------------------------------------------------------------------------
Apache/1.3.33 Server at foros.solocodigo.com Port 80
La respuesta no se almacenó.

Probé de nuevo después de un rato y reiniciar el pc (truco del informático) y por supuesto seguía ocurriendo lo mismo.

También es significativo que cuando pulsé para responder a la discusión se me pedía identificarme de nuevo diciéndome que no tengo permiso para responder. Curiosamente una vez identificado nuevamente parecía sí querer permitirmelo.

El mensaje es bastante explícito. ¿Existen temas que necesiten para ser respondidos de algún tipo de permiso especial?

Chao.

29
Visual Basic 6.0 e inferiores / Re: ¿como Cargar Un Formulario En Un Frame?
« en: Jueves 31 de Marzo de 2005, 09:41 »
Hola saroaes21.

No sé cómo hacer tal cosa con un formulario, pero supongo que si en lugar de un form usas un control ocx, sí podrás hacerlo (el cómo es cosa de html).

Suerte.

30
Visual Basic 6.0 e inferiores / Re: Seleccion De Varios Registros Datagrid
« en: Jueves 31 de Marzo de 2005, 09:38 »
Hola roy.

Código: Text
  1.  
  2. Private Sub DataGrid1_SelChange(Cancel As Integer)
  3.     Dim lIdx As Long, lFrom As Long, lTo As Long
  4.     lIdx = DataGrid1.SelBookmarks.Count
  5.     If lIdx = 2 Then
  6.         lFrom = DataGrid1.SelBookmarks(0)
  7.         lTo = DataGrid1.SelBookmarks(1)
  8.         Dim iStep As Integer
  9.         If lTo < lFrom Then
  10.             lTo = lTo + 1
  11.             lFrom = lFrom - 1
  12.             iStep = -1
  13.         Else
  14.             lTo = lTo - 1
  15.             lFrom = lFrom + 1
  16.             iStep = 1
  17.         End If
  18.         For lIdx = lFrom To lTo Step iStep
  19.             DataGrid1.SelBookmarks.Add lIdx
  20.         Next lIdx
  21.     End If
  22. End Sub
  23.  
  24.  

Chao.

31
Visual Basic 6.0 e inferiores / Re: Mshflexgrid Y Consulta
« en: Jueves 17 de Marzo de 2005, 15:44 »
Oye... que acabo de caer da burra fijándome bien: utilizas un flexgrid jerárquico y el ejemplo es para uno corriente y moliente. Supongo que te sirve igual... pero  si no es así, avisa.

chau.

32
Visual Basic 6.0 e inferiores / Re: Mshflexgrid Y Consulta
« en: Jueves 17 de Marzo de 2005, 15:37 »
Vale.

No sé cómo es la vista que obtienes en la consulta, pero suponiendo que obtienes
dos campos por registro: nombre y valor para el día y que los registros están ordenados de esta forma: reg 1 = lunes, reg 2 = martes, reg 3= mierc ... reg 5 =viernes, reg 6 = lunes, ... La cosa podría hacerse así:
 
Suponiendo que el recordset se llame rs1 y que el Grid se llame flx1
Código: Text
  1.  
  2.     flx1.Clear
  3.     flx1.FixedRows = 1
  4.     flx1.FixedCols = 0
  5.     flx1.Rows = 50 / 5
  6.     flx1.Cols = 6
  7.     flx1.TextMatrix(0, 0) = "Nombre"
  8.     flx1.TextMatrix(0, 1) = "Lunes"
  9.     flx1.TextMatrix(0, 2) = "Martes"
  10.     flx1.TextMatrix(0, 3) = "Miércoles"
  11.     flx1.TextMatrix(0, 4) = "Jueves"
  12.     flx1.TextMatrix(0, 5) = "Viernes"
  13.     Dim i1 As Integer, lCta As Long
  14.     rs1.MoveFirst
  15.     Do Until rs1.EOF
  16.         lCta = lCta + 1
  17.         flx1.TextMatrix(lCta, 0) = rs1.Fields(0).Value
  18.         flx1.TextMatrix(lCta, 1) = rs1.Fields(1).Value
  19.         For i1 = 2 To 5
  20.             rs1.MoveNext
  21.             flx1.TextMatrix(lCta, i1) = rs1.Fields(1).Value
  22.         Next i1
  23.         rs1.MoveNext
  24.     Loop
  25.  
  26.  

Por supuesto que este código puede cascar o producir resultados inesperados si la secuencia de los registros no es como comentaba... pero bueno, esas son cosas que deberás ir ajustando.

De todas formas, te recomendaría intentar usar una (o varias) sentencias SQL que devolvieran una vista de los datos tal y como la necesitas (la cosa sería por lo menos 4 veces más rápida).

Suerte.

33
Visual Basic 6.0 e inferiores / Re: Mscal.oxc
« en: Jueves 17 de Marzo de 2005, 15:22 »
Hola solitario_lobo.

No conozco el control que comentas... porque supongo que no te estás refiriendo a un control MonthView, ni a un DatePicker, claro.

Si no te refieres a ninguno de los anteriores, lo mejor es que intentes localizar aluna información al respecto por parte de la casa desarrolladora del control.

Si por el contrario, sí te refieres a uno de esos controles que citaba, copia al directorio del sistema y registra el archivo MSCOMCT2.OCX.

Suerte.

34
Visual Basic 6.0 e inferiores / Re: Lentitud Ejecución
« en: Jueves 17 de Marzo de 2005, 15:15 »
Hola pepo.

Ante lo que cuentas y el código que posteas se podrían hacer varias consideraciones.

1 - La ejecución siempre será más rápida usando vba desde el propio libro, por el mismo motivo que siempre será más rápido el acceso a una variable local que a una propiedad encapsulada en una clase dentro del mismo ejecutable, que a su vez será más rápido que el acceso a otra propiedad de otra clase en algun otro servidor.

2 - En lugar de setear variables de objeto de la clase cell (cosa que supongo, porque no veo la declaración... seguramente sean variant si es que no hay un Option Explicit por ahí) será mucho más efectivo almacenar los valores en variables double, por ejemplo.

3 - Utiliza como índices para las celdas distintas variables: unas con el valor de la variable del bucle + 1 y otras con -1, para evitar realizar varias sumas y restas en cada iteración (es decir, si tienes 'i + 1' tres veces en el bucle, usa una variable asignándole el valor i +1 y utiliza la variable en lugar de la operación.

Sólo con observar los puntos 2 y 3 supongo que verás como va mejorando el rendimiento del método.

Chao.

35
Visual Basic 6.0 e inferiores / Re: Mshflexgrid Y Consulta
« en: Jueves 17 de Marzo de 2005, 15:01 »
Hola solcito.

La verdad es que no consigo comprender como deseas visualizar los datos.

Por lo que entendí, dices que no te vale una vista de este estilo:
Código: Text
  1.  
  2. Persona_________ Lunes____Martes__Miercoles__Jueves__Viernes__
  3. Juan perez________8:00_____8:15_____8:04_____8:05____8:06
  4.  
  5.  
y tampoco esta:
Código: Text
  1.  
  2. Persona________Día__________Hora__
  3. Juan pérez_____LUNES_______8:00
  4. _______________MARTES______8:15
  5. _______________MIÉRCOLES___8:04
  6. _______________JUEVES______8:05
  7. _______________VIERNES_____8:06
  8.  
  9.  

Tal vez pudieras describir más la vista que necitas...

Chao.

36
Visual Basic 6.0 e inferiores / Re: Añadir Plugins A Mi Aplicaion
« en: Jueves 17 de Marzo de 2005, 14:45 »
Hola roxiii.

Revisando este tema, se me olvidaba decirte (por si no lo sabías ya) lo siguiente como complemento:

Para registrar un exe activeX llama al programa pasándole como parámetro /Register para registrar o /Unregister para desregistrar.

Chao.

37
Visual Basic 6.0 e inferiores / Re: Agregar Archivo
« en: Miércoles 16 de Marzo de 2005, 15:21 »
Hola.

No veo mucho sentido en la práctica a lo que pretendes... sería mucho más sencillo (y económico en almacenamiento) agregar todos los archivos comprimidos en un zip o similar.

De todas formas el asunto podría hacerse siguiendo estos pasos:

1 - Copia el ejecutable principal, por ejemplo PPAL.EXE, con por ejemplo nombre CONTENEDOR.EXE.

2 - Abre CONTENEDOR.EXE en  modo binario.

3 - Escribe al final de CONTENEDOR.EXE el nombre del archivo que vas a añadir (PPAL.EXE)

4 - Escribe al final de CONTENEDOR.EXE  el tamaño en bytes que tenga el nombre de archivo (PPAL.EXE = 8 bytes), empaquetado en 2 bytes debería sobrar.

5 - Escribe al final de CONTENEDOR.EXE  el tamaño en bytes que tenga PPAL.EXE (empaquetado en 4 bytes debería llegar).

6 - Abre el archivo AÑADIR_1.EXE también en modo binario y escribe en CONTENEDOR.EXE los bytes correspondientes.

7 - Escribe al final de CONTENEDOR.EXE el nombre del archivo que acabas de añadir (AÑADIR_1.EXE)

8 - Escribe al final de CONTENEDOR.EXE  el tamaño en bytes que tenga el nombre de archivo (AÑADIR_1.EXE = 12 bytes), empaquetado en 2 bytes debería sobrar.

9 - Escribe al final de CONTENEDOR.EXE  el tamaño en bytes que tenga AÑADIR_1.EXE (empaquetado en 4 bytes debería llegar).

10 - Repite los pasos 7, 8 y 9 con cuantos archivos desees añadir.

Por supuesto PPAL.EXE (ahora ya CONTENEDOR.EXE) debe estar preparado para hacer lo siguiente.

1 - Abrirse a si mismo en modo binario.

2 - Leer 4 bytes de CONTENEDOR.EXE desde el offset LOF - 4 para obtener el tamaño del archivo a extraer.

3 - Leer 2 bytes de CONTENEDOR.EXE desde el offset LOF - 6 para obtener el tamaño del nombre del archivo.

4 - Leer  n=Tamaño_nombre_archivo bytes de CONTENEDOR.EXE desde el offset LOF - 6 - Tamaño_nombre_archivo para obtener el nombre de archivo original.

5 - Abrir el archivo cuyo nombre obtuviste en el paso anterior en modo binario.

6 - Leer de CONTENEDOR.EXE tantos bytes como tenga el tamaño de archivo obtenido en el punto 2, desde el offset offset_anterior - tamaño archivo.

7 - Escribe los bytes que leiste en el punto anterior en el nombre de archivo.

8 - Imagino que ya habrás pillado la mecánica del asunto... sigue hasta que el offset sea = 0.

Suerte.

38
Hola MindEye.

Es que resulta que esas propiedades a las que te refieres son de sólo lectura en tiempo de ejecución.

Se me ocurren dos posibles soluciones:

1 - Usar dos textbox y hacer visible/invisible uno u otro según te interese.
2 - Currarte algo parecido a un textbox dibujándolo tú todo.

La primera solución es sin duda poco deseable, pero es lo más sencillo frente a hacer un ocx con una área en la que poder escribir o mostrar y modificar texto, con el correspondiente engorro que supone tener que controlar y dibujar la posición del cursor, texto seleccionado y cosas por el estilo.

Suerte.

39
Visual Basic 6.0 e inferiores / Re: Mas Ayudita
« en: Martes 15 de Marzo de 2005, 15:16 »
Hola az8.

Sobre el tema del control remoto:
Necesitarás tener instalado software en los equipos que quieres controlar (y por supuesto en el que los controle). Si este soft lo quieres desarrollar tú, creo que lo más factible sería comunicarse con los programas que apagarán el sistema localmente mediante sockets. Ponlos a la escucha y cuando tu les envíes la correspondiente señal, pos que se apaguen.
... Por el foro hay abundantes ejemplos de uso del winsock.

Sobre el otro tema: Cosas parecidas a lo que quieres las hay a tutiplen por el foro (aunque estén por separado). Usa el buscador porque no siempre hay que esperar el chollo ya hecho.

Suerte.

40
Visual Basic 6.0 e inferiores / Re: Seleccionar De Un Datagrid Y Cargar En Txt
« en: Martes 15 de Marzo de 2005, 15:08 »
Hola misiodan

No explicas qué es lo que seleccionas para guardar, ¿varias filas?,¿varias columnas?,¿una celda?...

Segun lo que quieras usa las propiedades del datagrid:

- SelBookmarks. Para conocer las filas seleccionadas.

- SelStartCol y SelEndCol. Para conocer respectivamente la primera y la última colunma seleccionada.

- Row. Permite conocer la fila actual del recordset.

- Col. Permite conocer la coluna seleccionada actual (en el 'registro', no en el encabezado) del grid.

- Columns. Da información sobre cualquier columna.

Supongo que el grid estará enlazado a un control data.

- Recordset. Usa esta objeto del control para manejarte a gusto por los datos.

Hala, a practicar.

Suerte.

41
Visual Basic 6.0 e inferiores / Re: Acceso Directo
« en: Martes 15 de Marzo de 2005, 14:48 »
Hola.

Yo creo los accesos directos con esta función:
Código: Text
  1.  
  2. Private Function CrtShortCut(ByVal Link As String, ByVal Cmd As String) As Boolean
  3.  
  4.     On Error GoTo Err_links
  5.     Dim objWS As Object
  6.     Set objWS = CreateObject("WScript.Shell")
  7.     Dim objSC As Object
  8.     Set objSCsc = objWS.CreateShortCut(Link)
  9.     objSC.TargetPath = Cmd
  10.     objSC.Save
  11.     CrtShortCut = True
  12.  
  13. Exit_Links:
  14.     Set objSC = Nothing
  15.     Set objWS = Nothing
  16.     Exit Function
  17.    
  18. Err_links:
  19.     MsgBox "Erro ó crea-lo acceso directo '" & Link & "'." & String(2, vbCrLf) _
  20.     & "(" & Err.Number & ") " & Err.Description , vbCritical, "Instalar TTPP"
  21.     Resume Exit_Links
  22.    
  23. End Function
  24.  
  25.  

La llamo pasándolo como parámetros la ruta y nombre del archivo lnk y el destino:
Código: Text
  1.  
  2. CrtShortCut "C:\Ruta\MiArchivo.lnk" , "C:\Ruta\Programa.exe"
  3.  
  4.  

y me funciona.

Chao.

42
Citar
Puede que no fuera tan pesao si la ayuda proporcionada fuera buena

Mira chaval, me parece que te equivocas de foro.
Si tanto te interesa el fusión: cómpratelo. Si no quieres comprarlo pues búscate la vida en la mula o por ahí..., y si no, aprende a programar con componentes, pero no vengas con historias y quejas por aquí, porque ya te dije que te equivocabas de foro.

Por otra parte, yo no soy quién para decirte a ti nada, que no soy moderador ni ná, pero nunca me corto en decir lo que pienso cuando me apetece (al igual que tú, supongo) así que te digo que sí... que eres pesao, pero pesao, pesao de cojones y que en lo que a mi respecta me importa bien poco cualquier urgencia que puedas tener.

Suerte.

43
Visual Basic 6.0 e inferiores / Re: Charts.add
« en: Sábado 12 de Marzo de 2005, 09:01 »
Hola Amenoar.

Tal vez te sirva el método Delete del objeto ActiveChart (clase Chart). O tal vez, sin ser tan radical, prueba con Deselect.

Ya nos contarás. Chao.

44
Visual Basic 6.0 e inferiores / Re: Commondialog De Forma No Modal
« en: Sábado 12 de Marzo de 2005, 08:55 »
Hola elmango80.

Nuevamente la solución es usar un thread distinto. Usa un nuevo proceso para realizar la lectura del puerto:

Crea un programa independiente para atender la lectura del puerto. Luego llama una función de este estilo pasándo como parámetro la ruta y nombre de tal ejecutable:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Const STILL_ACTIVE = &H103
  5. Private Const PROCESS_QUERY_INFORMATION = &H400
  6. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
  7. Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
  8. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  9.  
  10. Public Sub LeerPuerto(Byval ExeLeerPuerto as string)
  11.  
  12.     On Error GoTo Err_Sinc
  13.    
  14.     Dim l1 As Long, lRc As Long
  15.     l1 = OpenProcess(PROCESS_QUERY_INFORMATION, False _
  16.     , Shell(ExeLeerPuerto, vbMinimizedNoFocus))
  17.     Do
  18.         GetExitCodeProcess l1, lRc
  19.         Sleep 100
  20.         DoEvents
  21.     Loop While lRc = STILL_ACTIVE
  22.    
  23.     MsgBox "Finalizó la lectura del puerto"
  24.  
  25.     Exit Sub
  26.    
  27. Err_Sinc:
  28.     MsgBox "Fallo al intentar arrancar lectura del puerto." & String(2, vbCrLf) _
  29.     & "(" & Err.Number & ") " & Err.Description, vbCritical, "Sincronizar"
  30.  
  31. End Sub
  32.  
  33.  
Si quieres también puedes eliminar el ciclo y una vez lanzado el programa olvidarte.

Eso sí, si necesitas comunicación entre los dos programas... tendrás que currártelo. Mira si quieres este post por si te sirve http://foros.solocodigo.com/index.php?showtopic=13730 aunque roxiii aún no lo ha cerrado...

Suerte.

45
Visual Basic 6.0 e inferiores / Re: Ayuda Con Archivos Temporales En Vb
« en: Sábado 12 de Marzo de 2005, 08:44 »
Hola avaguin.

Si no das más datos, malamente se podrá saber a que se debe lo que te ocurre, pero digo yo que probablemente utilices en tu proyecto unos cuantos ocx. Si esto es así, supongo que si los creas y compilas como un proyecto aparte, esto dejará de sucederte.

Suerte.

46
este masipm es más pesao que la música de los caballitos

47
Visual Basic 6.0 e inferiores / Re: Reiniciar Windows
« en: Sábado 12 de Marzo de 2005, 08:40 »
Hola jodijo5.

Utiliza la función del api ExitWindowsEx

Chao.

48
Visual Basic 6.0 e inferiores / Re: Mover Un Control En Tiempo De Ejecucion
« en: Sábado 12 de Marzo de 2005, 08:33 »
Hola Miguel Angel Rodríguez.

Lo primero que debes hacer es obtener la ecuación de la recta coreespondiente entre los dos puntos. Una vez que la tienes haz un bucle que recorra los valores para x (o y, claro) en el intervalo entre los dos puntos. Obten el valor de y para cada x mediante la ecuación punto pendiente de la recta y mueve la carta a la posición.

Algo así:
Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Function Pendiente( _
  5. Byval x1 as Double, byval y1 as Double _
  6. ,byval x2 as Double,Byval y2 as Double) As Double
  7.     If x2 - x1 <> 0 Then
  8.         Pendiente = (y2 - y1) / (x2 - x1)
  9.     Else
  10.         Pendiente = 1
  11.     End If
  12. End Function
  13.  
  14. Private Function PuntoPendiente_Get_Y( _
  15. Byval x1 as Double, byval y1 as Double _
  16. ,byval x2 as Double,Byval y2 as Double , Byval X as Double) As Double
  17.     Dim d1 As Double, d2 As Double
  18.     d1 = Pendiente(x1, y1, x2, y2)
  19.     d2 = -d1 * x1 + y1
  20.     PuntoPendiente_Get_Y = d2 + d1 * X
  21. End Function
  22.  
  23. Private Sub Mover(Byval Index as integer, Byval DestX as Double, Byval DestY As Double)
  24.    Dim dFromX As Double, dFromY as Double
  25.    dFromX = imgcarta(index).left + imgcarta(index).width /2
  26.    dFromY = imgcarta(index).top + imgcarta(index),Height / 2
  27.    Dim dX as double
  28.    For dX = dFromX To DestX
  29.        imgCarta(index).Move dX _
  30.       , PuntoPendiente_Get_Y(dFromX, dFromY, DestX, DestY, dX)
  31.    Next dX
  32. End Sub
  33.  
  34.  

La esencia del tema sería algo así, ahora bien, puedes optimizar este código muchísimo más (creando estructuras para no pasar tantas variables, hallando el valor de la pendiente de la recta al principio para hacerlo una sola vez, etc.), pero eso ya es cosa tuya.

Temas a estudiar:
- Ecuación de la recta que pasa por dos puntos.
- Pendiente de una recta.
- Ecuación punto pendiente de la recta.

Suerte.

Se me esquecía:
- También tendrás que buscarte la vida para suavizar el movimiento de la carta y evitar un efecto de flickeo. Debes incluir en el bucle un DoEvents o un Refresh para que se pueda actualizar la imagen que visualices o en tu caso para que se redibuje el control (yo me buscaría la vida para hacerlo con imágenes).

49
Visual Basic 6.0 e inferiores / Re: Cantidad De Registros En Una Consulta
« en: Sábado 12 de Marzo de 2005, 08:05 »
Hola solcito.

Citar
CursorLocation = adUseClient

Tener el cursor sql 'del lado del cliente' es lo que hace funcionar la prodiedad recordcount (Esto teniendo en cuenta que hay proveedores de datos que no soportan esta propiedad).

Si usas una llamada a un procedimiento almacenado mediante el método execute del recordset, mucho me temo que no te va funcionar la propiedad recordcount... pero siempre hay solución: usa una sentencia SQL del tipo "SELECT COUNT(*) FROM Tabla" para obtener la cuenta de registros de tu selección.

Chao.

50
Visual Basic 6.0 e inferiores / Re: Como Seleccionar Un Renglon Del Datagrid
« en: Miércoles 9 de Marzo de 2005, 16:57 »
Hola m@gnus.

No te he comprendido, pero... Una vez tengas ciertos valores que 'quieres pasar' a otro grid, ejecuta la correspondiente sentencia SQL que inserte los registros y luego refresca el grid... o algo así.

Chao.

Páginas: 1 [2] 3 4 ... 43