ActiveX - Problemas al crear control ActiveX

 
Vista:

Problemas al crear control ActiveX

Publicado por Miquel (1 intervención) el 31/01/2003 09:02:44
Estoy creado un control Activex a partir de dos controles textbox i un label, como entorno gráfico.

A la hora de querer asignarle la propiedad BorderStyle el control hace caso omiso de la orden siguiente.

La ccBorderStyleConstants la he definido yo como:

Enum ccBorderStyleConstants
ccNone = 0
ccFixedSingle = 1
End Enum

Public Property Get BorderStyle() As ccBorderStyleConstants
BorderStyle = UserControl.BorderStyle
End Property

Public Property Let BorderStyle(ByVal NouBorder As ccBorderStyleConstants)
UserControl.BorderStyle = NouBorder
PropertyChanged "BorderStyle"
End Property

Hay alguna cosa que este haciendo mal?

Después otra pregunta:

En el mismo control quiero que si el usuario del control cambia el tipo de letra se modifique, pero el control me da el siguiente error:

Número de argumentos erróneo o asignación de propiedad no válida (Error 450)

El código que yo he hecho para la propiedad font es:

Public Property Get Font() As Font
Set Font = UserControl.Font
End Property

Public Property Let Font(ByVal NovaFont As Font)
UserControl.Font = NovaFont
Text1.Font = NovaFont
Text2.Font = NovaFont
Label1.Font = NovaFont
PropertyChanged "Font"
End Property

Hay alguna cosa que este haciendo mal?

Muchas gracias por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro Andrade

Problemas al crear control ActiveX

Publicado por Alejandro Andrade (213 intervenciones) el 24/03/2023 21:34:55
En cuanto al problema con la propiedad BorderStyle, parece que la definición de la enumeración ccBorderStyleConstants es correcta y las propiedades Get y Let están bien definidas. Sin embargo, es posible que el problema esté en la forma en que estás intentando establecer el valor de la propiedad. En lugar de establecer la propiedad directamente en el código del control, puedes intentar establecerla desde el formulario donde se utiliza el control. Por ejemplo, en el formulario podrías tener el siguiente código:

1
2
3
Private Sub Form_Load()
   MyCustomControl.BorderStyle = ccFixedSingle
End Sub

En cuanto al problema con la propiedad Font, el error que estás recibiendo indica que estás asignando un número incorrecto de argumentos a la propiedad Font. La propiedad Font de un control ActiveX es un objeto Font que tiene varias propiedades, como Name, Size y Bold, entre otras. Para asignar una fuente diferente al control y sus subcontroles, debes crear un objeto Font nuevo y establecer sus propiedades antes de asignarlo a la propiedad Font del control y sus subcontroles. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Property Let Font(ByVal NovaFont As Font)
   Set UserControl.Font = NovaFont
   Set Text1.Font = NovaFont
   Set Text2.Font = NovaFont
   Set Label1.Font = NovaFont
   PropertyChanged "Font"
End Property
 
Private Sub SetFont()
   Dim f As New StdFont
   f.Name = "Arial"
   f.Size = 10
   f.Bold = True
   Me.Font = f
End Sub

En este ejemplo, la propiedad Font del control y sus subcontroles se establece mediante un objeto Font nuevo llamado "f". Primero se establecen las propiedades del objeto Font, y luego se asigna a la propiedad Font del control y sus subcontroles mediante la instrucción "Set". Espero que esto te ayude a solucionar los problemas con tu control ActiveX.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar