[Gambas-user] gridview autoresize columns width by code

Ricardo Díaz Martín oceanosoftlapalma at ...626...
Wed Jun 23 21:13:04 CEST 2010


Thanks Robi for your reply. Look's like a good idea getting max size of a
column while you're filling data. It's enough for me.

It's also original the way you show booleans into the gridview. About this I
usually put a X or a blank depending of value, or sometimes color a fixed
colum in red or white background for this. Like you, I got only one sub
FillTable() to fill data into a gridview. Data can be a SELECT or a string
with values-;-separated. In this sub I pass some parameters (if I want
colors, who booleans must be drew, etc)

Regards,
Ricardo


2010/6/23 JUHASZ Robert <robert1juhasz at ...626...>

> Hello Ricardo,
>
> I use this function to display a result in a TableView. I just copy it
> as is, you may find out how do I adjust the column width. Maybe not the
> simplest but works well.
>
> For the Boolean I show the picture of a checkbox, I attached if you
> wanna try the code then add the pictures to your project or comment out
> the part uses them.
>
> Hope this helps.
>
> Robi
>
>
>
> '-----------------------------------------------------------------------------------------------
> PUBLIC FUNCTION fillTV(tv AS TableView, rs AS Result, OPTIONAL
> hideFirstCol AS Boolean = FALSE, OPTIONAL ignoreLastCols AS Integer = 0)
> AS Boolean
> 'to fill the tv tableview with the data of the rs result
>
>  DIM k, j AS Long
>  DIM iC AS Integer = 0
>  DIM c AS Long[2]
>  DIM minW AS Integer, maxW AS Integer
>  DIM colW AS NEW Integer[]
>  DIM minH AS Integer, maxH AS Integer
>  DIM colH AS NEW Integer[]
>
>  DIM picF AS Picture = Picture.Load("picF.png")
>  DIM picT AS Picture = Picture.Load("picT.png")
>
>  minW = tv.Font.Width("X") * 5
>  maxW = minW * 30
>
>  minH = tv.Font.Height("H")
>  maxH = minH * 10
>
>  c[0] = Color.White
>  c[1] = Color.LightBackground
>
>  tv.Clear
>  tv.Rows.count = rs.Count
>  tv.Columns.Count = rs.Fields.Count - ignoreLastCols
>  tv.header = 3
>
>  FOR k = 0 TO tv.columns.count - 1
>    tv.Columns[k].Text = rs.Fields[k].name
>    colW.Add(tv.Font.Width(tv.Columns[k].Text))
>  NEXT
>
>  FOR j = 0 TO rs.count - 1
>  colH.Add(minH)
>    FOR k = 0 TO tv.Columns.Count - 1
>      rs.MoveTo(j)
>      IF rs.Fields[k].Type = db.Boolean THEN
>        tv[j, k].Picture = IIf(rs[rs.Fields[k].name], picT, picF)
>      ELSE IF rs[rs.Fields[k].name] = "00/00/00" THEN
>        tv[j, k].text = ""
>      ELSE
>        tv[j, k].text = rs[rs.Fields[k].name]
>      ENDIF
>      tv[j, k].BackColor = c[iC]
>      IF colW[k] < tv.Font.Width(tv[j, k].text) THEN colW[k] =
> tv.Font.Width(tv[j, k].text)
>      IF colH[j] < tv.Font.Height(tv[j, k].text) THEN colH[j] =
> tv.Font.Height(tv[j, k].text)
>    NEXT
>    ic = 1 - ic
>  NEXT
>
>  FOR j = 0 TO tv.Rows.Count - 1
>      tv.Rows[j].H = Max(minH, Min(colH[j], maxH)) + 7
>  NEXT
>
>  FOR k = 0 TO tv.Columns.Count - 1
>      tv.Columns[k].W = Max(minW, Min(colW[k], maxW)) + 15
>  NEXT
>  IF hideFirstCol THEN
>    tv.Columns[0].W = 0
>    tv.Columns[0].Resizable = FALSE
>  ENDIF
>  tv.Refresh
>  RETURN TRUE
>
>  CATCH
>  RETURN FALSE
> END
>
> '-----------------------------------------------------------------------------------------------
>
> -----Original Message-----
> From: Ricardo Díaz Martín <oceanosoftlapalma at ...626...>
> Reply-to: mailing list for gambas users
> <gambas-user at lists.sourceforge.net>
> To: mailing list for gambas users <gambas-user at lists.sourceforge.net>
> Subject: [Gambas-user] gridview autoresize columns width by code
> Date: Wed, 23 Jun 2010 12:24:49 +0200
>
>
> Hi all,
>
> I wonder if there is a way to auto-resize a column in a grid view by code
> (the same when you double-cliked on run time to auto-size the width).
>
> I always save columns width in database and when form is loading set values
> for columns width. But now I need in one form to do this like if user
> double-clicked on border of columns.
>
> Thanks in advance,
> Ricardo
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
>
> ------------------------------------------------------------------------------
> ThinkGeek and WIRED's GeekDad team up for the Ultimate
> GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
> lucky parental unit.  See the prize list and enter to win:
> http://p.sf.net/sfu/thinkgeek-promo
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
>



More information about the User mailing list