visual basic foro mshflexgrid.docx

Upload: niel-patrick-manrique-jorge

Post on 11-Oct-2015

258 views

Category:

Documents


4 download

TRANSCRIPT

Visual Basic Foro

Principio del formularioBienvenido(a),Visitante. Por favor,ingresaoregstrate.Perdiste tuemail de activacin? Ingresar con nombre de usuario, contrasea y duracin de la sesinFinal del formularioPrincipio del formularioFinal del formularioNoticias:Nuevo Foro de programacion

Inicio Blog Ayuda Buscar Ingresar Registrarse

Visual Basic Foro Programacin Visual Basic 6(Moderadores:coco,cobein,xkiz ) MsFlexGRID anteriorprximo IMPRIMIRPginas: [1]AutorTema: MsFlexGRID (Ledo 2454 veces)0 Usuarios y 1 Visitante estn viendo este tema.Principio del formulariopedroesca Megabyte Mensajes: 172 Reputacin: +15/-0 "El conocimiento es libre"

MsFlexGRIDen:Febrero 18, 2012, 11:36:37 am Buenas a todos! Antes de mi pregunta, y para suavizar un poco las mangueadas o peticiones respecto a mi alto grado de ignorancia en la mayora de los aspectos de la programacin en VB6, voy a contar una breve resea y/o ancdota como introduccin al tema que atae en este momento:Siempre tuve un dilema respecto a la utilizacin de las grillas, cuando aprend a programar cuestiones de grids, lo hice utilizando el FlexGrid bsico, comn y corriente, incorporado al vb, pero senta un vaco, como que "le faltaba algo", y era que no me gustaba "como se vea", entonces busqu otros recursos como el Listview, un par de grillas de cdigo abierto que andaban dando vueltas por la web, hasta que me top con el SGrid (de vbaccelerator.com) y qued maravillado, era preciosa, mucho mas veloz en cuanto a carga, visualmente adoptaba varios estilos.Y como es obvio, la comenc a utilizar y adaptar incluso en varios proyectos que estaban funcionando (si, lo se, no se debe hacer), solo atrado por su belleza, sin importarme "lo de adentro", hasta que comenz a tener ciertos bugs, no muy frecuentes, luego aparecieron con mas frecuencia, hasta que dichos bugs comenzaban a COLGAR LA APLICACIN y cerrarla, por lo cual tom una decisin drstica, DEJAR DE USARLA, como quien no quiere dejar de fumar (yo fumo actualmente).Y entonces, hice como hacen muchos, volv con "mi primer y antigua novia", la mal ponderada y mal criticada FLEXGRID, y le encontr los puntos fuertes, encontr que es la mas personalizable y "flexible" (como lo dice su nombre), y con un poco de imaginacin, creatividad y una pizca de cdigo, se pueden hacer mil maravillas, aunque no lo crean.

Bueno, toda esa introduccin fue para darle un toque mas "potico" a la cuestin, para que no sea tan fro el post. En fin, un asunto que me est trabando es justamente algo muy importante, y es la CARGA DE REGISTROS / FILAS en la grilla, bsicamente, lo est haciendo muy lento, ni hablar de cargarle 1000 registros. Lo estoy haciendo de esta manera:Cdigo:[Seleccionar]Public Sub CargaFlexGRID(rx As ADODB.Recordset, f As Form, Grilla As MSFlexGrid) With Grilla .Clear .Rows = rx.RecordCount + 1 .Cols = rx.Fields.Count + 1 For I = 1 To rx.Fields.Count .Row = 0 .Col = I .Text = rx.Fields(I - 1).Name Next I For I = 1 To rx.RecordCount For J = 1 To rx.Fields.Count .Row = I .Col = J .Text = rx.Fields(J - 1).Value Next J rx.MoveNext Next I End WithEnd Sub

Y tambin noto dicho comportamiento lento, al aplicarle un msero formato de fuentes (FONTS) en sus celdas.No se si es mi PC la que anda mal (xq necesita urgente un format) o realmente esta grilla se comporta as, deseara saber que criterios manejais vosotros con respecto a las grillas.

Desde ya muchas gracias.

Saludos desde Argentina.En lnea"Si yo tengo una idea, t otra, y la compartimos, ambos tendremos DOS ideas"YAcosta Petabyte Mensajes: 1956 Reputacin: +105/-32 Daddy de Qentas

Re:MsFlexGRIDRespuesta #1 en:Febrero 18, 2012, 01:40:26 pm Doctor, la carga la estas haciendo a mano??El grid se puebla en una patada...:Cdigo: Visual Basic1. Dim rs As New ADODB.Recordset2. rs.Open sql, dB, 1, 13. Set Grid1.DataSource = rs4.

Y si cargaste en ese grid 1000 registros y quieres darle un toque visual, pintando las celdas, poniendo otro font a ciertas celdas, formateando los nmeros, etc etc o quiz por alguna otra razn lo pueblas a mano , hazlo pero antes:

Grid1.Visible = FalseTodo tu codigo de pintadoGrid1.Visible = True

Va veloz.

Te recomiendo mejor el MSHFlexGrid que es el que uso, este ademas de todo lo que tiene el MSFlexGrid te permite consultas jerrquicas.ltima modificacin: Febrero 18, 2012, 02:17:27 pm por YAcostaEn lneaMe encuentras enYAcosta.comADONAIRAFA Gigabyte Mensajes: 281 Reputacin: +37/-1 Que bien se siente al terminar un programa !!!

Re:MsFlexGRIDRespuesta #2 en:Febrero 18, 2012, 03:06:15 pm Saludos Pedro e Yvan !!!

Yo usaba el antiguo Grid (se acuerda alguno?), despues el FlexGrid (un poco, claro) pero atardo por los "tentculos seductores" del ListView, fue el que empec a utilizar oficialmente.

Pero, al pasar el tiempo, en este "matrimonio" me d cuenta que haca falta algo de "sabor en esta relacin", y he estado "flirteando" muy ligeramente (per apenas !!!) con MSFlexGrid, pero no hemos llegadoa a nada !!! y estoy pensando "pedirle el divorcio" al ListView o llevar una relacin "ms liberal" y forma un "tringulo amoros informtico" entre ListView, MSFlexGrid y yo !!!

Bueno despues de este "drama informtico-pasional" que les cont (tratando de seguir tu "onda literaria, Pedro !!!), es por si me pueden dar una orientacin o un ejemplo, de como sacarle "el jugo" a estos controles !!!

Saludos y un abrazo a uds hermanos desde Venezuela !!!(Venezuela libre a partir del 7/10/2012)En lneaHay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!YAcosta Petabyte Mensajes: 1956 Reputacin: +105/-32 Daddy de Qentas

Re:MsFlexGRIDRespuesta #3 en:Febrero 18, 2012, 03:15:12 pm Insisto, csense con el MSHFlexgrid :-) hace mas cosas, aguanta bien, no se queja ni jode.

(Venezuela libre a partir del 7/10/2012?) En lneaMe encuentras enYAcosta.comADONAIRAFA Gigabyte Mensajes: 281 Reputacin: +37/-1 Que bien se siente al terminar un programa !!!

Re:MsFlexGRIDRespuesta #4 en:Febrero 18, 2012, 03:27:29 pm Mi hermano, el 07/10/2012, son las elecciones presidenciales, gobernadores y alcaldes en nuestro pas, y ese da nos liberamos de "una plaga" que tenemos por ms de 12 aos !!! por que ya le sali un fortsimo candidato de "la oposicin" que le est "roncando bien duro" al presidente Huguito (pap de Humala) y el tipo est dando todas las demostraciones (l y sus seguidores) de que est como "palo de gallinero" osea bien "cagado" !!! y en fin...

Bueno si leiste completo, si voy a aceptar "en matrimonio" al MSFlexGrid, pero lo que te dije, como usarlo, como modificar los encabezados de columnas para que muestre por ejemplo nombres de campos que yo le coloque (y no los verdaderos, como estn en la tabla), como personalizarlos, etc !!!

Saludos !!!En lneaHay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!seba123neo Terabyte Mensajes: 732 Reputacin: +80/-5

Re:MsFlexGRIDRespuesta #5 en:Febrero 18, 2012, 03:28:06 pm el tema es asi:

Datagrid = control lindo carga rapido, feo control, horrible interfaz.MSHFlexgrid = carga rapido, mucha personalizacion, es el mejor.ListView = no carga tan rapido como el anterior, mucha personalizacion, es tambien para usar.

como dijo Ivan usa elMSHFlexgrid, y cargalo con el datasource, yo lo uso asi y me carga 7 mil registros en menos de un segundo.

esta es una funcion que uso para cargar elMSHFlexgrid, ya que como dijeron , por mas que lo carges con el datasurce, debes hacer un trabajito extra para que tengas las cabeceras de las columnas con los nombres que vos quieras, esta funcion te permite crear las columnas que quieras, asignarles un nombre y color de cabecera y el ancho mismo, si le pones 0 de ancho la ocultas, esta muy bueno ya que tenes todo lo que podes querer.Cdigo: Visual Basic1. Private Sub CargarGrilla()2. Dim ww As Long, cc As Long3. 4. flexSectores.Redraw = False5. flexSectores.Rows = 16. flexSectores.FixedRows = 07. flexSectores.Rows = 08. 9. flexSectores.DataMember = rsDatos.DataMember10. Set flexSectores.DataSource = rsDatos.DataSource11. 12. flexSectores.AddItem "", 013. 14. If flexSectores.Rows > 1 Then flexSectores.FixedRows = 115. 16. flexSectores.ColWidth(0) = 100017. flexSectores.ColWidth(1) = 730018. flexSectores.ColWidth(2) = 019. 20. ww = 7021. For cc = 0 To flexSectores.Cols - 122. ww = ww + flexSectores.ColWidth(cc)23. Next24. If flexSectores.RowHeight(0) * flexSectores.Rows > flexSectores.Height Then25. ww = ww + 24026. End If27. 28. flexSectores.TextMatrix(0, 0) = "Cdigo"29. flexSectores.TextMatrix(0, 1) = "Nombre"30. 31. flexSectores.Row = 032. For cc = 0 To flexSectores.Cols - 133. flexSectores.col = cc34. flexSectores.CellBackColor = vbBlack35. flexSectores.CellForeColor = vbWhite36. Next37. 38. flexSectores.Redraw = True39. End Sub

esta rutina simple tiene todo lo que podes necesitar.

te explico basicamente lo que hace.

1 - deshabilita el repintado con Redraw = False, ya que al cargar por ejemplo unos miles de registros, el control parpadea o lo que se llama "flickering", con esto evitas eso, luego lo habilitas una vez que termino de cargar todo.

2 - luego se enlaza con el recordset:Cdigo: Visual Basic1. flexSectores.DataMember = rsDatos.DataMember2. Set flexSectores.DataSource = rsDatos.DataSource

3 - agrega un item vacio (este truco sirve para armar el encabezado con este item) y luego lo hace "fixed" o sea lo hace "un item fijo" como las cabeceras de las grillas. con la linea:Cdigo: Visual Basic1. flexSectores.FixedRows = 1

luego viene lo divertido con las columnas.

4 - este codigo:Cdigo: Visual Basic1. flexSectores.ColWidth(0) = 10002. flexSectores.ColWidth(1) = 73003. flexSectores.ColWidth(2) = 0

ahi le pones la longitud que queres que tengan las columnas que vas a tener el la grilla. yo por ejemplo aca tengo 3 columnas, pero la ultima columna (la que tiene indice 2) la hago invisible con ponerle el ancho a 0.

con esto podes agregar las columnas que desees y oculatar las que desees.

5 - luego con este codigo:Cdigo: Visual Basic1. flexSectores.TextMatrix(0, 0) = "Cdigo"2. flexSectores.TextMatrix(0, 1) = "Nombre"

aca les pones el "titulo" de cada columna (antes le pusimos el ancho) ahora toca poner el titulo.

acordarse siempre de poner bien los indices de las columnas y que estos comienzen desde 0.

6 - por ultimo este codigo:Cdigo: Visual Basic1. flexSectores.Row = 02. For cc = 0 To flexSectores.Cols - 13. flexSectores.col = cc4. flexSectores.CellBackColor = vbBlack5. flexSectores.CellForeColor = vbWhite6. Next

pinta la cabecera, negro el fondo y blanca la letra, aca podes jugar con los colores que quieras.

llama a esta funcion una vez que el recordset este lleno y listo.

saludos.ltima modificacin: Febrero 18, 2012, 03:38:06 pm por seba123neoEn lneaQuien nunca ha cometido un error nunca ha probado algo nuevo - Albert EinsteinYAcosta Petabyte Mensajes: 1956 Reputacin: +105/-32 Daddy de Qentas

Re:MsFlexGRIDRespuesta #6 en:Febrero 18, 2012, 06:40:40 pm Cita de: ADONAIRAFA en Febrero 18, 2012, 03:27:29 pmBueno si leiste completo, si voy a aceptar "en matrimonio" al MSFlexGrid, pero lo que te dije, como usarlo, como modificar los encabezados de columnas para que muestre por ejemplo nombres de campos que yo le coloque (y no los verdaderos, como estn en la tabla), como personalizarlos, etc !!!

Saludos !!!

Hola Manuelin, mejor explicacin que la que te dio Sebas no te la puedo dar, su explicacin es completa, clara e insuperable, solo el detalle que me parece que se te pas y que Sebas si not es que efectivamente yo me refer en todos mis post al MSHFlexgrid (con H) y no al MSFlexGrid (sin H) y con la que te debes casar es con la que tiene H porque? Porque es muda (broma), no las razones ya te las dio Sebas.

En cuanto a Humala, creo que ya dejo de ser el hijo de Chavez porque desde que entro al gobierno ha hecho exactamente lo contrario de lo que prometa hacer en campaa... y eso era lo que justamente todos queriamos.

Saludos y ojala el cambio se de.En lneaMe encuentras enYAcosta.comADONAIRAFA Gigabyte Mensajes: 281 Reputacin: +37/-1 Que bien se siente al terminar un programa !!!

Re:MsFlexGRIDRespuesta #7 en:Febrero 18, 2012, 07:18:38 pm Tienes razn Yvan !!! Se me haba olvidado la "H" pero el cario es el mismo Je, Je, JeQue bueno lo de Humala !!! Y aqu de que va a haber cambio, lo va a haber y para bien !!!

Cooo... sebas !!! tremendo mini tuto intensivo del MSHFlexGrid, no jod...!!!Si no me queda claro con esa explicacin renuncio a la programacin !!! Agaredecido sebas !!!

Saludos !!!En lneaHay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!seba123neo Terabyte Mensajes: 732 Reputacin: +80/-5

Re:MsFlexGRIDRespuesta #8 en:Febrero 18, 2012, 07:43:58 pm jeje, gracias, tambien se podria usar el ucListview, control que publicaron varias veces aqui raul, ese tambien es bueno y en personalizacion es completo, pero en rapides con recordset lamentablemente no es igual al MSHFlexgrid en grandes cantidades de registros, pero para pocos registros puede ser bueno tamben, es mas yo lo uso tambien.

saludos.En lneaQuien nunca ha cometido un error nunca ha probado algo nuevo - Albert Einsteinpedroesca Megabyte Mensajes: 172 Reputacin: +15/-0 "El conocimiento es libre"

Re:MsFlexGRIDRespuesta #9 en:Febrero 20, 2012, 12:07:27 pm De vuelta, he seguido vuestros consejos: Gracias SEBA, IVAN y MANUEL, tienen toda la razn, prob el Hierarchical Flex y prcticamente "vuela", ya est solucionado, encontr a quien tanto esperaba luego de varios "deslices" e infidelidades. Creo que con la explicacin de Seba est mas que claro el asunto, y si Ivan, tienes toda la razn, lo que mas atrae es que tiene la H que es MUDA. Y respecto al tringulo amoroso informtico , propuesto por Manuel, creo que un "gangbang" de grillas tambin es una opcin

Gracias nuevamente a todos.!En lnea"Si yo tengo una idea, t otra, y la compartimos, ambos tendremos DOS ideas"Final del formulario IMPRIMIRPginas: [1] anteriorprximo Visual Basic Foro Programacin Visual Basic 6(Moderadores:coco,cobein,xkiz ) MsFlexGRIDIr a:

Powered by SMF 2.0.4|SMF 20062009, Simple Machines LLC XHTML RSS WAP2