Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: RadicalEd en Viernes 8 de Octubre de 2004, 00:39
Título: Re: Flexgrid
Publicado por: RadicalEd en Viernes 8 de Octubre de 2004, 00:39
HOLA CHICOS DE SOLOCODIGO, RECIEN ESTOY EMPEZANDO A USAR ESTE CONTROL, ME PARECE BUENO, QUISIERA APRENDER A AGREGAR MAS DATOS EN EL SIGUIENTE CAMPO, PUEDO AGREGAR 1 PERO NO PUEDO PASAR DE ESTE, COMO PUEDO HACER ESTO. NO SE SI ME EXPLICO EJM: TENGO EN 1,1 EL DATO "HOLA MUNDO" COMO HAGO PARA AGREGAR EN EL CAMPO 1,2 O 2,1 Y ASI SUCESIVAMENTE GRACIAS CHAO
Título: Re: Flexgrid
Publicado por: Sagutxo en Viernes 8 de Octubre de 2004, 11:03
primero pones el valor de la var Col del control msflexgrid, numero de columnas que tendrá el control.
Yo suelo dejar la linea 0, osea Row, para títulos. para meter datos se usa el controlgrid.textmatrix(linea,col)=a text o num, es =.
ten cuidado tanto si no existe la linea como si cno existe la col te dara un error irrecuperable y se bloqueará.
en el VB5 no admitia campos NULL, otra cosa a tener en cuenta, procura meter todo como text osea:
texto tabla1.textmatrix(editalinea,editacol)= "" & VAR así evitas el Null
Te adjunto un ejemplo de como hago los msflesgrid.
Título: Re: Flexgrid
Publicado por: Jose Arriagada en Viernes 8 de Octubre de 2004, 16:17
Private Sub Form_Load() 'Defino la grilla de 5 columnas MSFlexGrid1.Cols = 5 'Defino la grila de 1 fila (la del titulo) MSFlexGrid1.Rows = 1 'Me posiciono en la fila 0, del titulo MSFlexGrid1.Row = 0 'Recorro todas las columnas, y le agrego titulo For i = 0 To 4 'Me ubico en la columna MSFlexGrid1.Col = i 'Le doy el ancho a la columna MSFlexGrid1.ColWidth(i) = 1000 'Le inserto el texto MSFlexGrid1.Text = "Col" & i 'Centro el texto MSFlexGrid1.CellAlignment = 3 Next i 'Ahora recorro toda la grilla, agregando texto For i = 1 To 10 'Aumento en 1 la cantidad de filas de la grila MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1 'Me posiciono en la ultima fila insertada MSFlexGrid1.Row = i For j = 0 To 4 'Me ubico en la columna j MSFlexGrid1.Col = j 'Inserto el texto MSFlexGrid1.Text = "R=" & i & " C=" & j Next j Next i End Sub
Título: Re: Flexgrid
Publicado por: Kev en Viernes 8 de Octubre de 2004, 17:38
En resumen:
Es como manejar un Array (o matriz), donde puedes utilizar la propiedad TextMatrix(fila, columna) para asignar un valor o hacer referencia a un valor, pero antes tendras que establecer las dimensiones del control en sus propiedades rows y cols
Ej:
Código: Text
'Asignamos un valor
msFlexGrid.TextMatrix(1,1) = variable
'Hacemos referencia a una celda
variable = msFlexGrid.TextMatrix(1,1)
Llenar el control dependera de lo que quieras hacer.
Salu2
Título: Re: Flexgrid
Publicado por: RadicalEd en Viernes 8 de Octubre de 2004, 19:01
HOLA CHICOS GRACIAS POR SUS RESPUESTAS, SIGO TENIENDO UN PROBLEMA. USTEDES LLENAN LOS CAMPOS POR MEDIO DE CICLOS, PERO YO LOS LLENO POR MEDIO DE UN TEXT AQUI LES ENVIO UNA IMAGEN
Título: Re: Flexgrid
Publicado por: Kev en Viernes 8 de Octubre de 2004, 19:51
No entiendo cual es el problema, si te puedes explicar un poco mas....
Llenas el TextBox y luego segun el boton Opcion1, 2, o 3 lo colocas en la columna que corresponda segun el boton????
:blink:
Título: Re: Flexgrid
Publicado por: Sagutxo en Viernes 8 de Octubre de 2004, 20:15
Te comento una opción desde mi ignorancia. Yo simularía un flesgrid editable con ese campo text que tienes y prescindiria de los botones opción 1, 2,3. Como se hace:
Oculta el campo .text y cuando el usario pinche 2 veces en el flesgrid compruebas en campo a pinchado y pones encima de la celda el campo de texo que tienes a la izquierda de los botones, como se hace.
los controles del mouse son: flesgrid.mouserow flesgrid.mousecol.
Como se encaja en el flesgrig en control .text: dim CampoText
CampoText.Text = ""
CampoText.Move Flesgrid.CellLeft + 0, Flesgrid.CellTop + 0, Flesgrid.CellWidth, 0 'Tabla1.CellHeight, este es el ultimo 0
' los + 0 te los dejo para que sepas que es posible sumar o restar al campo.
CampoText.Visible = True
de esta forma se te pondrá encima de la celda pinchada.
Final:
Utiliza la tecla intro como secuencia de grabacion y ESC. como salida sin grabar por ejemplo. puedes controlar la tecla pulsada en función KeyAscii del ControlText, Incluso si quieres llegar mas lejos puedes exigir que tipo de caracteres de entrada permitir, pero eso ya es otro cuento, espero que te sirva.
P.D. No olvides ocultar el campo nuevamente cuando el usuario pulse Intro o ESC.
Salu2.
Título: Re: Flexgrid
Publicado por: The Black Boy en Viernes 8 de Octubre de 2004, 20:53
tampoco esntiendo muy bien tu pregunta... yo utilizo mucho ese componente ;) asi que si deseas algo sé un poco mas especifico y si puedo te ayudaré
Un saludo :comp:
Título: Re: Flexgrid
Publicado por: RadicalEd en Viernes 8 de Octubre de 2004, 21:57
EXACTO Kev ASI LO ESTOY HACIENDO AUNQUE YA ENCONTRE UNA SOLUCION ASI:
Código: Text
Private Sub MSFG_Click()
X = InputBox("Ingresar valor", "Valores")
If X <> "" Then
MSFG.Text = X
End If
End Sub
Título: Re: Flexgrid
Publicado por: RadicalEd en Lunes 11 de Octubre de 2004, 22:37
BUENO PERDON MI IGNORANCIA PERO AL TRATAR DE HACERLO COMO DICE Sagutxo LO DE FlexGrid.MouseCol Y MouseRow, NO SE COMO COLOCARLO LO PENSE DE LA FORMA Text1.Top=FlexGrid.MouseCol & FlexGrid.MouseRow NO HACE NADA, Y COLOCANDOLOS SOLOS Y ME SACA UN ERROR, OSEA FlexGrid.MouseCol FlexGrid.MouseRow PERDON PERO ME PODRIAS DAR UN EJM UN POCO MAS CLARO DE ACOMODAR EL Text DENTRO DEL FlexGrid, REALMENTE TE LO AGRADECERIA AQUI ENVIO LO QUE HE HECHO, PARA QUE LO PUEDAN ANALIZAR Y ME AYUDEN A MEJORARLO GRACIAS CHAO
Título: Re: Flexgrid
Publicado por: Sagutxo en Lunes 11 de Octubre de 2004, 23:31
Primero decirte que uso .mousecol y .mouserow solo para saber en que celda pincho el user. Seguido simulo la edicion de la celda con el campo .text que hago visible para ello.
Cuando el user pincha 2 veces sobre el flexgrid, recojo .mouseCol y .MousseRow en var globales.
Cuando el usuario pulsa intro meteo los datos con la opcion: tabla1. TextMatrix(fila,cloumna) ="" & campo.Text y si pulsa ESC. dejo sin modificar el cambio.
Seguidamente oculto nuevamente el campo .Text.
Espero que te sirva.
Salu2.
Título: Re: Flexgrid
Publicado por: RadicalEd en Martes 12 de Octubre de 2004, 18:16
PERDON SIGO POR LA MISMA, YA LO DE COLOCAR EL VALOR EN LA CASILLA ESTA BIEN MI PREGUNTA ES COMO ACOMODO EL TEXT EN LA POSICION DE LA GRILLA, YA QUE ESTA OPCION CampoText.Move Flesgrid.CellLeft + 0, Flesgrid.CellTop + 0, Flesgrid.CellWidth, 0 'Tabla1.CellHeight, este es el ultimo 0 NO ME FUNCIONA, PERDONA MI TORPEZA PERO SINO PREGUNTO NO APRENDO Y SEGUIRE IGUAL DE BRUTO 'MODIFICADO SABEN QUE PIENSO QUE CUANDO LE DOY LA OPCION EL TEXT QUEDA EN LA PARTE DE ATRAS Y NO EN EL FRENTE, ESE DEBE SER MI PROBLEMA COMO LO ARREGLO GRACIAS CHAO
Título: Re: Flexgrid
Publicado por: Sagutxo en Martes 12 de Octubre de 2004, 18:52
Lo siento se me han acabado las ideas, todos los mios los hago como te he dicho y me funcionan, si veo algo nuevo te lo posteo.
Salu2.
Título: Re: Flexgrid
Publicado por: Aislante en Sábado 23 de Octubre de 2004, 09:33
mensaje para :Sagutxo
ta muy chido o mejor dicho esta muy bien la forma en que encuadras los componentes... estaba lideando con eso pero es muy buena solucion!!!!
Suerte...
Título: Re: Flexgrid
Publicado por: Aislante en Sábado 23 de Octubre de 2004, 10:27
Disculpa tanto mareo... sabes yo e visto que en un msflexgrid intercalan los campos de texto y los combo de manera mas amigable "por asi decirlo" por ahí, no recuerdo donde sinceramente, pero creo que ligan el msflexgrid a los combo y text por medio de un API. Por ejemplo como en access cuando editas una tabla en vista diseño, los valores los introduces en forma de textbox y un combobox, por default no puedes modificar la propiedad height del combo en su estilo 0 y 2, sin enbargo en dichas tablas msflexgrid si cambia esta propiedad, incluso la ventana de propiedades del visual basic tiene un lista donde solo puedes editar en forma de texto, tabstrip, o en forma de combo... como si salieran de un PopupMenu ¿estoy en lo correcto, son alucinaciones mias o solo se sigue disfrasando componentes?
ojala me respondas o respondan... SALUDOS.
Título: Re: Flexgrid
Publicado por: Sagutxo en Sábado 23 de Octubre de 2004, 11:02
Salu2. Seguro que hay otra manera, siempre hay otra manera, y provablemente mas sencilla, pero te aseguro que de esa manera funciona y ademas controlas el campo NULL. Tanto con ComboBox como com campo.text.
Te dejo un ejemplo en el que los uso. No solo veras que es sencillo sino que ademas te vale para cualquiera, una vez hecho 1 para todos es.
Espero haberte podido ayudar. :comp: :D
Título: Re: Flexgrid
Publicado por: Aislante en Domingo 24 de Octubre de 2004, 19:15
ORALE !!!!!!
ESTA MUY INTERESANTE GRACIAS!!!!!!!!!!! en eso tienes razon la validacion es mucho mas sencilla y no te "atascas" de controles.
oye por cierto sabes o saben como hacer que el msflexgrid se recora con la ruedita del raton (scroll)?
Por otro lado te dejo lo que hice con el msflexgrid. Se aceptan comentarios!!!!!!!....
y si me ayudaste gracias, espero tambien te ayude.
Título: Re: Flexgrid
Publicado por: Sagutxo en Lunes 25 de Octubre de 2004, 10:59
Salu2. P.d. de anterior mensaje.
Se me ha olvidado decirte algo importante te recomiendo que introduzcas el valor de .MouseCol y .MouseRow en variables globales por ejemplo
PRINCIPIO de Codigo del formulario
Option Explicit Dim EditaLinea as long Dim EditaCol as long
y luego en la funcion dobleclick() EditaLinea = MsFleshGrid.MouseRow EditaCol=MsFleshGrid.MouseCol
ya que tengo entendido que esas opciones si no se guardan en variables son muy inestables.
llevo años con estas opcines y funcionan muy bien, ademas aunque fueran muchos datos con los ordenadores que se tienen ahora ni lo iban a notar.
Ya siento este lapsus, se me paso. :( :whistling: :comp:
RESPECTO A LA RUEDITA DEL SCROLL ---------------------------------------------- Yo no hago nada con ello y funciona. prueba a ponerle los drv del ratón que tengas.
Tengo la opción scrollbars del msfleshgrid en el 2, vertical, cuento las lineas que entran en el flesgrid y cuando veo que ha llegado le quito a uno de los campos de flesgrid 240 que es lo que ocupa la barra scroll, Seguro que hay otra manera, pero como lo hice hace tiempo y funciona pos así quedo, ADJUNTO MINIEJEMPLO.
Supongamos que entran 22 lineas en el flesgrid.... flesgrid=Tabla1
Código: Text
If Tabla1.Rows > 22 Then
Tabla1.ColWidth(0) = (7280 - 240)
End If
Título: Re: Flexgrid
Publicado por: valdogol en Viernes 8 de Junio de 2007, 20:14
Hola soy nuevo por aqui, recien me acabo de registrar y me gustaria participar en estos foros con una primera duda:
Alguien sabria como meterle una imagen a un FlexGrid?
Título: Re: Flexgrid
Publicado por: F_Tanori en Sábado 9 de Junio de 2007, 10:22
Hola
Aqui hay un ejemplo
La web de Luciano2 (http://foros.solocodigo.com/index.php?showuser=24899) (un compañero de este foro)
Título: Re: Flexgrid
Publicado por: valdogol en Sábado 9 de Junio de 2007, 16:25
Gracias por la respuesta, pero use un imagelIst y no me funciono ese codigo, es lo mas raro. En el ejemplo del enlace si funiciona. Si tengo un image List con 20 Index, como tengo que poner el codigo para que funcione?
Título: Re: Flexgrid
Publicado por: Xmundus en Domingo 17 de Junio de 2007, 05:48
:comp: ya que ando por aqui si alguien me podria ayudar como visualizar los datos de una base de MySql en un flexgrid estoy asiendo un sistema de control escolar :smartass: ya tengo la conexion lo botones basicos CONSULTAS,NUEVO, SALIR, ACTUALIZAR,ELIMINAR ETC.. PERO DE HECHO NO PUEDO CONSULTAR EN UN GRID como por ejemplo una CARDEX de calificaciones
1 semestres calificacion 2 semestre Matematicas 10 Base de Datos I 6 Calculos 10 Dbase 8 xxxxxxx 10 xxxxxxxxxxxxx 8
asi quiero que me muestre asi los datos
SI ALGUIEN ME PODRIA AYUDAR si alguien me puede ayudar les ejo mi correo pero de todas formas entrare al foro :( :unsure: [email:2oh467qb]yamasaki24@hotmail.com[/email:2oh467qb]