Visual Basic - La mejor forma??

Life is soft - evento anual de software empresarial
 
Vista:

La mejor forma??

Publicado por Manelnight (69 intervenciones) el 27/11/2002 03:35:48
¿cuál es la mejor forma para vosotros de presentar una consulta sobre una bd?????
Por ejemplo, quiero que cuando le den a un boton les muestre todos los empleados con sus códigos, etc...
Yo utilizo un MSFlexigrid, pero no he conseguido poner por codigo que el ancho de las columnas sea igual al mayor string, me explico.
Si el nombre del empleado es Andres Jimenez,

| | Ancho de la columna en vista diseño

En Ejecución
|Andres Jimenez| CORRECTO ( no se como hacerlo)

|Andres Jimen| INCORRECTO (Es como me saldria a mi)

Pd: Alguien utliza otra forma para mostrar los datos de una consulta más eficaz,elegante, etc...???????????

SALUDOS
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

RE:La mejor forma??

Publicado por José Hernández Espinosa (10 intervenciones) el 27/11/2002 06:30:45
Hola,

VB tiene una función quizá poco conocida y utilizada llamada TextWidth, que devuelve el ancho de una cadena de texto tal como se imprimiría con la fuente actual.

Es posible que te sea de utilidad. En tu caso, solamente necesitas iterar a lo largo del recordset, obteniendo el valor TextWidth y verificando cual es mayor.

s = "1234567890"
w = TextWidth(s) + (TextWidth(s) * 0.2)
MSFlexGrid1.ColWidth(0) = w
MSFlexGrid1.TextArray(0) = s

Un saludo.

Pepe.
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

RE:La mejor forma??

Publicado por Manelnight (69 intervenciones) el 27/11/2002 16:58:59
Porqué multimplicas por 0,2???
la propiedad textarray no la he usado nunca, que significa???
Por cierto, sabes otra forma en la que pueda mostrar todos los registros de la consulta peero que no sea ni con un msflexigrid, ni con un datagrid, etc..?


Saludos
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

La mejor forma

Publicado por J2ML (464 intervenciones) el 27/11/2002 20:49:35
En realidad disculpa mi intromisión pero yo creo que la respuesta que te dió José es 100 % efectiva (auqnue no la he probado) pero se ve muy bien...! Ahora en cuanto a tus dudas:
1.- El multiplica por 0.2 porque al tomar el mayor ancho de los elementos que contendrá una columan le agrego el 20% a ese valor y así se verá mejor la información.
2.- El textarray es un método para accesar cada una de las celdas de tu msflexgrid. El índice es el valor (posición) de la celda que requieres contando como 0 la primera celda superior izquierda y así sucesivamente hacia la derecha, al llegar al final de una fila sigues con la primera celda de la izquierda de la fila siguiente. Yo te recomendaría que emplees el TextMatrix(fila,columna).text donde los valores fila, columna indican la celda exacta del MSflexgrid con la que quieres trabajar.
3.- En cuanto a visualización prueba con un listview ó te puedes pasear por www.ambsoftware.com y buscar un truedbgrid el cual (no me consta) es más vistoso y configurable.
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

RE:La mejor forma

Publicado por Manelnight (69 intervenciones) el 28/11/2002 01:44:09
Ok, todo aclarado.
Pues yo para asignar el valor a las celdas lo hacia con la propiedad Text.
Lo que hago es hacer la consulta y luego con dos for, uno para las filas y otro para las columnas voy cambiando , en el primer for el valor de ROW y en el segundo for el valor de COL, asi voy moviendome por las celdas y voy asignando el valor a la propiedad text de la ROW,COL en la que esté situado. No conocia las propiedades que me comentais, las probaré.
Por cierto, como podría hacer para que cuando le asigne un texto el cual sea mayor que la máxima anchura que yo le indique, me corte el texto y haga la fila mas ancha, como si fuera un textbox multiline que al llegar al final cambia de linea. Esto se puede hacer con un msflexigrid???
No se si me he explicado bien.

Saludos
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

Sobre el MSFlexgrid

Publicado por J2ML (464 intervenciones) el 28/11/2002 14:38:38
Bueno lo que yo entiendo es que quieres que una celda del MSFlexgrid funcione como una etiqueta con la propiedad WordWarp activada...no te sorprendas pero el MSFlexgrid también tiene esa propiedad:
Más fácil coloca un form1, con un msflexgrid1 y prueba con este pequeño código:Private Sub Form_Click()
Dim Texto As String
Texto = "Esto es un texto largo para que sea cortado en la celda"
MSFlexGrid1.WordWrap = True
'La altura de la fila será aproximadamente 4 veces la altura del texto
MSFlexGrid1.RowHeight(1) = 4 * TextHeight(Texto)
'El ancho de la fila será aproximadamente la mitad del ancho del texto
MSFlexGrid1.ColWidth(1) = TextWidth(Texto) \ 2
MSFlexGrid1.TextMatrix(1, 1) = Texto
End Sub

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