[GELÖST] MaxGUI, Listbox mit Tabelle erstellen?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [GELÖST] MaxGUI, Listbox mit Tabelle erstellen?

BeitragMi, März 16, 2011 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich habe mal wieder Probleme mit MaxGui, und zwar möchte ich eine Listbox erstellen, welche Tabellenartig aufgebaut ist. also vorne steht der name, in einiger entfernung dahinter die dateiendung und dahinter die dateigröße. Das alles ist für meinen CO2 Packager. Ein Bild kann ich euch nicht zeigen, weil ich es ja wie gesagt nicht hinbekomme.
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Do, März 17, 2011 21:09, insgesamt 3-mal bearbeitet

Der Eisvogel

BeitragMi, März 16, 2011 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sollte das sein was du suchst: https://www.blitzforum.de/foru...ht=listbox
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

CO2

ehemals "SirMO"

BeitragDo, März 17, 2011 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das suche ich! Besten dank

edit:

Es wird aber keine Tabelle ausgegeben... Sad

Hier mein Code:
BlitzMax: [AUSKLAPPEN]
Import maxgui.cocoamaxgui
Import maxgui.drivers
Import maxgui.fltkmaxgui
Import maxgui.localization
Import maxgui.maxgui
Import maxgui.proxygadgets
Import maxgui.win32maxguiex

Import "lb.bmx"

Global conversationdata = WriteFile("data\conversation.ctw") 'Hier werden die Befehle für die Console reingeschrieben!

'VARIABLEN
Global groessedespackages:Int = 0
'VARIABLEN ENDE

'HAUPTFENSTER
Global mainwindow:TGadget = CreateWindow(".CO2 Packager", 100, 100, 400, 600, Null, WINDOW_TITLEBAR | WINDOW_MENU | WINDOW_STATUS | WINDOW_ACCEPTFILES)
Global filelist:TGadget = CreateListBox(0, 0, 400, 600, mainwindow)
'HAUPTFENSTER ENDE

'TABELLE ERSTELLEN
SetListBoxExtendedStyle(filelist,ListBoxExtendedStyle)

AddListBoxColumn(filelist, 0, 100)
SetListBoxHeading(filelist, 0, "DateiName")

AddListBoxColumn(filelist, 1, 50)
SetListBoxHeading(filelist, 1, "Größe (Bytes)")

AddListBoxColumn(filelist, 2, 50)
SetListBoxHeading(filelist, 2, "DateiEndung")
'TABELLE ERSTELLEN ENDE

ModifyListBoxItem(filelist, 1, 0, "Datei 1")

'MENÜ
Global filemenu:TGadget = CreateMenu("Datei", 0, WindowMenu(mainwindow))
CreateMenu "Neu", 100, filemenu
CreateMenu "Öffnen", 101, filemenu
CreateMenu "Speichern", 102, filemenu
CreateMenu "Speichern unter...", 103, filemenu
Global editmenu:TGadget = CreateMenu("Bearbeiten", 0, WindowMenu(mainwindow))
CreateMenu "Datei hinzufügen", 200, editmenu
CreateMenu "Datei löschen", 201, editmenu
Global helpmenu:TGadget = CreateMenu("Hilfe", 0, WindowMenu(mainwindow))
CreateMenu "Hilfe", 300, helpmenu
CreateMenu "Über...", 301, helpmenu

UpdateWindowMenu mainwindow
'MENÜ ENDE


Repeat
WaitEvent()
SetStatusText mainwindow, "(" + groessedespackages + " Bytes)"
Until EventID()=EVENT_WINDOWCLOSE

CloseFile conversationdata

End


Und hier der übernommene Code aus dem Threat ("lb.bmx"):
BlitzMax: [AUSKLAPPEN]
SuperStrict

Import maxgui.cocoamaxgui
Import maxgui.drivers
Import maxgui.fltkmaxgui
Import maxgui.localization
Import maxgui.maxgui
Import maxgui.proxygadgets
Import maxgui.win32maxguiex

Extern "win32"
Function SendMessage:Int(hWnd:Int,MSG:Int,wParam:Int,lParam:Int) = "SendMessageA@16"
Function SetWindowLong:Int(hWnd:Int,nIndex:Int,lNewLong:Int) = "SetWindowLongA@12"
Function GetWindowLong:Int(hWnd:Int,nIndex:Int) = "GetWindowLongA@8"
End Extern

Const LBS_NOTIFY:Int = $1
Const LBS_SORT:Int = $2
Const LBS_NOREDRAW:Int = $4
Const LBS_MULTIPLESEL:Int = $8
Const LBS_OWNERDRAWFIXED:Int = $10
Const LBS_OWNERDRAWVARIABLE:Int = $20
Const LBS_HASSTRINGS:Int = $40
Const LBS_USETABSTOPS:Int = $70
Const LBS_NOINTEGRALHEIGHT:Int = $100
Const LBS_MULTICOLUMN:Int = $200
Const LBS_WANTKEYBOARDINPUT:Int = $400
Const LBS_EXTENDEDSEL:Int = $800
Const LBS_DISABLENOSCROLL:Int = $100
Const LBS_NODATA:Int = $2000
Const LBS_NOSEL:Int = $4000
Const LBS_STANDARD:Int = $a00003

Const LVM_FIRST:Int = $1000
Const LVM_GETITEMA:Int = (LVM_FIRST+5)
Const LVM_SETITEMA:Int = (LVM_FIRST+6)
Const LVM_INSERTITEMA:Int = (LVM_FIRST+7)
Const LVM_DELETEITEM:Int = (LVM_FIRST+8)
Const LVM_DELETEALLITEMS:Int = (LVM_FIRST+9)
Const LVM_GETCALLBACKMASK:Int = (LVM_FIRST+10)
Const LVM_SETCALLBACKMASK:Int = (LVM_FIRST+11)
Const LVM_GETCOLUMNA:Int = (LVM_FIRST+25)
Const LVM_SETCOLUMNA:Int = (LVM_FIRST+26)
Const LVM_INSERTCOLUMNA:Int = (LVM_FIRST+27)
Const LVM_DELETECOLUMN:Int = (LVM_FIRST+28)
Const LVM_GETCOLUMNWIDTH:Int = (LVM_FIRST+29)
Const LVM_SETCOLUMNWIDTH:Int = (LVM_FIRST+30)
Const LVM_GETTEXTCOLOR:Int = (LVM_FIRST+35)
Const LVM_SETTEXTCOLOR:Int = (LVM_FIRST+36)
Const LVM_GETTEXTBKCOLOR:Int = (LVM_FIRST+37)
Const LVM_SETTEXTBKCOLOR:Int = (LVM_FIRST+38)
Const LVM_SORTITEMS:Int = (LVM_FIRST+48)
Const LVM_SETLISTBOXEXSTYLE:Int = (LVM_FIRST+54)
Const LVM_GETITEMW:Int = (LVM_FIRST+75)
Const LVM_SETITEMW:Int = (LVM_FIRST+76)
Const LVM_INSERTITEMW:Int = (LVM_FIRST+77)
Const LVM_GETCOLUMNW:Int = (LVM_FIRST+95)
Const LVM_SETCOLUMNW:Int = (LVM_FIRST+96)
Const LVM_INSERTCOLUMNW:Int = (LVM_FIRST+97)

Const LVS_EX_GRIDLINES:Int = $1
Const LVS_EX_SUBITEMIMAGES:Int = $2
Const LVS_EX_CHECKBOXES:Int = $4
Const LVS_EX_TRACKSELECT:Int = $8
Const LVS_EX_HEADERDRAGDROP:Int = $10
Const LVS_EX_FULLROWSELECT:Int = $20
Const LVS_EX_ONECLICKACTIVATE:Int = $40
Const LVS_EX_TWOCLICKACTIVATE:Int = $80
Const LVS_EX_FLATSB:Int = $100
Const LVS_EX_REGIONAL:Int = $200
Const LVS_EX_INFOTIP:Int = $400
Const LVS_EX_UNDERLINEHOT:Int = $800
Const LVS_EX_UNDERLINECOLD:Int = $1000
Const LVS_EX_MULTIWORKAREAS:Int = $2000
Const LVS_EX_LABELTIP:Int = $4000
Const LVS_EX_BORDERSELECT:Int = $8000
Const LVS_EX_DOUBLEBUFFER:Int = $10000
Const LVS_EX_HIDELABELS:Int = $20000
Const LVS_EX_SINGLEROW:Int = $40000
Const LVS_EX_SNAPTOGRID:Int = $80000
Const LVS_EX_SIMPLESELECT:Int = $100000

Const LVCF_FMT:Int = $1
Const LVCF_WIDTH:Int = $2
Const LVCF_TEXT:Int = $4
Const LVCF_SUBITEM:Int = $8
Const LVCF_IMAGE:Int = $10
Const LVCF_ORDER:Int = $20

Const LVIF_TEXT:Int = $1
Const LVIF_IMAGE:Int = $2
Const LVIF_PARAM:Int = $4
Const LVIF_STATE:Int = $8
Const LVIF_INDENT:Int = $10
Const LVIF_GROUPID:Int = $100
Const LVIF_COLUMNS:Int = $200
Const LVIF_NORECOMPUTE:Int = $800
Const LVIF_DI_SETITEM:Int = $1000

Const LVS_ALIGNTOP:Int = $0
Const LVS_ICON:Int = $0
Const LVS_REPORT:Int = $1
Const LVS_SMALLICON:Int = $2
Const LVS_LIST:Int = $3
Const LVS_TYPEMASK:Int = $3
Const LVS_SINGLESEL:Int = $4
Const LVS_SHOWSELALWAYS:Int = $8
Const LVS_SORTASCENDING:Int = $10
Const LVS_SORTDESCENDING:Int = $20
Const LVS_SHAREIMAGELISTS:Int = $40
Const LVS_NOLABELWRAP:Int = $80
Const LVS_AUTOARRANGE:Int = $100
Const LVS_EDITLABELS:Int = $200
Const LVS_OWNERDRAWFIXED:Int = $400
Const LVS_ALIGNLEFT:Int = $800
Const LVS_ALIGNMASK:Int = $C00
Const LVS_NOSCROLL:Int = $2000
Const LVS_NOCOLUMNHEADER:Int = $4000
Const LVS_NOSORTHEADER:Int = $8000
Const LVS_TYPESTYLEMASK:Int = $FC00

Const GWL_STYLE:Int = -$10

Type LVCOLUMN
Field mask:Int
Field fmt:Int
Field cx:Int
Field pszText:Byte Ptr
Field cchTextMax:Int
Field iSubItem:Int
EndType

Type LVITEM
Field mask:Int
Field iItem:Int
Field iSubItem:Int
Field iState:Int
Field stateMask:Int
Field pszText:Byte Ptr
Field cchTextMax:Int
Field iImage:Int
Field lParam:Byte Ptr
Field iIndent:Int
Field iGroupId:Int
Field cColumns:Int
Field puColumns:Int
EndType

Function AddListBoxColumn(ListBox:TGadget,ColumnNr:Int,Width:Int)
Local ListBoxHwnd:Int = QueryGadget(ListBox,QUERY_HWND)
Local Column:LVColumn = New LVColumn
Column.mask = LVCF_WIDTH
Column.cx = Width
SendMessageA(ListBoxHwnd,LVM_INSERTCOLUMNA,ColumnNr,Int(Byte Ptr Column))
End Function

Function SetListBoxHeading(ListBox:TGadget,ColumnNr:Int,HeadingText:String,Style:Int=0)
Local ListBoxHwnd:Int = QueryGadget(ListBox,QUERY_HWND)
Local Column:LVColumn = New LVColumn
Column.mask = LVCF_TEXT | LVCF_FMT
Column.fmt = Style
Column.pszText = HeadingText.ToCString()
Local ListBoxStyle:Int = GetWindowLongA(ListBoxHwnd,GWL_STYLE)
If (ListBoxStyle & LVS_NOCOLUMNHEADER ) Then
ListBoxStyle = ListBoxStyle ~ LVS_NOCOLUMNHEADER
SetWindowLongA(ListBoxHwnd,GWL_STYLE,ListBoxStyle)
EndIf
SendMessageA(ListBoxHwnd,LVM_SETCOLUMNA,ColumnNr,Int(Byte Ptr Column))
End Function

Function SetListBoxColumnWidth(ListBox:TGadget,ColumnNr:Int,Width:Int)
Local ListBoxHwnd:Int = QueryGadget(ListBox,QUERY_HWND)
Local Column:LVColumn = New LVColumn
Column.mask = LVCF_WIDTH
Column.cx = Width
SendMessageA(ListBoxHwnd,LVM_SETCOLUMNA,ColumnNr,Int(Byte Ptr Column))
End Function

Function ModifyListBoxItem(ListBox:TGadget,RowNr:Int,ColumnNr:Int,Text:String)
Local ListBoxHwnd:Int = QueryGadget(ListBox,QUERY_HWND)
Local Item:LVItem = New LVItem
Item.mask = LVIF_TEXT
Item.iSubItem = ColumnNr
Item.iItem = RowNr
Item.pszText = Text.ToCString()
Item.cchTextMax = Text.Length+1
SendMessageA(ListBoxHwnd,LVM_SETITEMA,0,Int(Byte Ptr Item))
End Function

Function GetListBoxItemText:String(ListBox:TGadget,RowNr:Int,ColumnNr:Int)
Local ListBoxHwnd:Int = QueryGadget(ListBox,QUERY_HWND)
Local ReturnText:String
Local TextBank:TBank = CreateBank(1024)
Local Item:LVItem = New LVItem
Item.mask = LVIF_Text
Item.iSubItem = ColumnNr
Item.iItem = RowNr
Item.pszText = BankBuf(TextBank)
Item.cchTextMax = 255
SendMessageA(ListBoxHwnd,LVM_GETITEMA,0,Int(Byte Ptr Item))
If Item.pszText <> Null Then
ReturnText = ReturnText.FromCString(Item.pszText)
EndIf
Return ReturnText
End Function

Function SetListBoxExtendedStyle(ListBox:TGadget,Style:Int)
Local ListBoxHwnd:Int = QueryGadget(ListBox,QUERY_HWND)
SendMessageA(ListBoxHwnd,LVM_SETLISTBOXEXSTYLE,Style,Style)
End Function


Und zum Schluss noch das Ergebnis:
user posted image

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

BladeRunner

Moderator

BeitragDo, März 17, 2011 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn es nichts mit dem Problem selbst zu tun hat, aber zum nutzen von MaxGUI reicht es völlig aus maxgui.drivers zu importieren. Das bindet automatisch alles notwendige mit ein.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Der Eisvogel

BeitragDo, März 17, 2011 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Ahnung was da bei dir schief geht, bei mir klappt das prima. Versuch mal das hier:
BlitzMax: [AUSKLAPPEN]
SetListBoxColumnWidth(filelist, 0, 100)
SetListBoxHeading(filelist, 0, "DateiName")

AddListBoxColumn(filelist, 1, 50)
SetListBoxHeading(filelist, 1, "Größe (Bytes)")

AddListBoxColumn(filelist, 2, 50)
SetListBoxHeading(filelist, 2, "DateiEndung")


Und lass das SetListBoxExtendedStyle weg.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

CO2

ehemals "SirMO"

BeitragDo, März 17, 2011 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab es nun umgeändert, es tut sich aber weiterhin nichts. Das Fenster bleibt so, wie es oben im Bild zu sehen ist.

Den Code zwischen 'TABELLE ERSTELLEN und 'TABELLE ERSTELLEN ENDE hab ich in deinen Code umgeändert. Liegt es vllt. an Win7 (Ich habe Win7 64 Bit, Home Premium)

@ Bladerunner:
Ist geändert, danke für den Tipp Wink
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Xaymar

ehemals "Cgamer"

BeitragDo, März 17, 2011 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
zwischen Win7 und WinXP sollte sich da nichts geändert haben, WinAPI befehle ändern sich selten/wenig.
Du kannst das ja mal testen indem du dein programm im kompatiblitäts-modus laufen lässt mit "winxp sp2/3" als einstellung.
Warbseite
 

CO2

ehemals "SirMO"

BeitragDo, März 17, 2011 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Im kompalibiltäts-Modus ändert sich leider auch nichts, trotzdem danke Wink
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

grafe

BeitragDo, März 17, 2011 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo CO2,

Ich habe es ein bisschen ausprobiert und mir ist aufgefallen das wenn du in deinem Programm und in lb.bmx folgendes:
BlitzMax: [AUSKLAPPEN]
Import maxgui.cocoamaxgui
Import maxgui.drivers
Import maxgui.fltkmaxgui
Import maxgui.localization
Import maxgui.maxgui
Import maxgui.proxygadgets
Import maxgui.win32maxguiex

in dies:
BlitzMax: [AUSKLAPPEN]
'Import maxgui.cocoamaxgui
Import maxgui.drivers
'Import maxgui.fltkmaxgui
'Import maxgui.localization
'Import maxgui.maxgui
'Import maxgui.proxygadgets
'Import maxgui.win32maxguiex

abänderst, dass es dann klappt. Keine Ahnung wieso... Wink

mfg grafe
 

CO2

ehemals "SirMO"

BeitragDo, März 17, 2011 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, so funktionierts, danke für die Hilfe!
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group