[Risolto] FLTK : FL_Browser e numero colonne
Inviato: mar 2 ago 2011, 17:44
Salve a tutti!
sto provando a programmare con le FLTK, che mi hanno ispirato in quanto l'eseguibile che risulta è veramente "light".
premetto che sono in ambiente windows (in ufficio dobbiamo usare questo e nient'altro).
la mia idea è quella di provare un pò i widget che queste librerie propongono nel tempo libero in modo da essere più padrone delle librerie e poter veramente programmare qualcosa di utile; per ora mi stavo occupando di Fl_Browser, che, dagli esempi del manuale e del sito di Greg Ercolano, può visualizzare sia un elenco che una specie di tabella.
ho creato una sottoclasse di Fl_Window e all'interno di questa ho inserito tutti i Widget che voglio utilizzare. i file creati sono:
main.cc
MyWindow.h
e MyWindow.cc
Compilando il tutto ho un comportamento "strano" di FL_Browser...in pratica non riesco a visualizzare tutte le colonne, ma solo la prima.
La cosa ancora più strana è che spostando il codice relativo al Fl_Browser all'interno del main() subito dopo la dichiarazione di * window... il tutto si vede correttamente...
riuscite a capire cosa stia succedendo? io ci ho sbattuto la testa tutto oggi pomeriggio e ancora non ne sono venuto a capo...e il capo ora mi fa male!
grazie in anticipo!
ciao
Claudio
sto provando a programmare con le FLTK, che mi hanno ispirato in quanto l'eseguibile che risulta è veramente "light".
premetto che sono in ambiente windows (in ufficio dobbiamo usare questo e nient'altro).
la mia idea è quella di provare un pò i widget che queste librerie propongono nel tempo libero in modo da essere più padrone delle librerie e poter veramente programmare qualcosa di utile; per ora mi stavo occupando di Fl_Browser, che, dagli esempi del manuale e del sito di Greg Ercolano, può visualizzare sia un elenco che una specie di tabella.
ho creato una sottoclasse di Fl_Window e all'interno di questa ho inserito tutti i Widget che voglio utilizzare. i file creati sono:
main.cc
Codice: Seleziona tutto
#include "MyWindow.h"
int main(int argc, char **argv) {
MyWindow *window = new MyWindow(950,300, "Cone Frustum Characteristics");
window->show();
return Fl::run();
}
Codice: Seleziona tutto
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Menu_Bar.H>
#include <FL/Fl_Tree.H>
#include <FL/Fl_Browser.H>
#ifndef MYWINDOW
#define MYWINDOW
class MyWindow : public Fl_Window {
protected:
Fl_Menu_Bar * m;
Fl_Box * description;
Fl_Button * button;
Fl_Input * inp_diam_max ;
Fl_Input * inp_diam_min ;
Fl_Input * inp_thickness ;
Fl_Input * inp_height ;
Fl_Input * inp_gravity ;
Fl_Input * inp_dens_hull ;
Fl_Input * inp_dens_water;
Fl_Output * out_vol_hull;
Fl_Output * out_vol_buoy;
Fl_Output * out_vol_ball;
Fl_Output * out_mass;
Fl_Output * out_buoyancy;
Fl_Output * out_ballast;
Fl_Browser * listBrowser;
Fl_Tree * treeBrowser;
friend void compute_cone_characteristics (Fl_Widget * , void * );
public:
MyWindow( int h, int w, const char * t);
};
#endif
Codice: Seleziona tutto
#include "MyWindow.h"
//#include "MyWindow_callback.h"
MyWindow::MyWindow( int h, int w, const char * t) : Fl_Window(h,w,t) {
description = new Fl_Box (150, 25, 250, 30, "Cone Frustum Characteristics");
description->box(FL_BORDER_BOX);
Fl_Menu_Item menuitems[] = {
{ "&File", 0, 0, 0, FL_SUBMENU },
{ 0 },
{ "&Edit", 0, 0, 0, FL_SUBMENU },
// { "&Compute", FL_CTRL + 'c', (Fl_Callback *) compute_cone_characteristics },
{ 0 },
{ "&Help", 0, 0, 0, FL_SUBMENU },
{ "&About...", FL_CTRL + 'a', 0},
{ 0 },
{ 0 }
};
m = new Fl_Menu_Bar(0, 0, 850, 20);
m->copy(menuitems, this );
inp_diam_max = new Fl_Input (150, 70, 100, 25, "Diam. Max : ");
inp_diam_min = new Fl_Input (150, 100, 100, 25, "Diam. Min : ");
inp_thickness = new Fl_Input (150, 130, 100, 25, "Thickness : ");
inp_height = new Fl_Input (150, 160, 100, 25, "Height : ");
inp_gravity = new Fl_Input (150, 190, 100, 25, "Gravity Accel. : ");
inp_dens_hull = new Fl_Input (150, 220, 100, 25, "Density Material : ");
inp_dens_water = new Fl_Input (150, 250, 100, 25, "Density Water : ");
out_vol_hull = new Fl_Output(400, 100, 100, 25, "Vol. Shell : ");
out_vol_buoy = new Fl_Output(400, 130, 100, 25, "Vol. Buoyancy : ");
out_vol_ball = new Fl_Output(400, 160, 100, 25, "Vol. Ballast : ");
out_mass = new Fl_Output(400, 190, 100, 25, "Mass : ");
out_buoyancy = new Fl_Output(400, 220, 100, 25, "Buoyancy : ");
out_ballast = new Fl_Output(400, 250, 100, 25, "Ballast : ");
out_vol_hull -> labelcolor(FL_RED);
out_vol_buoy -> labelcolor(FL_RED);
out_vol_ball -> labelcolor(FL_RED);
out_mass -> labelcolor(FL_RED);
out_buoyancy -> labelcolor(FL_RED);
out_ballast -> labelcolor(FL_RED);
out_vol_hull -> align(FL_ALIGN_LEFT);
out_vol_buoy -> align(FL_ALIGN_LEFT);
out_vol_ball -> align(FL_ALIGN_LEFT);
out_mass -> align(FL_ALIGN_LEFT);
out_buoyancy -> align(FL_ALIGN_LEFT);
out_ballast -> align(FL_ALIGN_LEFT);
out_vol_hull -> textcolor(FL_RED);
out_vol_buoy -> textcolor(FL_RED);
out_vol_ball -> textcolor(FL_RED);
out_mass -> textcolor(FL_RED);
out_buoyancy -> textcolor(FL_RED);
out_ballast -> textcolor(FL_RED);
//
inp_diam_max ->value("3.2");
inp_diam_min ->value("0.8256");
inp_thickness ->value("0.01");
inp_height ->value("1.2");
inp_gravity ->value("9.806");
inp_dens_hull ->value("7.85");
inp_dens_water->value("1.025");
//
button = new Fl_Button(400, 70, 100, 25, "Compute");
// button->callback( compute_cone_characteristics , this );
treeBrowser = new Fl_Tree(550, 70, 125, 205);
treeBrowser->root_label("MyModel");
treeBrowser->begin();
treeBrowser->add("/Node");
treeBrowser->add("/Beam");
treeBrowser->add("/Section");
treeBrowser->add("/Material");
treeBrowser->end();
listBrowser = new Fl_Browser(700,70,200,205);
int widths[] = { 50, 40, 40, 40,0 }; // widths for each column
listBrowser->column_widths(widths);
listBrowser->column_char(','); // tabs as column delimiters
listBrowser->type(FL_MULTI_BROWSER);
listBrowser->add("TT,COM3,COM4,COM7,COM9"); // lines of tab delimited data
listBrowser->add("tt,t ,t ,t ,t ");
listBrowser->add("tt,tusr,tusr,tusr,tusr");
listBrowser->add("tt,tsbi,tsbi,tsbi,tsbi");
listBrowser->add("tt,tsbi,tsbi,tsbi,tsbi");
listBrowser->add("tt,tsbi,tsbi,tsbi,tsbi");
};
La cosa ancora più strana è che spostando il codice relativo al Fl_Browser all'interno del main() subito dopo la dichiarazione di * window... il tutto si vede correttamente...
riuscite a capire cosa stia succedendo? io ci ho sbattuto la testa tutto oggi pomeriggio e ancora non ne sono venuto a capo...e il capo ora mi fa male!
grazie in anticipo!
ciao
Claudio