Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

TreeView mit mehreren Spalten

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 27.08.2009, 21:05    Titel: TreeView mit mehreren Spalten Antworten mit Zitat

Hi zusammen

ich wusste nicht genau wo ich die Frage unter bringen sollte, daher stelle ich sie mal hier rein.

Das angehängte Bild zeigt einen TreeView der zusätzlich rechts für jede Zeile noch mehrere Spalten hat.

Wie kann man sowas realisieren? (BTW - last euch von dem darum schwirrenden Text usw. nicht irritieren, es geht nur um den TreeView)


_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 29.03.2010, 14:49    Titel: Antworten mit Zitat

Darf ich den post nochmal pushen? Keiner ne Ahnung oder nen Tipp?
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.03.2010, 15:37    Titel: Antworten mit Zitat

Also auf Anhieb finde ich über Google mehrere Lösungsansätze. Gibt halt noch nix spezielles für FB, aber das kann man ja leicht übersetzen. Hier scheint der Code dabei zu sein, vielleicht findest du da ja was brauchbares.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 29.03.2010, 15:50    Titel: Antworten mit Zitat

Vielen Dank, solche Lösungsansätze hab ich mir auch schon angeschaut.

Da gibt es unterschiedliche Methoden wie sie realisiert wurden. Mal mehr und mal weniger aufwendig. In diesem speziellen Beispiel ist es kein echter TreeView, hier wird eine Liste nur als Treeview dargestellt. Nicht das das nicht funktionieren würde...aber...

... ich wollte halt wissen ob es für FB schon sowas gibt - man muß das Rad ja nicht mehrmals erfinden. Für FB fand ich bis dato jedoch noch keine Lösung.
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.03.2010, 17:22    Titel: Antworten mit Zitat

Naja, egal ob jetzt C, C++ oder FB, es läuft eigentlich immer auf die WinAPI hinaus - und da muss man normalerweise ja nicht viel Übersetzungsaufwand betreiben.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
cadrat



Anmeldungsdatum: 09.08.2008
Beiträge: 14
Wohnort: Jork

BeitragVerfasst am: 30.03.2010, 21:34    Titel: Antworten mit Zitat

Hallo Ihr,

ich laborier auch grad an einem Lösungsansatz mit dem Gtk rum. Zumindest die Mehrspaltigkeit hab ich mir zusammengeklaut - werd sie morgen mal raussuchen, falls Interesse besteht.

Gruß

Stefan

PS: Die Icons gehen da mit Sicherheit auch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 30.03.2010, 21:37    Titel: Antworten mit Zitat

Kann auf jeden Fall nicht schaden es mal zu zeigen zwinkern
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
cadrat



Anmeldungsdatum: 09.08.2008
Beiträge: 14
Wohnort: Jork

BeitragVerfasst am: 30.03.2010, 21:55    Titel: Antworten mit Zitat

OK, mal ganz 'quick and dirty':
Meine ersten Gehversuche:



Code:


#INCLUDE ONCE "gtk/gtk.bi"
DECLARE SUB callback1 CDECL (BYVAL widget AS GtkWidget PTR, BYVAL user_data AS gpointer)
DECLARE SUB callback2 CDECL (BYVAL widget AS GtkWidget PTR, BYVAL user_data AS gpointer)
DECLARE SUB win_close CDECL ALIAS "win_close" (BYVAL MENUITEM AS GTKMENUITEM  PTR, BYVAL USER_DATA AS GPOINTER)
DECLARE SUB create_and_fill_model()
DECLARE SUB addRowx(BYVAL s AS GtkTreeStore PTR, BYVAL i AS GtkTreeIter PTR, BYVAL c AS GtkTreeIter PTR)

DIM SHARED AS GtkWidget       PTR win
DIM        AS GtkWidget       PTR button1
DIM        AS GtkWidget       PTR button2
DIM        AS GtkWidget       PTR hbox
DIM        AS GtkWidget       PTR vbox
DIM SHARED AS GtkWidget       PTR tview
DIM SHARED AS GtkTreeModel    PTR model

gtk_init (0, 0)

win     = gtk_window_new(GTK_WINDOW_TOPLEVEL)
vbox    = gtk_vbox_new(TRUE, 2)
hbox    = gtk_hbox_new(TRUE, 2)
button1 = gtk_button_new_with_label("Button 1")
button2 = gtk_button_new_with_label("Button 2")
tview   = gtk_tree_view_new()

gtk_container_add(GTK_CONTAINER(vbox), button1)
gtk_container_add(GTK_CONTAINER(vbox), button2)
gtk_container_add(GTK_CONTAINER(hbox), tview)
gtk_container_add(GTK_CONTAINER(hbox), vbox)
gtk_container_add(GTK_CONTAINER(win), hbox)

g_signal_connect(GTK_OBJECT(win),     "destroy", G_CALLBACK(@win_close), 0)
g_signal_connect(GTK_OBJECT(button1), "clicked", G_CALLBACK(@callback1), 0)
g_signal_connect(GTK_OBJECT(button2), "clicked", G_CALLBACK(@callback2), 0)

gtk_window_set_title     (GTK_WINDOW(win), "Dies ist ein Fenster")
gtk_window_set_position  (GTK_WINDOW(win), GTK_WIN_POS_CENTER)
gtk_window_set_resizable (GTK_WINDOW(win), TRUE)
gtk_window_resize        (GTK_WINDOW(win), 800, 600)

 
gtk_widget_show_all(win): gtk_main()

SUB callback1 CDECL (BYVAL widget AS GtkWidget PTR, BYVAL user_data AS gpointer) EXPORT
   DIM AS GtkCellRenderer PTR renderer
   renderer = gtk_cell_renderer_text_new ()
   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tview), -1, "Name", renderer, "text", 0, 0)
   gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tview), -1, "Age", renderer, "text", 1, 0)
   create_and_fill_model
   gtk_tree_view_set_model (GTK_TREE_VIEW (tview), model)

   gtk_window_maximize(GTK_WINDOW(win))

END SUB
SUB callback2 CDECL (BYVAL widget AS GtkWidget PTR, BYVAL user_data AS gpointer) EXPORT
   gtk_window_set_title     (GTK_WINDOW (win), "Button 2")
END SUB
SUB win_close CDECL (BYVAL MENUITEM AS GTKMENUITEM  PTR, BYVAL USER_DATA AS GPOINTER) EXPORT
   ? "...PENG, WIR SCHLIESSEN..."
   GTK_MAIN_QUIT()
END SUB
SUB create_and_fill_model()
   DIM AS GtkTreeStore PTR store
   DIM AS GtkTreeIter iter, child
   store = gtk_tree_store_new(2, G_TYPE_STRING, G_TYPE_UINT)
   gtk_tree_store_append(store, @iter, 0): gtk_tree_store_set(store, @iter, 0, "Heinz El-Mann", 1, 51, -1)
   gtk_tree_store_append(store, @iter, 0): gtk_tree_store_set(store, @iter, 0, "Jane Doe",      1, 23, -1)
   gtk_tree_store_append(store, @child, @iter): gtk_tree_store_set(store, @child, 0, "Joe Bungop",    1, 91, -1)
   gtk_tree_store_append(store, @child, @iter): gtk_tree_store_set(store, @child, 0, "Hans Hansen",    1, 91, -1)
   addRowx store, @iter, @child
   model = GTK_TREE_MODEL(store)
END SUB

SUB addRowx(BYVAL s AS GtkTreeStore PTR, BYVAL i AS GtkTreeIter PTR, BYVAL c AS GtkTreeIter PTR)
   gtk_tree_store_append(s, c, i): gtk_tree_store_set(s, c, 0, "Hans Hansen",    1, 91, -1)
END SUB







Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
cadrat



Anmeldungsdatum: 09.08.2008
Beiträge: 14
Wohnort: Jork

BeitragVerfasst am: 01.04.2010, 20:22    Titel: Antworten mit Zitat

Nochmal in Hübsch (Bild sowie Code). Man sieht: Es geht mit GTK happy Die TreeLines fehlen noch und die Zahlen als zweite Spalte müßten durch Icons ersetzt werdden. Ach ja, und die Kontoauszughinterlegung wäre auch noch eine Herausforderung.



Code:

#INCLUDE ONCE "gtk/gtk.bi"
DECLARE SUB win_close CDECL ALIAS "win_close" ( _
   BYVAL MENUITEM AS GTKMENUITEM  PTR, BYVAL USER_DATA AS GPOINTER)
DIM SHARED AS GtkWidget         PTR win
DIM        AS GtkWidget         PTR hbox
DIM SHARED AS GtkWidget         PTR tview
DIM        AS GtkTreeStore      PTR store
DIM SHARED AS GtkTreeModel      PTR model
DIM        AS GtkTreeViewColumn PTR col
DIM        AS GdkPixbuf         PTR icon1
DIM        AS GdkPixbuf         PTR icon2
DIM        AS GtkCellRenderer   PTR renderer
DIM        AS GtkTreeIter       iter, child
enum
   COL_ICON = 0
   COL_TEXT
   COL_NUM
   NUM_COLS
end enum
gtk_init (0, 0)
' **********************************************************************
'                                                           win - Window
' **********************************************************************
win     = gtk_window_new(GTK_WINDOW_TOPLEVEL)
hbox    = gtk_hbox_new(TRUE, 1)
tview   = gtk_tree_view_new()
gtk_container_add(GTK_CONTAINER(hbox), tview)
gtk_container_add(GTK_CONTAINER(win), hbox)
g_signal_connect(GTK_OBJECT(win), "destroy", G_CALLBACK(@win_close), 0)
'gtk_window_set_icon      (GTK_WINDOW(win), icon)
gtk_window_set_title     (GTK_WINDOW(win), "Scene Explorer")
gtk_window_set_position  (GTK_WINDOW(win), GTK_WIN_POS_CENTER)
gtk_window_set_resizable (GTK_WINDOW(win), TRUE)
gtk_window_resize        (GTK_WINDOW(win), 800, 600)
' **********************************************************************
'                                                     TreeView - Spalten
' **********************************************************************

col = gtk_tree_view_column_new()
gtk_tree_view_column_set_title(col, "Title")

renderer = gtk_cell_renderer_pixbuf_new()
gtk_tree_view_column_pack_start(col, renderer, FALSE)
gtk_tree_view_column_set_attributes(col, renderer, "pixbuf", COL_ICON,0)

renderer = gtk_cell_renderer_text_new()
gtk_tree_view_column_pack_start(col, renderer, TRUE)
gtk_tree_view_column_set_attributes(col, renderer, "text", COL_TEXT,0)

renderer = gtk_cell_renderer_text_new()
gtk_tree_view_column_pack_start(col, renderer, TRUE)
gtk_tree_view_column_set_attributes(col, renderer, "text", COL_NUM,0)

gtk_tree_view_append_column(GTK_TREE_VIEW(tview), col)
' **********************************************************************
'                                                      TreeView - Zeilen
' **********************************************************************
icon1    = gdk_pixbuf_new_from_file("ICON1.png", 0)
icon2    = gdk_pixbuf_new_from_file("ICON2.png", 0)
store = gtk_tree_store_new(NUM_COLS, GDK_TYPE_PIXBUF, _
   G_TYPE_STRING, G_TYPE_UINT)
gtk_tree_store_append(store, @iter, 0)
gtk_tree_store_set(   store, @iter, COL_ICON, icon1, _
   COL_TEXT, "Scene name", COL_NUM, 51, -1)
gtk_tree_store_append(store, @iter, 0)
gtk_tree_store_set(   store, @iter, COL_ICON, icon2, _
   COL_TEXT, "Camera, 1",      COL_NUM, 23, -1)
gtk_tree_store_append(store, @child, @iter)
gtk_tree_store_set(store, @child, COL_ICON, icon1, _
   COL_TEXT, "Blablubb",    COL_NUM, 91, -1)
gtk_tree_store_append(store, @child, @iter)
gtk_tree_store_set(store, @child, COL_ICON, icon1, _
   COL_TEXT, "Blabla",    COL_NUM, 91, -1)
model = GTK_TREE_MODEL(store)
gtk_tree_view_set_model (GTK_TREE_VIEW (tview), model)
gtk_widget_show_all(win)
gtk_main()
SUB win_close CDECL ( _
   BYVAL MENUITEM AS GTKMENUITEM  PTR, _
   BYVAL USER_DATA AS GPOINTER) EXPORT
   GTK_MAIN_QUIT()
END SUB






Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz