Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

ayuda con paletas de colores

Estas en el tema de ayuda con paletas de colores en el foro de Visual Basic clásico en Foros del Web. hola amigos soy nuevo en el foro pero e visto que aca siempre hay una mano amiga presta para ayudar en fin mi problema es ...
  #1 (permalink)  
Antiguo 21/07/2010, 13:46
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Sonrisa ayuda con paletas de colores

hola amigos soy nuevo en el foro pero e visto que aca siempre hay una mano amiga presta para ayudar en fin mi problema es el siguiente e desarrollado una aplicacion telnet la cual funciona muy bien para la cual fue creada los colores la forma y funcionalidad para mi y mis amigos esta muy bien pero un amigo me sugirio que si podia hacer cambiar los colores a gusto de la persona que lo este usando para el momento y que esos cambios se mantengan que quiero decir cuando la persona instale el programa pueda cambiar los colores a su gusto y cuando lo cierre y lo vuelva a abrir esten los colores que el escogio adjunto una foto del interface

Última edición por yy5aeg; 21/07/2010 a las 13:51 Razón: correcion de palabra
  #2 (permalink)  
Antiguo 21/07/2010, 14:35
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: ayuda con paletas de colores

Hola, suponiendo que el fondo que vemos es un TextBox multiline, podrías tener estas dos rutinas:

Código vb:
Ver original
  1. Private Sub GuardarColores()
  2.   ' Guarda los Colores de la configuración (Suponiendo que es un Text multiline)
  3.  Dim nFichero As Integer
  4.   nFichero = FreeFile
  5.   Open App.Path & "\Colores.cfg" For Output As #nFichero
  6.     Print #nFichero, Text1.ForeColor
  7.     Print #nFichero, Text1.BackColor
  8.   Close #nFichero
  9. End Sub

Código vb:
Ver original
  1. Private Sub CargarColores()
  2.   ' Carga los Colores de la configuración (Suponiendo que es un Text multiline)
  3.  Dim nFichero As Integer, nColor As Single
  4.   On Error Resume Next
  5.   nFichero = FreeFile
  6.   Open App.Path & "\Colores.cfg" For Input As #nFichero
  7.     Input #nFichero, nColor: Text1.ForeColor = nColor
  8.     Input #nFichero, nColor: Text1.BackColor = nColor
  9.   Close #nFichero
  10. End Sub

Evidentemente deberás crear un Selector de Colores para que el usuario decida que colores quiera y después un Boton para guardar sus preferencias.

En el FormLoad ejecutas el CargarColores y listo.

Es una posibilidad entre tantas, ficheros Ini, Registro de Windows, pero tal vez esta sea mas simple y facil de implementar.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 21/07/2010, 15:12
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
De acuerdo Respuesta: ayuda con paletas de colores

Cita:
Iniciado por erbuson Ver Mensaje
Hola, suponiendo que el fondo que vemos es un TextBox multiline, podrías tener estas dos rutinas:

Código vb:
Ver original
  1. Private Sub GuardarColores()
  2.   ' Guarda los Colores de la configuración (Suponiendo que es un Text multiline)
  3.  Dim nFichero As Integer
  4.   nFichero = FreeFile
  5.   Open App.Path & "\Colores.cfg" For Output As #nFichero
  6.     Print #nFichero, Text1.ForeColor
  7.     Print #nFichero, Text1.BackColor
  8.   Close #nFichero
  9. End Sub

Código vb:
Ver original
  1. Private Sub CargarColores()
  2.   ' Carga los Colores de la configuración (Suponiendo que es un Text multiline)
  3.  Dim nFichero As Integer, nColor As Single
  4.   On Error Resume Next
  5.   nFichero = FreeFile
  6.   Open App.Path & "\Colores.cfg" For Input As #nFichero
  7.     Input #nFichero, nColor: Text1.ForeColor = nColor
  8.     Input #nFichero, nColor: Text1.BackColor = nColor
  9.   Close #nFichero
  10. End Sub

Evidentemente deberás crear un Selector de Colores para que el usuario decida que colores quiera y después un Boton para guardar sus preferencias.

En el FormLoad ejecutas el CargarColores y listo.

Es una posibilidad entre tantas, ficheros Ini, Registro de Windows, pero tal vez esta sea mas simple y facil de implementar.

Saludos
Hola erbuson muchas gracias por responde tan rapido no es un textbox es un RichTextBox pero igual funcionaria solo tendria que hacer unos cambios muy bien gracias lo pondre en practica
  #4 (permalink)  
Antiguo 21/07/2010, 15:30
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: ayuda con paletas de colores

Efectivamente, puede funcionar aunque creo que en el RichTextBox el ForeColor no existe como tal sino que creo es el SelColor, pero la idea es la misma.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 21/07/2010, 15:32
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda con paletas de colores

Cita:
Iniciado por erbuson Ver Mensaje
Efectivamente, puede funcionar aunque creo que en el RichTextBox el ForeColor no existe como tal sino que creo es el SelColor, pero la idea es la misma.

Saludos
Gracias
  #6 (permalink)  
Antiguo 02/08/2010, 14:05
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda con paletas de colores

Cita:
Iniciado por yy5aeg Ver Mensaje
Hola erbuson muchas gracias por responde tan rapido no es un textbox es un RichTextBox pero igual funcionaria solo tendria que hacer unos cambios muy bien gracias lo pondre en practica
hola erbuson mira probe tu ejemplo y realmente funciona para guadar las configuraciones pero estoy estudiando otro que usa un archivo ini y me gusta tambien pero tengo un problema al tratar de cambiar los colores de los textos mira te pongo el codigo que uso :
este codigo es para hacer el ini
//////////////////////////////////////////////////////////////////
Set cIni = New cIni
With cIni
Dim i As Integer
For i = 0 To 2
RichTextBox1.BackColor = .getValue(App.Path & "\config.ini", "Colores", "COLOR" & CStr(i), 0)
Next
End With
/////////////////////////////////////////////////////////////////////////////////////
este para cargar la paleta
With CommonDialog1
.ShowColor
RichTextBox1.BackColor = .Color
End With
////////////////////////////////////////////////////////////////////////////////////////////////////////////
este comando para cargar las preferencias de colores
With cIni
Dim i As Integer
For i = 0 To 2
Call .writeValue(App.Path & "\config.ini", "Colores", "COLOR" & CStr(i), RichTextBox1.BackColor)
Next
End With
Set cIni = Nothing
//////////////////////////////////////////////////////////////////////////////////////////////////
modulo de clase
Option Explicit

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long

Const CLAVE As String = "Clave"
Const SECCION As String = "Clave"

Function getValue(path_ini As String, SECCION As String, Key As String, Optional Default As Variant = "") As String

On Error GoTo error_handler

Dim buffer As String * 256
Dim ret As Long

ret = GetPrivateProfileString(SECCION, Key, Default, buffer, Len(buffer), path_ini)
getValue = Left$(buffer, ret)

Exit Function
error_handler:
MsgBox Err.Description, vbCritical

End Function

Function writeValue(path_ini As String, SECCION As String, Key As String, Valor As Variant) As String
On Error GoTo error_handler

Dim ret As Long
ret = WritePrivateProfileString(SECCION, Key, Valor, path_ini)

Exit Function
error_handler:
MsgBox Err.Description, vbCritical

End Function
/////////////////////////////////////////////////////////////////
el problema es que no logro hacer cambiar los colores de la data recibida probe con el siguiente codigo

With CommonDialog1
.ShowColor
RichTextBox1.SelColor = .Color
End With
y no me funciona e probado con otros y nada solo logro hacer cambiar el color de los textos diciendole por medio de codigos el color que va a usar pero no puedo hacer para que el color que escoja en la paleta de colores quede fijado la unica manera es que haga click el rich habra la paleta agarre el color y vuelva a hacer click y escriba pero eso no es lo que quiero ya que los datos que recibo es de un server deberian de tomarlos de inmediato pero no logro hacerlo

gracias por tu ayuda
Nota uso un commandialg para llamar a la paleta

Última edición por yy5aeg; 02/08/2010 a las 14:07 Razón: editar
  #7 (permalink)  
Antiguo 03/08/2010, 00:43
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: ayuda con paletas de colores

Hola:

En primer lugar, efectivamente si conoces los ficheros ini te va a resultar muchísimo mas facil, aunque no entiendo el sentido este código:

Set cIni = New cIni
With cIni
Dim i As Integer
For i = 0 To 2
RichTextBox1.BackColor = .getValue(App.Path & "\config.ini", "Colores", "COLOR" & CStr(i), 0)
Next
End With


Entiendo que estas leyendo de la seccion [Colores] los valores memorizados en COLOR0, COLOR1 y COLOR2 y en un bucle ¿ los asignas a BackColor ? no se lo que pretendes pero esto no va a funcionar ya que BackColor sólo va a reconocer el tercer valor que es el último que se le ha asignado.

Te lo comento porque antes de nada deberías aclarar esta idea ya que tal vez por ahí está el quid de la cuestión.

Me atrevo a pensar que el ciclo de 0,1,2 pueda ser por el Rojo, Verde, Azul pero si asi fuera, el error está en que BackColor es de por si un número que identifica a éste color.

Lo mismo ocurre en el Call .writeValue(App.Path & "\config.ini", "Colores", "COLOR" & CStr(i), RichTextBox1.BackColor) ya que estas guardando aunque con distinto nombre las tres veces el mismo Valor.

Intenta aclarar este punto antes de seguir porque como te decia mucho me temo que esta duda sea parte del error.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #8 (permalink)  
Antiguo 03/08/2010, 11:52
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Sonrisa Respuesta: ayuda con paletas de colores

Cita:
Iniciado por erbuson Ver Mensaje
Hola:

En primer lugar, efectivamente si conoces los ficheros ini te va a resultar muchísimo mas facil, aunque no entiendo el sentido este código:

Set cIni = New cIni
With cIni
Dim i As Integer
For i = 0 To 2
RichTextBox1.BackColor = .getValue(App.Path & "\config.ini", "Colores", "COLOR" & CStr(i), 0)
Next
End With


Entiendo que estas leyendo de la seccion [Colores] los valores memorizados en COLOR0, COLOR1 y COLOR2 y en un bucle ¿ los asignas a BackColor ? no se lo que pretendes pero esto no va a funcionar ya que BackColor sólo va a reconocer el tercer valor que es el último que se le ha asignado.

Te lo comento porque antes de nada deberías aclarar esta idea ya que tal vez por ahí está el quid de la cuestión.

Me atrevo a pensar que el ciclo de 0,1,2 pueda ser por el Rojo, Verde, Azul pero si asi fuera, el error está en que BackColor es de por si un número que identifica a éste color.

Lo mismo ocurre en el Call .writeValue(App.Path & "\config.ini", "Colores", "COLOR" & CStr(i), RichTextBox1.BackColor) ya que estas guardando aunque con distinto nombre las tres veces el mismo Valor.

Intenta aclarar este punto antes de seguir porque como te decia mucho me temo que esta duda sea parte del error.

Saludos
ok amigo vamos a simplificarnos la vida voy a usar tu codigo vamos a olvidarnos del que te mostre mira :

el codigo que tu me diste adaptado al richtextbox :

Private Sub Form_Load()
Dim nFichero As Integer, nColor As Single
On Error Resume Next
nFichero = FreeFile
Open App.Path & "\Colores.txt" For Input As #nFichero
Input #nFichero, nColor: RichTextBox1.SelColor = nColor
Input #nFichero, nColor: RichTextBox1.BackColor = nColor
Close #nFichero

llamar a la paleta de colores para cambiar el backcolor

Private Sub Command3_Click()
With CommonDialog1
.ShowColor
RichTextBox1.BackColor = .Color
End With
End Sub


llamar paleta para cambiar texto del rich

Private Sub Command4_Click()
With CommonDialog1
.ShowColor
RichTextBox1.SelColor = .Color
End With
End Sub

el codigo anterior llama la paleta escojo el color pata el texto pero no hace el cambio al menos que yo haga click sobre el rich vuelva a escojer el color y escriba alli si lo toma pero asi no me deberia de funcionar ya que yo no tengo que escribir nada sobre el rich ya que la data o los datos que recibo me los envia un server

recuperar las preferencias

Private Sub Form_Unload(Cancel As Integer)
Dim nFichero As Integer
nFichero = FreeFile
Open App.Path & "\Colores.txt" For Output As #nFichero
Print #nFichero, RichTextBox1.SelColor
Print #nFichero, RichTextBox1.BackColor
Close #nFichero
End Sub

yo aplique tu codigo a un textbox y funciona al 100% pero el problema es que el textbox no soporta tantos caracteres ya que esta aplicacion que arme recibe datos a cada segundo y por lo general esa aplicacion puede durar varias horas recibiendo datos y llega el momento que no entran mas esa data no es para guardarla simplmente se lee lo que se recibe y si por alguna razon se quiere guardar para eso le puse un comando para imprimir

una imagen para que veas como es la interface completa

Última edición por yy5aeg; 03/08/2010 a las 12:13 Razón: imagen
  #9 (permalink)  
Antiguo 04/08/2010, 01:31
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: ayuda con paletas de colores

Hola:

Creo que deberías probar así:


Private Sub Command4_Click()
CommonDialog1.ShowColor
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = CommonDialog1.Color
End Sub


La propiedad SelColor es para el texto seleccionado, por lo tanto lo que este código hace como puedes ver es antes de asignar la propiedad seleccionar todo el texto y así parece funcionar.

Respecto a los ficheros INI, que parece descartas, si quieres dale un vistazo al siguiente enlace que utiliza las funciones en un Modulo en lugar de una clase y funciona perfectamente. Tu mismo.

Leer y Grabar archivos INI

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #10 (permalink)  
Antiguo 11/08/2010, 08:35
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda con paletas de colores

Cita:
Iniciado por erbuson Ver Mensaje
Hola:

Creo que deberías probar así:


Private Sub Command4_Click()
CommonDialog1.ShowColor
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = CommonDialog1.Color
End Sub


La propiedad SelColor es para el texto seleccionado, por lo tanto lo que este código hace como puedes ver es antes de asignar la propiedad seleccionar todo el texto y así parece funcionar.

Respecto a los ficheros INI, que parece descartas, si quieres dale un vistazo al siguiente enlace que utiliza las funciones en un Modulo en lugar de una clase y funciona perfectamente. Tu mismo.

[URL="http://www.recursosvisualbasic.com.ar/htm/listado-api/159-leer-grabar-archivo-ini.htm"]Leer y Grabar archivos INI[/URL]

Saludos
ok estoy apenas llegando de unas mini vacaciones voy a ver con calma ya te doy el reporte gracias.
  #11 (permalink)  
Antiguo 30/08/2010, 13:42
 
Fecha de Ingreso: julio-2010
Ubicación: Caracas Venezuela
Mensajes: 18
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda con paletas de colores

Cita:
Iniciado por erbuson Ver Mensaje
Hola:

Creo que deberías probar así:


Private Sub Command4_Click()
CommonDialog1.ShowColor
RichTextBox1.SelStart = 0
RichTextBox1.SelLength = Len(RichTextBox1.Text)
RichTextBox1.SelColor = CommonDialog1.Color
End Sub


La propiedad SelColor es para el texto seleccionado, por lo tanto lo que este código hace como puedes ver es antes de asignar la propiedad seleccionar todo el texto y así parece funcionar.

Respecto a los ficheros INI, que parece descartas, si quieres dale un vistazo al siguiente enlace que utiliza las funciones en un Modulo en lugar de una clase y funciona perfectamente. Tu mismo.

[URL="http://www.recursosvisualbasic.com.ar/htm/listado-api/159-leer-grabar-archivo-ini.htm"]Leer y Grabar archivos INI[/URL]

Saludos
hola disculpa lo tarde que te respondi mira me funciono al 1000% muchisimas gracias erbuson eres el mejor

Etiquetas: colores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:28.