PREGUNTAS CONTESTADAS - PhotoShop

 Hay un total de 3030 Preguntas.<<  >> 

    Pregunta:  24051 - CODIGO PARA PONER UN PROGRAMA COMO PREDETERMINADO
Autor:  antonio Gomez Sanchez
Me gustaria saber cual es el codigo para poner como predeterminado un programa creado con visual basic que este en conflicto con otro.
Ya que he creado un navegador para ver paginas web y me gustaria que saliera en tiempo de ejecucion un formulario que te preguntase si quieres poner el Navegador como predeterminado asi podrias abrir vinculos con ese navegador o ver paginas webs offline sin tener que usar el predeterminado como por ejemplo I.EXPLORER O NETSCAPE
  Respuesta:  Eduard Pascual Sáez
Si echas un vistazo al registro de Windows, verás que en HKEY_CLASSES_ROOT aparecen todas las extensiones de archivo reconocidas por el sistema, así como el tipo de archivo que representan. Por ejemplo, en mi máquina los archivos .htm son del tipo htmlfile. Más abajo, en la entrada htmlfile/shell/open/command, aparece
"C:\Archivos de programa\Internet Explorer\iexplore.exe" -nohome
Si cambias esta entrada por algo así como:
App.Path + App.ExeName + "%1", obtendrás que cuando windows quiera ejecutar un archivo que identifique como 'htmlfile' lance tu ejecutable pasándole el nombre completo del archivo como parámetro. Luego sólo te has de preocupar de leer el parámetro y hacer que tu programa abra el archivo. Si es un navegador, te puede servir algo así:
comboboxDireccion.Text = parametro
comboboxDireccion_KeyPress(KeyCodeConstants.vbKeyReturn)
Esto hace creer a tu programa que el usuario ha insertado la dirección del archivo en la barra de direcciones y ha presionado Enter.
Puedes abreviar con comboboxDireccion_KeyPress(13), pero te recomiendo añadir un comentario al código para recordar que el 13 es el código de la tecla Enter.
Por último, solo te falta consultar el registro cuando se inicie tu aplicación y, si el usuario desea establecer tu programa como predeterminado, modificar el registro. Para ello hay dos métodos: el primero consiste en abrir los archivos .dat del registro y modificarlos a pelo... poco recomendable. El segundo consiste en usar la API de Windows... algo peligroso pero eficaz cuando sabes lo que tocas. Deberás buscar las extensiones que quieras asociar a tu programa (con el . incluído) en HKEY_CLASSES_ROOT y consultar la entrada predeterminada. Una vez las tengas todas (usa un array de String), tendrás los tipos de archivo. Antes de continuar, estaría bien revisar el array en busca de valores duplicados, pero no es imprescindible. Las direccioes del registro que tendrás que modificar a continuacion serán algo así como:
Dim tipoArchivo As String, entrada As String
For Each tipoArchivo in TiposArchivos Do 'TiposArchivos seria el array...
entrada = "HKEY_CLASSES_ROOT\" & tipoarchivo & "\shell\open\command\"
'codigo para modificar o leer cada entrada
Next
En cada entrada, el contenido de la clave predeterminada es el comando que se ejecutará cuando un usuario intente abrir un archivo del tipo correspondiente. Si deseas que tu programa reciba el nombre completo del archivo como parámetro, indícalo con el parámetro %1 después de la ruta de tu programa.
El código para modificar el registro lo dejo en tus manos. Hay muchas bibliotecas por la red que facilitan el manejo del registro desde VB. Si necesitas más ayuda, no dudes en enviarme un e-mail.
Atentamente, Eduard Pascual,
programador semi-profesional

    Pregunta:  24086 - LENTIDUD AL CERRAR BASE DE DATOS CON DAO EN RED.
Autor:  Chema
Cuando una base de datos esta abierta por dos usuarios e intento cerrarla tarda aproximadamente 1 segundo, cuando solo es una no es apreciable, pero cuando son 5 la lentitud es considerable. ¿Existe alguna forma de solucionar esto?
Utilizo VB5 con bases de datos access y dao/jet 3.5.
  Respuesta:  guampi guampi
al establecer la conexion con la base, hacelo de modo asincrono. asi, al cerrarla, tu aplicacion no se bloquea esperando que termine de ejecutarse la accion de cerrar la base

    Pregunta:  24108 - ABRIR CONSULTA ALMACENADA CON PARAMETROS Y ADO
Autor:  Christian
Tengo un gran inconveniente al querer ejecutar esta consulta en una base de acces ya que la misma tiene dos parametros y no se como pasarselos, el ejemplo que esta abajo funciona bien si la consulta no tiene parametros pero a la hora de ponerle un parametro no se como pasarselo.
Con DAO si funciona pero con ADO no tengo ni idea de como hacerlo

Set cn = New ADODB.Connection

cn.Open ("Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=True;Data Source=" & App.Path & "\General.mdb")

RsUsuarios.Open "[Ingreso_al_sistema]", cn, adOpenKeyset, adLockReadOnly, adCmdStoredProc

Ingreso_al_Sistemas --> es la consulta de access

Si alguuien me puede ayudar se lo agradeceria mucho
De ante mano gracias a todos por colaborar
Saludos Christian
  Respuesta:  nahuel penna
esto en un modulo
Public cn As Connection

Sub conexion()
Dim E As String
ChDir App.Path
ChDrive App.Path
E = App.Path
If Len(E) > 3 Then
E = E & "\"
End If
Set cn = New Connection
With cn
.Provider = "microsoft.jet.oledb.4.0"
.ConnectionString = "" & E & "db1.mdb"
.CursorLocation = adUseClient
End With
cn.Open
End Sub

esto en load del formulario

With Rs5

.Source = "SELECT ..."
.ActiveConnection = Module1.cnprogramacion2
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open

End With

    Pregunta:  24113 - QUIERO MOSTRAR UNA PANTALLA PRESIONANDO UN F4
Autor:  Juan Jose Saldana Leal
En Visual Basic 5... estoy en una pantalla de captura y sin salir de esa y presionando F4 quiero aparecer otra pantalla que tiene un listado de articulos...
  Respuesta:  christian gonzalez
probá creando un menú con el editor de menúes, poné la propiedad visible igual a False y el metodo abreviado elegís tu F4 o cualquier otro metodo que dispone. y luego programas el codigo click del menu correspondiente, que haga lo que vos querés, podés mostrar el furmulario articulos en forma modal y luego con un boton lo descargás o ocultás.
simple y sencillo.
  Respuesta:  Antonio Quintela
En el evento KeyDown del formulario de captura debes incluir el siguiente código:

Public Const VK_F4 = &H73

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = VK_F4 Then
' Incluye el código de carga del formulario con el listado de articulos
End If
End Sub

Además la propiedad KeyPreview del formulario de captura debe tener el valor: true.

Espero que te funcione, saludos.

    Pregunta:  24143 - CAMBIAR COLOR A MENúS
Autor:  sergio alcuña
Como puedo cambiar el color del fondo a un menú y tambien a los imputbox y msgbox
  Respuesta:  Agustín Dávila
La respuesta no la encontrarás en el Visual Basic, si no en el propio Windows, o sea que para poder cambiar los colores del menú y del inputbox o msgbox tendrás que ir a "Panel de Control/Pantalla/Apariencia". Aunque no se si con alguna API de windows se podría cambiar

    Pregunta:  24151 - ERROR 3050
Autor:  Rodolfo Piña Duhart
Ayuda Urgente......

Estoy ejecutando una aplicación en VB5.0 y al tratar de abrir una base de datos ACCESS me arroja el siguiente error:

RUN-TIME ERROR 3050
NO SE HA PODIDO BLOQUEAR EL ARCHIVO.....

Estoy accesando la base como:

Dim db1 as DATABASE, tabla1 as Recordset
set db1 = Opendatabase(nombredebase.mdb)
set tabla1 = db1.OpenRecordset(nombretabla)

Gracias por vuestra ayuda.....
  Respuesta:  MAURICIO DIAZ
lo resolvi en 1 minuto con tu ayuda me posicione en el el disco donde estaba el archivo y di clik secundario para ver las propiedades y desbloque los usuarios dando atributos para escribir en ese momento corrieron archivos des bloqueados, espero le sirva a alguien saludos y gracias ..
  Respuesta:  Hector Shamir Perez
Hola Rodolfo,

Cuando intentas abrir una base de datos Access, es creado un archivo .ldb para bloquearla, cuando no se puede crear este archivo se genera ese error.

Verifica que el directorio donde se encuentra la base de datos no sea de solo lectura para el usuario de la PC

Saludos, espero te sirva.

    Pregunta:  24164 - ¿CONVIENE USAR ETIQUETAS EN LUGAR DE VARIABLES GLOBALES?
Autor:  Miguel Esquef
Estoy desarrollando una aplicacion en VB6 y trabaja con muchas cadenas y numeros y me preguntava si en lugar de declarar muchas variables globales para almacenar las cadenas lo podria hacer en etiquetas ocultas (o esto ocasiona mas desperdicio de recursos). Ese es mi interrogante. Gracias
  Respuesta:  Mario Campos
Sí, el tener instancias de objetos sobre formularios insume más recursos del sistema, lo que te conviene hacer si estás trabajando con variables globales, es declararlas en un módulo estándar, va a ser mejor y aparte a e estas variables las vas a tener disponibles para todo el proyecto.

    Pregunta:  24187 - ERROR AL REGISTRAR
Autor:  Alfredo Mujica M
Hola:
Tengo un proyecto, genero el empaquetado y al instalar el sistema en otra maquina me marca el siguiente error:
No se puede registrar el archivo:
'C:\Windows\Temp\msftqws.pdw\$(DLLSelfRegisterEx)' por que no se encontro.

Ya busque este archivo en mi maquina y no lo encuentro, espero alguien sepa que puedo hacer.

Gracias, muchas gracias.
  Respuesta:  Agustín Dávila
Este problema ya me sucedió a mi, y me paso al incluir un control de Calendario de windows. La solución es buscar el archivo "Setup.lst" que te origina al empaquetar el programa, abrirlo con el "Notepad" por ejemplo y buscar la cadena "DllSelfregisterEx" y cambiarla por la cadena "DllSelfregister".

    Pregunta:  24209 - PROBLEMAS CON LA INSTALACIóN DE APLICACIONES VB6
Autor:  Zulema Bustamante
Estoy utilizando el siguiente ambiente de desarrollo:
1.Windows 98 version Ingles
2.-VB6 version Ingles
3.-Access 2000 ver Castellano
Realizo el empaquetado de mi aplicación usando wl Wizard que trae VB6 y tengo los siguientes problemas:
a) Al empaquetar me notifica que 2 dlls no tienen los archivos de dependencia, pero igual crea el empaquetado.No se a que se debe esto ni sus consecuencias.
b) Al instalar la aplicación en el siguiente ambiente:
b1. Windows 98 castellano
b2. Access 2000 en castellano
lo instala sin problemas pero cuando quiere acceder a la base de datos me arroja el error "Class not support......"
Segun estuve investigando el tema es mdac_typ.exe y realice los siguientes pasos:
1.Corri Service PAck 5 para VB6 en ingles
2.Actualice mdac a md
  Respuesta:  Mauricio Leyzaola
Hola Zulema. A mi me ocurrio algo parecido hace unas semanas en mi trabajo. Mi problema fue que estaba haciendo el programa en una máquina con NT y como no genera adecuadamente el ejecutable (ese es otro tema y no me preguntes por que), tenia que compilarlo y generar el EXE en una máquina con Windows 98.

El programa utilizaba referencias a ADO 2.1 (cuando lo hice en Windows NT) porque esa era la versión que tenía esa máquina, pero al compilarlo y crear el paquete de instalación en la máquina de Windows 98 el MDAC era versión 2.5 (que es la versión que finalmente se instalaba en las máquinas cliente).

Consulte la enredosa y enorme página de Microsoft y después de varias horas descubrí que el estúpido programa de instalación era el problema. La solución:

1. Consigue la versión más actual de MDAC (ADO) que funcione en tu sistema. Cuidado porque las más recientes solamente funcionan con Windows 2000.

2. Desde VB, cuando hagas referencia al ADO, utiliza la misma versión del punto 1. Y naturalmente, esta versión deberá estar presente en el equipo donde compiles tu proyecto y lo hagas EXE.

3. Al hacer el paquete de instalación omite el archivo MDAC para que no te lo incluya en la instalación. Es más recomendable que actualizes cada máquina cliente con la última versión de MDAC de la misma manera que el punto 1.

4. Reemplaza todos los Falso por False y todos los Verdadero por True en el archivo Setup.lst (lo puedes abrir con el notepad de windows), esto al parecer causa problemas con lo idiomas (ya sabes, made in memo puertas).

5. Haz la instalación como lo harías normalmente.

Espero que sirva. Saludos y suerte.

    Pregunta:  24262 - SCROLLBARS EN MDI
Autor:  picarog .
Tengo un formulario mdi en el que dentro de él se cargan otros formularios que necesitan barra de desplazamiento vertical. Cuando el formulario es demasiado largo aparece la barra y sin problemas. Bien, el problema lo tengo cuando necesito tener el enfoque en un campo que está al fondo del formulario, el foco lo coje, pero la barra de desplazamiento no se mueve.

¿Como puedo solucionar esto?

Es un poco urgente....

Gracias de antemano
  Respuesta:  coatl_zrm ccp
Saludos picarog.
Hace unas semanas yo tenia la misma duda, pero yo queria mover los scroll bars de la ventana hija y no del mdiForm.
Después de buscar mucho y no encontrar nada me dicidí a hacerlo yo mismo y me he sorprendido, pues despues de tantos dolores de cabeza la respuesta resulto ser no muy complicada.

Bien, logre solucionar mi problema y de paso pude hacer lo que tu quierias: mover las scroll bars del mdiForm.

'----------------------------
'-En un módulo
'---------------------------
Option Explicit

Private Type SCROLLINFO
cbSize As Long
fMask As Long
nMin As Long
nMax As Long
nPage As Long
nPos As Long
nTrackPos As Long
End Type

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function SetScrollPos Lib "user32" (ByVal hwnd As Long, ByVal nBar As Long, ByVal nPos As Long, ByVal bRedraw As Long) As Long
Private Declare Function SetScrollInfo Lib "user32" (ByVal hwnd As Long, ByVal n As Long, lpcScrollInfo As SCROLLINFO, ByVal bool As Boolean) As Long
Private Declare Function GetScrollInfo Lib "user32" (ByVal hwnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long
Private Declare Function ScrollWindowByNum& Lib "user32" Alias "ScrollWindow" (ByVal hwnd As Long, ByVal XAmount As Long, ByVal YAmount As Long, ByVal lpRect As Long, ByVal lpClipRect As Long)
Private Declare Function GetWindowRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT)
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetFocus Lib "user32" () As Long

Private Const SB_VERT = 1

Public Const GW_CHILD = 5

Function Focus(howner As Long)
Dim s As SCROLLINFO
Dim H As Long, nOldPos As Long
Dim RecWin As RECT, RecControl As RECT
Dim DimWin As Integer, DimControl As Integer
howner = GetWindow(howner, GW_CHILD)
H = GetFocus()
GetWindowRect H, RecControl
GetWindowRect howner, RecWin
GetScrollInfo howner, SB_VERT, s
nOldPos = s.nPos
'Determina las dimensiones de los controles (en este caso solo 'Alto')
DimWin = (RecWin.Bottom - RecWin.Top) - 50
DimControl = RecControl.Bottom - RecControl.Top
If (RecControl.Top < (RecWin.Top + 25)) Or (DimControl > DimWin) Then
'si el control esta por arriba del área de trabajo
s.nPos = s.nPos - ((RecWin.Top + 25) - RecControl.Top)
ElseIf RecControl.Bottom > RecWin.Bottom Then
'si el control esta por debajo del área de trabajo
s.nPos = ((RecControl.Bottom + 25) - RecWin.Bottom) + s.nPos
End If
SetScrollInfo howner, SB_VERT, s, True
'Activa las coordenadas del Scroll
ScrollWindowByNum howner, 0, nOldPos - s.nPos, 0, 0
SetScrollPos howner, SB_VERT, s.nPos, True
End Function
'-------------------------------------------------------------------------
'- Dentro de cada uno de los controles del MdiChild debes colocar lo siguiente
'-En este caso yo coloque una matriz de textbox
'--------------------------------------------------------------------------
Private Sub Text1_GotFocus(Index As Integer)
Focus MDIForm1.hwnd
End Sub

Private Sub Text1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
Focus MDIForm1.hwnd
End Sub

Si te interesa un pequeño ejemplo mandame tu email, dado que no lo haz puesto en tu pregunta.

Ah, si hay un usuario que sepa como mejorar este codigo favoir de escribirme, me interesa mucho saber que esto se pueda reducir.

Gracias.

|<  <<  188 189 190 191 192 193 194 195 196 197 198  >>  >|