Visual Basic - Error con FlexGrid

Life is soft - evento anual de software empresarial
   
Vista:

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 03/04/2012 14:17:44
Uso VB6 con SP6 y actualizacion acumulativa KB957924 en Windows XP con todos los Service Pack. En mi programa uso el control FlexGrid 6.1.98.16 de 3/24/2009, es decir la última version.
En ciertos controles, de algunos Forms, una de cada 100 o 200 veces, al hacer click en una Fila, en runtime, se produce "Error de automatizacion" sin motivo aparente. ¿Porque? ¿Alguna Pista? Gracias por su tiempo
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 03/04/2012 16:55:26
En realidad no es una respuesta, soy Sergio, y es una forma de ampliar la consulta. El problema es grave, no se como encararlo. No se trata de un error de mi codigo. Creo que es un error que sucede en el FlexGrid. Otros problemas intrínsicos de este control lo he podido resolver, pero este me sobrepasa. Tiene sabor amargo saber que este control tiene errores que no han sido solucionados, despues de dedicar tanto tiempo para codificar con el mismo. Se que VB6 y este control ya no tienen soporte por parte de Microsoft, ni VideoSoft (que ya no existe como tal sino fucionada con Apex para formar ComponetOne), pero sería bueno que gente que realmente sabe mucho y con corazón apiadado, se brinde para solucionar este problema. Si no tenes la solucion pero te pasa algo similar sería bueno que tratemos el problema juntos. Si se ocurren mas datos los expondré como respuestas. Gracias a todos.
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 04/04/2012 19:47:15
Mientras espero si alguien quiere comentar algo sobre el problema anunciado (u otros). Les alerto sobre un comportamiento extraño del FlexGrid. Supongamos que el control ya esta cargado por ejemplo, con 5 Filas, una Fija (la de titulos o encabezados de columna) y 4 No Fijas (las de datos). Recordemos que la Fila Actual del Control, (la Fila no Fija Seleccionada por ejemplo mediante un click), esta dada por la propiedad Row (por ejemplo MSFlexGrid1.Row). En esta situacion Row podrá valer entre 1 y 4, segun donde el usuario hace el Click. ¿De acuerdo? Bien...Supongamos tambien que el control es bastante alto, de manera que si existiesen mas de 4 Filas de Datos, estas tambien se mostrarían en el Control, sin que apareciese la Barra de Scroll Vertical. En este contexto, el Control muestra una zona sin Filas. La misma esta comprendida entre la ultima Fila, y el limite inferior del mismo. ¿De acuerdo? Bien...Convengamos lo siguiente, que si el Usuario hace click en esta zona, no debería acontecer nada, pues no esta haciendo click sobre ninguna Fila. Algo similiar debería ocurrir si el Usuario hace un click sobre la Fila Fija (o de Titulos), pues no se esta eligiendo ninguna Fila de Datos. ¿Y que ocurre en el FlexGrid? Cuando el Usuario hace Click en la zona inferior sin Filas ¡El FlexGrid selecciona la Ultima! (la 4 en el ejemplo), y cuando hace Click en los Titulos, ¡Selecciona la Primera! (la 1). Recordemos que no es simplemente que la Seleccion cambia de Fila (a la 4 o la 1 segun el caso, sino que se desencadenan los eventos pertinentes, (como Flexgrid1_Click, Flexgrid1_SelChange, etc), con la consiguiente ejecución de codigo, cuando el Usuario en realidad no ha elegido nada, es decir, tal vez fue un click por error. ¿Acaso no es algo que en realidad no debería suceder? ¿Acaso no se deberían ignorar estos click s fuera del area de las Filas de Datos (las No Fijas)? ¿Acaso no es esto un error de programacion del Control por parte de los programadores de VideoSoft? Personalmente, yo a estos click los llamo "Clicks Chotos", y en el codigo, los detecto, y los ignoro. En mi humilde opinión creo que asi debe ser. Espero que a Usted le sirva esta exposición. Trataré mas adelante de explicar otras cosas.
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 05/04/2012 05:03:50
Bueno, mientras espero que alguien aporte sus dudas sobre FlexGrid, o por el contrario, su experiencia y sus descubrimientos o certezas, hago otro pequeño comentario, sobre algo que recorde. Se trata sobre la Selección. Espero estar rotundamente equivocado y que alguien me diga: nnnnoooo animal!!!! esto se hace asi..... Bueno, lo cierto es que el Control FlexGrid esta preparado para la multiseleccion de Filas, es decir, el usuario puede haciendo click y arrastrar hacia abajo, seleccionar la Fila donde se hizo el click, y las siguientes hacia abajo, hasta donde se arrastro el puntero. Asi, puede lograr dejar seleccionadas varias Filas. De verdad esta buena esta posibilidad, salvo por un detalle: no se puede impedir la multiseleccion, es decir, no hay propiedad alguna para establecer la imposibilidad de que el usuario lo haga. Repito: espero equivocarme! Que alguien me retruque y me demuestre que si se puede, sería para mí muy bueno. Pero lo cierto es que segun recuerdo no es posible. Y lo increible de todo, es que en el 99% de los casos se necesita que el usuario, elija solo una opción, solo una Fila. Vos me podras decir, buenooo pero se entiende que es la primera de todas las seleccionadas, y yo te contesto, esta bien pero... ¿acaso no esta mal que esto suceda? Al menos...¿no queda feo? ¿Tanto costaba agregar una propiedad como por ejemplo: MSHFlexGrid1.MultiSelection = False? No crean que soy tan renegado, estoy escribiendo riendome un poco de todo esto. Es que sucede que no es tan improbable hacer por descuido una multiseleccion sobre las Filas. Suele pasar. Si te pones a jugar con el mouse un poquito haciendo clicks aqui y allá seguro que a veces te pasa. En fin, sigo esperando aportes o experiencias sobre el FlexGrid. Capaz salga algo bueno ¿no? Gracias por leer.
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

Error con FlexGrid

Publicado por emerson palacios (31 intervenciones) el 05/04/2012 05:44:04
Bueno yo la verdad trabaje bastante tiempo en vb6 y si me di cuenta de algunos comportamientos extraños del flexgrid, por eso que el unico grid que utilize y no me dio nunca problemas fue el mshflexgrid que es mucho mas completo que el flexgrid y no me dio tantos problemas.
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 06/04/2012 20:56:33
Gracias Emerson. Quiero aclarar que cuando yo hablo del 'FlexGrid' en realidad me refiero a los Controles MSFlexGrid y MSHFlexGrid. Los dos de Microsoft, que en realidad fueron creados por VideoSoft. Yo tambien trabajo con el MSHFlexGrid, porque como tu dices, es el mas completo. Su ultima version es el 6.01.98.16 de marzo del 2009. Para los que recien empiezan, aclaremos que es fundamental despues de Instalar Visual Basic 6, instalar el Service Pack 6, y luego, finalmente instalar la actualizacion acumulativa KB957924. Me ha sucedido tener errores inexplicables, que desaparecieron 'magicamente' al instalar los Service Pack. No solo nosotros cometemos errores de codificacion. Gracias Emerson. Seria bueno, si es que te acuerdas, cuales fueron esos 'comportamientos extraños' que tu comentas. Igualmente tu exposicion sirve para testificar la existencia de estos problemas.
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 07/04/2012 02:32:30
Voy a transcribir una partecita de un codigo mio:
1
2
3
4
5
       'Vaciar el FlexGrid y No Visualizar las Seleccion. Asi se puede Llenar con las Filas necesarias y aplicarles Formato, sin que el usuario vea nada raro.
        FlexGrid.FixedRows = 0: FlexGrid.FixedCols = 0  '<--No necesario, pero razonable, antes de dejar en 0 a Rows y Cols. Si no se ejecuta esta linea igual se vio que no se produce error de automatizacion si es que esta la siguiente.
        FlexGrid.Rows = 1: FlexGrid.Cols = 1            '<--Increiblemente necesario, sino, si el LLenado anterior fue de muchas filas, al ejecutar la linea siguiente se produce error.
        FlexGrid.Rows = 0: FlexGrid.Cols = 0            '<--Reseteo, segundo paso y final. Si no esta la linea anterior, pude haber error de automatización, luego al valorar .Rows o .Cols.
        FlexGrid.FocusRect = 0: FlexGrid.HighLight = 0

Bueno, si se toman un tiempito, y leen con atención los Rem ubicados a la derecha de cada linea de codigo, van a entender que sucede. Cuando se eliminan todas las filas, si el control tenia mucha cantidad, digamos cientos, se puede producir el tan temible "Error de Automatizacion". El error, aunque parezca extraño, sucede en forma aleatoria, una vez cada tanto, y se produce cuando se intenta ejecutar FlexGrid.Rows =0. ¿Que puede estar mal en esa linea? Pues bien, si el Control tenia muchas Filas, esa linea de codigo puede generar error interceptable. ¿Y entonces como solucionarlo? ¿Esto no es terrible? Encontrarse con un error que no depende de uno es desolador!!! Pero a no alarmarse, ¿que tal si lo vaciamos de a poco? Increiblemente, si se pone la linea FlexGrid.Rows=1, antes de FlexGrid.Rows=0, tal como se ve arriba, ya nunca mas se produce el error. Si les ha sucedido, esta es la solución, o tal vez, han encontrado algo mejor. Comenten por favor. Cualquier aporte estará bueno. Entre todos podemos hacer algo bueno, ¿no? Suerte con sus códigos.
PD: Ya seee!!!, para que poner tantas Filas!!!!, Si pensaste esto en cierta forma tenés razón, pues desconcentra al Usuario, con tanta cantidad. Hay que evitarlo en lo posible, cuanto menos mejor. Pero hay veces que no se puede evitar, especialmente cuando se combinan celdas en forma vertical. Esto sucede por ejemplo cuando se trabaja con años, meses, y días.
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 17/04/2012 20:41:38
Para los que tienen problemas con el FlexGrid, les dejo el siguiente link:
http://www.bigresource.com/VB--Automation-Error-Hierarchial-FlexGrid-7ETqf5X5nN.html
Allí hay gente que expone sus problemas con el control. Tal vez les sirva de algo.
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 17/04/2012 21:10:37
Mejor aún. Conviene entrar a bigSource, (http://www.bigresource.com), y hacer una búsqueda interna con: FlexGrid error. Google entregará el listado
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 18/04/2012 03:06:38
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

Error con FlexGrid

Publicado por Sergio (12 intervenciones) el 30/04/2012 18:36:47
Otra mas. Esto tal vez no se puede calificar como un error, sino mas bien como una curiosidad. Es fácilmente evitable. Todo sucede cuando se usan las propiedades Redraw y TopRow en el código de Form_Load. Redraw es espectacular porque aumenta en forma increible la velocidad de dibujado o llenado de Filas del FlexGrid. TopRow también es necesario porque cuando hay muchas filas ingresadas, puede existir un interés en mostrar Filas a partir de una en particular, es decir, un sector de Filas. Bueno simplemente tener en cuenta que TopRow no funciona cuando Redraw es False mientras se esta en el evento Form_Load. En cualquier otro Evento si funciona. Entonces, conviene hacer Redraw False, luego cargar el Control, después Redraw True, y finalmente si ejecutar TopRow si es necesario. Este es un error que pasa totalmente desapercibido, porque las Filas aparecen perfectamente, solo que sin el Scroll ideal. El Usuario busca la/las Filas que le interesan sin advertir que falta un posicionamiento inicial.
Si tenes algún error detectado o curiosidad para compartir, animate a explicarla. Yo estoy plasmando lo que he encontrado y recuerdo (hace ya un tiempo que no programo seguido), con la sola intención de que a otros les sirva. Suerte a todos.
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