• Viernes 29 de Marzo de 2024, 06: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 ... 43
1
La taberna del BIT / Re: Yo Soy El Clon
« en: Lunes 3 de Julio de 2006, 08:40 »
Babas = X.Cyclop cada vez que las pia.

Sin acritud...

2
Visual Basic 6.0 e inferiores / Re: Visual Y Excel
« en: Sábado 7 de Mayo de 2005, 10:13 »
hola jose1464

En este mismo foro, hay bastantes temas sobre estas cosas... utiliza el buscador.

Suerte.

3
Visual Basic 6.0 e inferiores / Re: A Ver Si Alguien Lo Sabe
« en: Sábado 7 de Mayo de 2005, 10:11 »
Hola Jamaicol.

Para lo primero mira tu post anterior (no se qué de un notepad)

Para lo segundo algo así podría valer:
Código: Text
  1.  
  2.     Dim sTexto As String, varTexto As Variant
  3.     sTexto = Replace(Text1.Text, vbCrLf, " ") & " "
  4.     varTexto = Split(sTexto, " ")
  5.     MsgBox UBound(varTexto) & " palabras"
  6.  
  7.  

Chao.

4
Visual Basic 6.0 e inferiores / Re: Actualizar Número
« en: Sábado 7 de Mayo de 2005, 10:01 »
Hola.

Prueba con algo de este estilo:

Código: Text
  1.  
  2.    Dim rs1 As Recordset, varNuevoNumero as Variant
  3.    Set rs1 = cnx1.Execute("SELECT Max(NumFra) From TablaCabeceraFacturas")
  4.    varNuevoNumero = rs1.Fields(0).Value
  5.    varNuevoNumero = IIf(Not IsNull(varNuevoNumero), varNuevoNumero + 1, 1)
  6.  
  7.  

Chao.

5
Visual Basic 6.0 e inferiores / Re: Sobre Un Famoso Notepad
« en: Sábado 7 de Mayo de 2005, 09:56 »
Hola Jamaicol.

Prueba con algo así:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  5.  
  6. Private Function CuentaLineas(ByVal Hwnd As Long) As Long
  7.   Const EM_GETLINECOUNT = &HBA
  8.   CuentaLineas = SendMessage(Hwnd, EM_GETLINECOUNT, 0&, 0&)
  9. End Function
  10.  
  11. Private Function LargoLinea(ByVal Hwnd As Long, ByVal Linea As Long) As Long
  12.     Const EM_LINEINDEX = &HBB
  13.     Const EM_LINELENGTH = &HC1
  14.     Dim l1 As Long
  15.     l1 = SendMessage(Hwnd, EM_LINEINDEX, Linea, 0&)
  16.     If l1 > -1 Then
  17.         LargoLinea = SendMessage(Hwnd, EM_LINELENGTH, l1, 0&)
  18.     Else
  19.         LargoLinea = 0
  20.     End If
  21. End Function
  22.  
  23. Private Sub Text1_Click()
  24.     debug.print RowCol
  25. End Sub
  26.  
  27. Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
  28.     debug.print RowCol
  29. End Sub
  30.  
  31. Private Function RowCol() As String
  32.     Dim lRow As Long, lLen As Long
  33.     Dim lStart As Long, lPos As Long
  34.     lStart = Text1.SelStart
  35.     lPos = InStr(1, Text1.Text, vbCrLf)
  36.     While lPos < Text1.SelStart And lPos > 0
  37.         lStart = lStart - 2
  38.         lPos = InStr(lPos + 1, Text1.Text, vbCrLf)
  39.     Wend
  40.     lPos = 0
  41.     Do
  42.         lLen = LargoLinea(Text1.Hwnd, lRow)
  43.         lRow = lRow + 1
  44.         If lStart > lLen Then
  45.             lStart = lStart - lLen
  46.         Else
  47.             If Text1.SelStart > 2 Then
  48.                 If Mid(Text1.Text, Text1.SelStart - 1, 2) = vbCrLf Then
  49.                     lStart = 0
  50.                     lRow = lRow + 1
  51.                 End If
  52.             End If
  53.             If lStart = lLen And Text1.SelStart < Len(Text1.Text) - 1 Then
  54.                 If Mid(Text1.Text, Text1.SelStart + 1, 2) <> vbCrLf Then
  55.                     lStart = 0
  56.                     lRow = lRow + 1
  57.                 End If
  58.             End If
  59.             lStart = lStart + 1
  60.             Exit Do
  61.         End If
  62.     Loop
  63.     RowCol = "Fila " & lRow & " , columna " & lStart
  64. End Function
  65.  
  66.  

Está sin optimizar y el caso de los comienzos y finales de las líneas está tratado un poco chafalleiramente...

Fíjate en este caso en el que no funciona bien:
En una línea que no termina en retorno de carro + nueva línea, si te mueves al final de línea con el cursor o escribiendo no hay problema, ya que el propio control pasará a la línea siguiente, pero si vas al final con la tecla <Fin> o haciendo click con el ratón, el cursor no salta a la siguiente línea, pero la funcion sí...

Haber si tu lo arreglas, porque yo un sábado que tengo que currar no estoy para gran cosa...

Suerte.

6
Visual Basic 6.0 e inferiores / Re: Sobre Un Famoso Notepad
« en: Jueves 5 de Mayo de 2005, 10:23 »
Hola.

Para saber en qué posición del textbox se encuentra el cursor utiliza la propiedad SelStart del textbox en el evento click del mismo.

Ten en cuenta que algunas de las líneas acabarán con dos carácteres adicionales (Cr + Lf), serán aquellas en las que el usuario ha pulsado intro para saltar a una nueva línea. Las líneas que se inicien nuevas porque el texto ha llegado al extremo del textbox no incluyen estos caracteres...

Si no se te da y tengo tiempo (que cada vez menos) más adelante te echo un cable...

Suerte.

7
Visual Basic 6.0 e inferiores / Re: Variables Del Frm En Data Report
« en: Jueves 5 de Mayo de 2005, 09:40 »
Hola.

Por ejemplo, puedes construir la sentencia sql en el form y luego asignársela mismamente a un command de un dataenvironment...

Código: Text
  1.  
  2. 'suponiendo que estés usando un dataenvironment
  3. DataEnvironment1.Commands(1).CommandText = _
  4. &#34;SELECT * FROM Tabla WHERE Campo=&#34; & Val(Text1.Text)
  5.  
  6.  

Chao.

8
Visual Basic 6.0 e inferiores / Re: Sobre Un Famoso Notepad
« en: Jueves 5 de Mayo de 2005, 09:25 »
Hola Jamaicol.

Puedes usar la funcion del api SendMessage tal que así:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private Declare Function SendMessage Lib &#34;user32&#34; Alias &#34;SendMessageA&#34; (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  5.  
  6. Private Sub Command1_Click()
  7.     MsgBox &#34;El TextBox 'text1' tiene &#34; _
  8.     & CuentaLineas(Text1.Hwnd) & &#34; línea(s).&#34; _
  9.     & &#34;El lago de la línea 3 es &#34; _
  10.     & LargoLinea(Text1.Hwnd, 2) & &#34;.&#34;
  11.     ' fíjate que el indice para el número de línea comienza en 0.
  12. End Sub
  13.  
  14. Private Function CuentaLineas(ByVal Hwnd As Long) As Long
  15.    Const EM_GETLINECOUNT = &HBA
  16.    CuentaLineas = SendMessage(Hwnd, EM_GETLINECOUNT, 0&, 0&)
  17. End Function
  18.  
  19. Private Function LargoLinea(ByVal Hwnd As Long, ByVal Linea As Long) As Long
  20.     Const EM_LINEINDEX = &HBB
  21.     Const EM_LINELENGTH = &HC1
  22.     Dim l1 As Long
  23.     l1 = SendMessage(Hwnd, EM_LINEINDEX, Linea, 0&)
  24.     LargoLinea = SendMessage(Hwnd, EM_LINELENGTH, l1, 0&)
  25. End Function
  26.  
  27.  

Respecto a lo que dices del ratón... no sé a qué te refieres.

Chao.

9
Visual Basic 6.0 e inferiores / Re: Propiedades De Un Control
« en: Miércoles 4 de Mayo de 2005, 16:38 »
Hola ErickCerPa.

¿Dónde almacenas el valor para la propiedad?¿Cuál es el valor por defecto para una variable booleana recién creada? La cosa en tu usercontrol debería ir má o menos así:

Código: Text
  1.  
  2. Option Explicit
  3.  
  4. Private bValidar As Boolean
  5.  
  6. Public Property Let Validar(Byval V As Boolean)
  7.    bValidar = V
  8. End Property
  9.  
  10. Public Property Get Validar() As Boolean
  11.    Validar = bValidar
  12. End Property
  13.  
  14. Private Sub UserControl_Initialize()
  15.    bValidar = True
  16. End Sub
  17.  
  18.  

Chao.

10
Visual Basic 6.0 e inferiores / Re: Deshacer
« en: Miércoles 4 de Mayo de 2005, 16:25 »
Hola.

Seguro que mediante funciones del api no hay problemas, pero he aquí una forma simpática de deshacer:

Código: Text
  1.  
  2.     Text1.SetFocus
  3.     SendKeys &#34;^Z&#34;
  4.  
  5.  

Suerte.

11
Visual Basic 6.0 e inferiores / Re: Shape
« en: Miércoles 4 de Mayo de 2005, 16:19 »
Hola radical & co.

No sé si he comprendido muy bien (si no, házmelo saber), pero creo que esto debería de servirte:

Código: Text
  1.  
  2. Private Sub Command2_Click()
  3.  
  4.     Dim lRows As Long, lCols As Long
  5.     lRows = Int(Shape1.Height / Shape2(0).Height)
  6.     lCols = Int(Shape1.Width / Shape2(0).Width)
  7.    
  8.     Dim lRow As Long, lCol As Long, lIdx As Long
  9.     Dim iFrom As Integer
  10.    
  11.     Shape2(0).Move Shape1.Left, Shape1.Top
  12.     For lRow = 1 To lRows
  13.         If lRow &#62; 1 Then
  14.             iFrom = 1
  15.         Else
  16.             iFrom = 2
  17.         End If
  18.         For lCol = iFrom To lCols
  19.             lIdx = lIdx + 1
  20.             Load Shape2(lIdx)
  21.             Shape2(lIdx).Move Shape1.Left + Shape2(0).Width * (lCol - 1), Shape1.Top + Shape2(0).Height * (lRow - 1)
  22.             Shape2(lIdx).Visible = True
  23.         Next lCol
  24.     Next lRow
  25.  
  26. End Sub
  27.  
  28.  

Por otro lado, ignoro qué es lo que pretendes hacer, pero piensa en la posibilidad de dibujar rectángulos mediante el método Line, así te ahorrarías cargar el form con tantos controles.

Suerte.

13
Visual Basic 6.0 e inferiores / Re: Como Funciona Un Grupo De Proyectos ?
« en: Miércoles 4 de Mayo de 2005, 15:49 »
Hola vqt.

Cuando usas un grupo de proyectos puedes modificar, ejecutar, depurar todos los proyectos del grupo como si estuviesen compilados. Debes establecer un proyecto inicial (que es el que se ejecutará cuando pulses F5). Para utilizar objetos de otros proyectos debes añadir las correspondientes referencias a los proyectos. Cuando entres en las referencias verás que aparecen los otros proyectos que forman parte del grupo (los proyectos que sean componentes activeX, claro). Como me estoy liando un poco, te lo explico con un ejemplo:

Imagina que quieres crear una aplicación con un ejecutable y una dll activeX con clases que le proporcionan distintas funcionalidades. Para realizar esto, tendrías que crear un proyecto dll actX, compilarlo, crear el proyecto del ejecutable y añadir la referencia a la dll compilada anterior.
Para ahorrarte el tener que desarrollar los dos proyectos por separado, creas un grupo de proyectos al que añades los dos, la dll y el exe. Estableces el exe como proyecto inicial y vas a las referencias del exe y le añades una referencia al proyecto dll activex. Y ya está, podrás desarrollar los proyectos de forma paralela, depurando lo quieras y todo eso.

Por supuesto a la hora de compilar los proyectos, el exe debe tener la referencia a la dll compilada.

Chao.

14
Visual Basic 6.0 e inferiores / Re: Error 438
« en: Miércoles 4 de Mayo de 2005, 15:36 »
Hola Andy.

Desde luego que no tengo ni idea de qué es lo que ocurre... pero si te ocurre desde hace un par de días, será porque algo se habrá hecho hace un par de días. Lo primero de todo, averigua qué es lo que ha cambiado, y a partir de ahí, tendrás más datos para sacar algo en limpio, porque con los que das...

Por otro lado, aunque en inglés, el texto del mensaje es bastante claro: El proceso que origina el mensaje ha usado una clase intentando acceder a un método o propiedad que no existe o está fuera de su alcance (scope).

Suerte.

15
Visual Basic 6.0 e inferiores / Re: Variables Del Frm En Data Report
« en: Miércoles 4 de Mayo de 2005, 15:32 »
hola laux.

No uso datareport, pero si no me equivoco (y si no, por favor me corrijan) puedes establecer el origen de datos de un datareport mediante un control data o un dataenvironment. Pues vale, tampoco uso ninguno de estos, pero seguro que puedes establecer la correspondiente sentencia SQL que previamente habrás construido en una variable estableciendo la cláusula WHERE con todos los parámetros que desees.

Suerte.

16
Visual Basic 6.0 e inferiores / Re: Archivos En Un Solo Exe
« en: Miércoles 4 de Mayo de 2005, 15:26 »
Hola druida.

Menos mal que a veces no me falla la memoria...
http://[url=http://foros.solocodigo.com/index.php?showtopic=14116]http://foros.solocodigo.com/index.php?showtopic=14116[/URL]

Estaba escrito así al vuelo, por lo que es posible que me saltará algo, pero para que te hagas una idea. Desgraciadamente Warce no dice si le sirvió o no...  (¿le pasaría alguna cosa?... pobriño)

Suerte.

17
Visual Basic 6.0 e inferiores / Re: Preguntas Sobre Declaracion
« en: Miércoles 4 de Mayo de 2005, 15:17 »
Hola AndresMS.

Esa declaración no funcionaría...

Sin examinar en detalle el código, veo que intentas añadir en tiempo de ejecución controles de los que quieres controlar sus eventos...

Puedes seguir dos caminos:

1- Añade en tiempo de ejecución un control del tipo que desees y da valor a su propiedad 'Index' con el fin de crear una matriz de controles. Para añadir nuevos controles a la matriz, utiliza el método Load.
Código: Text
  1.  
  2. 'En tiempo de diseño, se ha añadido MiControl(0)
  3. Public Sub AddControl
  4.    .
  5.    .
  6.    .
  7.    Dim iIdx as Integer
  8.    iIdx = MiControl.UBound + 1
  9.    Load MiControl(iIdx)
  10.    MiControl(iIdx).Move Left, Top, width, height
  11.    MiControl(iIdx).Visible = True
  12.    .
  13.    .
  14.    .
  15. End Sub
  16.  
  17. Private Sub MiControl_MiEvento(Index As Integer)
  18.    .
  19.    .
  20.    .
  21.    MsgBox &#34;MiControl índice &#34; & Index & &#34; produjo un evento&#34;
  22.    .
  23.    .
  24.    .
  25. End Sub
  26.  
  27.  

2- Declara 'withevents' una variable de tipo VbControlExtender. Luego añade los controles mediante el método Add de la colección Controls asígnando a cada una de las variables 'control extender' que declaraste.
Código: Text
  1.  
  2. Private withEvents MiControl As VBControlExtender
  3.  
  4. Public Sub AddControl
  5.    .
  6.    .
  7.    .
  8.    Set MiControl = Me.Controls.Add(&#34;Biblioteca.Clase&#34;, &#34;MiControl&#34;)
  9.    MiControl.Move Left,Top,with,Height
  10.    .
  11.    .
  12.    .
  13. End Sub
  14.  
  15. Private Sub MiControl_MiEvento()
  16.    .
  17.    .
  18.    .
  19.    MsgBox &#34;MiControl produjo un evento&#34;
  20.    .
  21.    .
  22.    .
  23. End Sub
  24.  
  25.  

Suerte.

18
Visual Basic 6.0 e inferiores / Re: Mascara De Entrada En Vb!
« en: Miércoles 4 de Mayo de 2005, 14:51 »
Hola Mydr.

Puedes utilizar un control 'Masked Edit Control' que viene a ser como un cuadro de texto que permite definir máscaras de entrada para los datos.

Chao.

19
Visual Basic para principiantes / Re: Unas Dudas
« en: Jueves 31 de Marzo de 2005, 14:47 »
Hola grandzam

Sobre lo de que puedan cambiar el número de elementos y dimensiones de la matriz: deberás dimensionar las matrices de forma dinámica. Cuando declares la matriz no indiques ni dimensiones ni elementos, esto lo harás más adelante cuando lo necesites y conozcas los límites que tendrá la matriz mediante ReDim. Si  deseas redimensionar la matriz y conservar los valores que contenía deberás usar Redim junto con la palabra clave Preserve.

Sobre el tema de pasar los datos a un grid. La forma de hacer esto variará según el grid que utilices... tendrás que ser más explícito.

Suerte.

20
Visual Basic 6.0 e inferiores / Re: Actualizar
« en: Jueves 31 de Marzo de 2005, 14:41 »
Hola rodolforpv.

Supongo que lo que tienes que refrescar son los recordsets.

Código: Text
  1.  
  2. DataEnvironment1.rsCommand2.Requery
  3.  
  4.  

Chao.

21
Visual Basic 6.0 e inferiores / Re: Capturar Links
« en: Jueves 31 de Marzo de 2005, 12:55 »
Hola cangri.

Si estás usando como navegador un control webbrowser, podrías usar su método ExecWB para guardar la página.

Algo así:
Código: Text
  1.  
  2. WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, &#34;C:&#092;borrar&#092;Archivo.txt&#34; & C-h-r-(-0-)
  3.  
  4.  
Tienes que eliminar los guiones (-) del carácter nulo, es que no fui capaz de postearlo de otra forma, a ver si Sergio nos arregla el tema...

Luego puedes buscar en el archivo en el que guardaste la página la correspondiente etiqueta y hacer lo que quieras con los links.

Suerte.

22
Sobre los Foros de SoloCodigo / Re: Los Indios No Me Dan Permiso
« en: Jueves 31 de Marzo de 2005, 12:20 »
En cualquier sitio que escriba el tal texto, salta el error. La verdad, es que parándose a pensarlo puede sonar peligroso para el servidor...

Impresionante... el código famoso era:

Código: Text
  1.  
  2. WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, &#34;C:&#092;borrar&#092;Archivo.txt&#34;
  3.  
  4.  

Lo que provocaba el error era un carácter nulo concatenado as la cadena del tercer parámetro (no lo escribo porque ya hasta miedo me da).

Lo curioso es que estoy seguro de haber escrito semejante secuencia de letras en más de una ocasión (C-h-r-(-0-) elimínense los guiones).

Chao y gracias.

23
Sobre los Foros de SoloCodigo / Re: Los Indios No Me Dan Permiso
« en: Jueves 31 de Marzo de 2005, 11:57 »
La respuesta no incluía imágenes ni adjuntos ni ná... pero acabo de intentar postear el mismo texto aquí mismo y me ha salido el mismo error...

Intento postearlo con una pequeña modificación:

-----------------------------------------------------------------------------
Hola cangri.

Si estás usando como navegador un control webbrowser, podrías usar su método ExecWB para guardar la página.

Algo así:
Código: Text
  1.  
  2. Aquí iría una línea de código que pienso yo podría ser la culpable... cosa que confirmaré si soy capaz de de postear esto
  3.  
  4.  

Luego puedes buscar en el archivo en el que guardaste la página la correspondiente etiqueta y hacer lo que quieras con los links.

Suerte.
-------------------------------------------------------------------------------------------

Lo único un poco raro podría ser una línea de código que incluía. Tal vez el problema esté en esa línea. Voy a intentar enviarte el texto en un privado (si me deja) para que lo veas...

24
Sobre los Foros de SoloCodigo / Re: Los Indios No Me Dan Permiso
« en: Jueves 31 de Marzo de 2005, 11:42 »
En principio sólo con el tema de cangri:
Respondí un par de temas antes sin problema y uno más después (aparte de este, claro).

Acabo de reintentarlo y sigue ocurriendo lo mismo...

Chau

25
Visual Basic 6.0 e inferiores / Re: Añadir Plugins A Mi Aplicaion
« en: Jueves 31 de Marzo de 2005, 11:02 »
Hola roxiii.

Efectivamente, problemas de seguridad siempre puede haber. Creo que este es un tema muy extenso y complejo que se me escapa en gran parte, pero ahí van algunas ideas:

Cuida el alcance de todos los métodos y propiedades  (Private/Friend/Public). Ojo con las clases instanciables como 'GlobalMultiuse'. Podría ser preferible proporcionar la interface mediante alguna clase PublicNotCreatable encapsulada en una propiedad Get de tipo object, de forma que sólo setearas el objeto según cierta condición previa (por ejemplo comprobar una clave). Cuanto más robusta sea la interfaz que proporcionas, más segura será la aplicación.
 
Más allá de estas cosas yo no me suelo preocupar mucho más (el entorno en el que se suelen ejecutar mis aplicaciones me lo permite), pero lo que sí tengo claro es que seguro, seguro, lo que se dice seguro, no hay nada.

Suerte.

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