Your code really helps a lot. Thank you!

> Carl Ding wrote:
>
> > The problem is when I delete a row, I use Fl::delete_widget to remove all
> > the embedded widgets in that row. The program crashed when doing
> > fl_draw(). Is there anything else should be done to remove a row from
> > Fl_Table?
> >
> > Thanks!
>
> This is what I did:
>
> void Fl_Table_Group::remove(int r)
> {
>         if(r < 0 || r >= rows())
>                 return;
>
>         int idx = r*cols();
>
>         // Remove all the widgets from row r
>         for(int c = 0; c < cols(); c++)
>         {
>                 Fl_Widget *w = child(idx);
>
>                 Fl_Table_Row::remove(*w);
>
>                 Fl::delete_widget(w);
>         }
>
>         // Update row count
>         rows(rows()-1);
> }
>
> If you want to check out the Fl_Table_Group you can here:
>
> http://www.mediafire.com/?sharekey=4b1e5c5790c805317172638919447f8bdc8e115f9f4243ba
>
> You will find a .tar.gz and a .zip. They both contain the same code.
>
> Here are some details of the implementation:
>
> * The name, Fl_Table_Group, is suppose to imply that this widget is like a
> Fl_Group (much in the same way as Fl_Tile). The widgets that are created
> between the begin()/end() are laid out in a table fashion.
> * void Fl_Table_Group::clear() Removes all the rows, but leaves the columns
> untouched.
> * Fl_Widget* Fl_Table_Group::cell(int r, int c) Retrieves the widget/cell at
> row r and column c
> * void Fl_Table_Group::end() Automagically determines the number of rows
> that have been added. Only full rows, not partial, are determined. Also,
> the number columns must be set.
> * Initially, the width of the columns are such that the entire table width
> is used.
>
>
> --
> Alvin

_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to