 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 27.08.2009, 21:05 Titel: TreeView mit mehreren Spalten |
|
|
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 |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 29.03.2010, 14:49 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.03.2010, 15:37 Titel: |
|
|
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 |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 29.03.2010, 15:50 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.03.2010, 17:22 Titel: |
|
|
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 |
|
 |
cadrat

Anmeldungsdatum: 09.08.2008 Beiträge: 14 Wohnort: Jork
|
Verfasst am: 30.03.2010, 21:34 Titel: |
|
|
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 |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 30.03.2010, 21:37 Titel: |
|
|
Kann auf jeden Fall nicht schaden es mal zu zeigen  _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
cadrat

Anmeldungsdatum: 09.08.2008 Beiträge: 14 Wohnort: Jork
|
Verfasst am: 30.03.2010, 21:55 Titel: |
|
|
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 |
|
 |
cadrat

Anmeldungsdatum: 09.08.2008 Beiträge: 14 Wohnort: Jork
|
Verfasst am: 01.04.2010, 20:22 Titel: |
|
|
Nochmal in Hübsch (Bild sowie Code). Man sieht: Es geht mit GTK 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 |
|
 |
|
|
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.
|
|