Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: ale_xi en Abril 27, 2016, 03:22:56 am
-
Hola a todo, Estoy intentando meter un icono en una columna de un Msflexgrid y este Grid estas conectado una BD en una tabla llamada ventas una campo es llama activar tiene solo 0,1 nada mas 1 ACTIVAR 0 DESACTIVAR, Quiero que coloque un icono este campo tienes 1 de cualquier color para destacarlo y 0 de otro color distinto al anterior
aqui les doy una idea de lo que busco:
http://www.quentas.net/upload/single-project/06.jpg
ojala no te molestas YAcosta
gracias
-
jajajaja no problem, lo bueno es que citaste la fuente jajaja.
Doc te puedo ayudar pero tendrías que esperarme hasta casi la noche, pasa que estoy en cliente y aqui no tengo nada de código y terminare este trabajo hasta las 6pm, de allí en lo que llegue a casa y me acomode. Si hasta entonces no tienes respuesta te hecho una mano.
Saludos
-
gracias YAcosta voy esperar
-
Bien.
Primero hago mi descargo de que el método que uso lo realice hace mas de 5 años, no se si es el mejor metodo o hay alguna forma mas ortodoxa, lo cierto es que es un codigo que no toque en estos años porque desde el principio siempre me ha funcionado mejor de lo que esperaba.
Primero (usando el ejemplo que citaste)
(https://i.snag.gy/nEBFT9.jpg)
tengo 2 controles image cada uno con su respectivo gráfico.
Luego tengo un procedimiento que carga los datos con los que poblare el control
Luego tengo otro procedimiento que me "maquilla" el control, y en ese procedimiento tengo este codigo:
.col = 0
For nFila = 1 To .Rows - 1
.Row = nFila
Select Case .TextMatrix(nFila, 14) '***
Case 0: Set .CellPicture = Image1.Picture ': .CellPictureAlignment(0) = 4
Case Else: Set .CellPicture = Image2.Picture ': .CellPictureAlignment(0) = 4
End Select
'otros maquillajes...
Next nFila
*** Evalúo por esta columna, en este caso el grid muestra la lista de productos, si hay stock pone el botón verde, si no lo hay lo pone rojo (estoy tentado de poner uno amarillo que indique "ya se va acabar", no es difícil evaluar eso, pero mientras nadie lo financie no lo haré (me refiero a mis clientes)).
El asunto es que este código de maquillaje acompañado de otras lineas mas no resulta lento ni ineficiente, experimentando he llegado a cagar hasta 7000 registros y se pobló y maquilló en un pestañeo, ya con 1000 o 2000 filas se pasea, ah pero ojo: Cuando empiezas a tocar el grid debes poner Grid.Redraw = False/True para que no se sople pintar mientras hace el trabajo porque alli si iria lento, es decir:
Grid.Redraw = False
CodigoCargaData
CodigoMaquilla
Grid.Redraw = True
Y el resultado (en tiempo real) es este:
(http://queryfull.com/p/videoq.gif)
Servido.
-
muchas gracias yacosta por tu ayuda ya me funciono
-
Hola YAcosta. Estuve viendo tu código, te cuento ya agregue 1icono amarillo el cual indica que se va a acabar el producto, te mando el código modificado
Dim nFila As Integer
With Grid
.Col = 0
For nFila = 1 To .Rows - 1
.Row = nFila
Select Case CLng(.TextMatrix(nFila, 6)) '***
Case 0: Set .CellPicture = Image1.Picture ': .CellPictureAlignment(0) = 4
Case Is <= CLng(10): Set .CellPicture = Image3.Picture
Case Else: Set .CellPicture = Image2.Picture ': .CellPictureAlignment(0) = 4
End Select
'otros maquillajes...
Next nFila
End With
(http://s32.postimg.org/hbwdwwx01/Sin_t_tulo_2.jpg) (http://postimg.org/image/hbwdwwx01/)
Saludo
-
Excelente, te quedo piola.
Saludos