[B+] Column Listbox
Übersicht

![]() |
TheProgrammerBetreff: [B+] Column Listbox |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
da es in BlitzPlus leider keine Möglichkeit gibt, Kategorielisten zu realisieren, habe ich mir einfach mal die Mühe gemacht, mir selber eine zu schreiben. ![]() ![]() Enthalten sind der Code und eine *.exe. ~ Features ~ ![]() ![]() ![]() ![]() ![]() ~ Funktionen ~ Code: [AUSKLAPPEN] InitColumnListbox()
Diese Funktion muss am Anfang des B+-Programms ausgeführt werden, damit die Grafiken für die Listen geladen werden können. Code: [AUSKLAPPEN] list = CreateColumnListbox(x%,y%,width%,height%,group,[columns$,empty_msg$,style])
Mit dem Befehl wird eine leere Listbox erstellt. x% - x-Position der Listbox y% - y-Position der Listbox width% - Breite der Listbox height% - Höhe der Listbox group - Identität einer Gruppe columns$ - Bezeichnung der Spalten (columns$="Spalte_1,breite%,typ%,...,Spalte_n,breite%,typ%") Code: [AUSKLAPPEN] Datentypen:
1 - Integer 2 - Float 3 - String 4 - Progbar 5 - Zeit 6 - Datum empty_msg$ - Nachricht, die angezeigt wird, wenn keine Einträge vorhanden sind. style - 1=Rahmen einschalten; 65536=Objekt fixieren Es wird die Identität des Panels zurückgeliefert, kann also auch so gehandled werden. Code: [AUSKLAPPEN] entry = AddColumnListboxEntry(list,entry$,[show])
Mit AddColumnListboxEntry wird einer Listbox ein Eintrag hinzugefügt. list - Identität der Listbox entry$ - Bezeichnung der Einträge (entry$="eintrag_1,eintrag_2,...,eintrag_n") Code: [AUSKLAPPEN] Folgende erweiterte Parameter sind möglich:
- img#[imagehandle] Icon wir vor Eintrag gesetzt - unit#[Einheit] (z.B. kg) Einheit wird hinter Eintrag gesetzt - multi#[wert] legt einen Erweiterungswert für die Zahl fest, die sortiert werden soll - short#[stellen] trennt Kommastellen ab show - wenn true, dann wird die Listbox nach dem Eintragen geupdated. Wenn false, dann muss UpdateColumnListboxSize(obj) nach dem Eintragen ausgeführt werden Code: [AUSKLAPPEN] ModifyColumnListboxEntry(list,entry,entry$,[show])
Mit ModifyColumnListboxEntry kann ein Eintrag geändert werden. list - Identität der Listbox entry - Identität des zu ändernden Eintrags entry$ - neuer Eintrag show - wenn true, dann wird die Listbox nach dem Eintragen geupdated. Wenn false, dann muss UpdateColumnListboxSize(obj) nach dem Eintragen ausgeführt werden Code: [AUSKLAPPEN] UpdateColumnListbox(event)
Dieser Befehl muss in der Hauptschleife stehen, damit alle Aktionen übernommen werden. event - Der Wert, der durch WaitEvent() zurückgeliefert wird Für eine optimale Funktionalität muss man Waitevent(1) benutzen, damit das programm nicht aufgehalten wird. Code: [AUSKLAPPEN] handle = ColListHandle(list)
Gibt die eigentliche Listboxidentität anhand des Panels zurück list - Listboxidentität Code: [AUSKLAPPEN] UpdateColumnListboxSize(handle)
Dieser Befehl berechnet die Listbox-Größe und muss ausgeführt werden, wenn die Panel-Größe der Listbox geändert wurde. handle - eigentliche Identität der Listbox, durch ColListHandle(list) zu ermitteln Code: [AUSKLAPPEN] entry = PressedColumnListboxEntry(list)
Liefert den Eintrag einer Listbox zurück, der durch einen Doppelklick gewählt wurde. list - Identität der Listbox Code: [AUSKLAPPEN] SelectedColumnListboxEntry(list)
Liefert den Eintrag zurück, der gerade angewählt ist. list - Identität der Listbox Code: [AUSKLAPPEN] SelectColumnListboxEntry(list,entry)
Selektiert einen Bestimmten Eintrag in einer Listbox. list - Identität der Listbox entry - Identität des Eintrags Code: [AUSKLAPPEN] FreeColumnListboxEntry(list,entry,[show])
Löscht einen bestimmten Listbox-Eintrag. list - Identität der Listbox entry - Identität des Eintrags show - wenn true, dann wird die Listbox nach dem Löschen geupdated. Wenn false, dann muss UpdateColumnListboxSize(obj) nach dem Löschen ausgeführt werden Code: [AUSKLAPPEN] DeleteColumnListbox(list)
Löscht alle Einträge in einer Listbox. list - Identität der Listbox Code: [AUSKLAPPEN] FreeColumnListbox(list)
Löscht die ganze Listbox. list - Identität der Listbox ~ Styling ~ In der columns.bb werden in den ersten Zeilen bestimmte Eigenschaften und Grafiken definiert: bg_color - Farbe des Hintergrunds text_color - Farbe des Textes progbar_color - Farbe des Ladebalkens brogborder_color - Farbe des Randes des Ladebalkens slider_size - Breite der Slider dubbleclick_time - Zeit, in der ein Doppelklick erfolgen muss (in ms) font_name - Schriftart font_size - Schriftgröße column_style - Pfad der Spalten-Grafik Diese Grafik muss in 3 Zeilen eingeteilt werden. Der Spalte im normalen Zustand, darunter im Zustand, wenn die Maus sich darüber befindet und darunter im Zusatand, wenn die Maus draufklickt. Jeweils die erste vertikale Pixelreihe beinhaltet die Trennlinie zwischen den Spalten. selection_style - Pfad der Markierungs-Grafik Diese beinhaltet die Grafik, die angezeigt wird, wenn ein Eintrag markiert wird. Die erste Pixelreihe gibt wieder die Abgrenzung an. sort_style - Pfad der Grafik für den Sortierungspfeil Diese Grafik beinhaltet die Sortierungspfeile. Sie müssen in der Breite gleich groß sein und liegen nebeneinander. Insgesamt müssen sie aber relativ klein sein. Das Beispiel beinhaltet einen WinXP-Style und einen MacOS-Style. ~ Userlib ~ Folgendes muss in die user32.decls Code: [AUSKLAPPEN] .lib "user32.dll"
LoadCursor%( ID, Cursor ):"LoadCursorA" SetCursor%( ID ):"SetCursor" Vorschläge und Kritik sind erwünscht. ![]() Mfg TheProgrammer |
||
- Zuletzt bearbeitet von TheProgrammer am Do, Apr 19, 2007 21:23, insgesamt 4-mal bearbeitet
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist schön geworden. Ich hab zwar nur die Exe getestet, aber es sieht gut aus, und , zumindest dabei, hab ich keine Käfer gefunden ![]() |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
2 fehler in der exe:
wenn man nach werten ordnen lässt, die gleich sind, dann wird es sehr sinnlos angeordnet wenn man nach ip ordnet, dann wird es falsch geordnet. falsch in sofern, dass irgendwo 255.13.4.8 steht, dann drunter 123.21.94.2 und darunter wieder 128.231.122.254 |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit der IP liegt daran, dass er nur nach der 1. Ziffer ordnet, dann -wenn nötig- nach der 2. dann nach der 3. und so weiter.
Aber sonst is es ein sinvolles "AddOn", Lob an TheProgrammer! |
||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Echt nice! ![]() Hatte mich schon geärgert, weil es sowas in B+ nicht gab ![]() Leider wird nicht der wirkliche WindowsStyle benutzt, wenn man nicht den Standart hatt, fällt das auf.. ![]() ![]() Thx4This! ![]() |
||
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7 |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
hätte er nach der ersten ziffer geordnet sähe es nicht so aus:
234.117.232.18 127.0.1.34 213.231.23.11 oder so in der art ich nehme eher an, er ordnet nicht richtig. vielleicht nach der normalen ip und nicht nach der dotted ip? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir siehts eher so aus:
102.xxx.xxx.xxx 24.xxx.xxx.xxx 250.xxx.xxx.xxx 30.xxx.xxx.xxx |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt doch: 3,2,2,1 was isdt daran jetzt falsch? | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal danke für die positiven Kommentare. ![]() Sortiert wird hier nach dem Quicksort-Algorithmus (die IP's werden als Strings sortiert). Ich kann mir deshalb auch nicht so richtig erklären, warum sie bei StepTiger so eigenartig angeordnet werden. ![]() Ich denke, ich müsste da einen anderen Sortier-Algo schreiben, um bestimmte Datentypen (also auch IP's und z.B. Daten oder Uhrzeiten) richtig anordnen zu können. D.h. ich müsste mir noch bestimmte Spaltenkategorien einfallen lassen. ^^ Mfg TheProgrammer |
||
aktuelles Projekt: The last day of human being |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Goodjee:
Daran ist nichts verkehrt, wollte nur StepTiger zeigen, dass es bei ihm etwas komisch ist. Vielleicht hat er einfach falsch hingeschaut, oder nicht sortiert ![]() |
||
Steve0 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Find ich toll das Ganze.
Aber einen Fehler hab ich gefunden: Wenn man auf einen Eintrag doppelklickt, dann das erscheinende Fenster bestätigt und dann mit der Maus über die Zeile (also da wo "IP","Port",...) über den Einträgen fährt dann wird die Spalte ohne zu Klicken verbreitert oder verschmällert. |
||
Pixelgenaue 2D SingleSurface Engine!!! |
$tankY |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Den Fehler kenn ich, liegt daran, dass die Tase dannach nicht mit FlushMouse gelöscht wurde:
For I = 1 To 20 If p = entry(I) Then Notify("Eintrag "+I+" wurde betätigt.") : FlushMouse() Next ~Edit~ Habs nun! |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
meins war auch nur beispielhaft
wieso als string sortiert? sortier es nach der eigentlichen ip also sinnvoll nicht 123.xxx.xxx.xxx 24.xxx.xxx.xxx 253.xxx.xxx.xxx 36.xxx.xxx.xxx sehr sinnlos finde ich. Müsste dann so aussehen: 24.xxx.xxx.xxx 36.xxx.xxx.xxx 123.xxx.xxx.xxx 253.xxx.xxx.xxx verstanden, was ich meine? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
hab mich mal ran gemacht und die Listbox ein wenig erweitert, bzw. einige kleine Bugs entfernt: ![]() ![]() ![]() Folgendes wurde hinzugefügt: Man kann nun mehrere Datentypen für die Spalten benutzen (Integer, Float, String, Progbar, Zeit, Datum). Außerdem hat man nun die Möglichkeit, Icons einzufügen, Einheiten an Werte ranzuhängen, diese Werte beim Sortiervorgang mit einem bestimmten Wert erweitern zu lassen oder Kommastellen abzutrennen. Mit dem Befehl ModifyColumnListboxEntry() kann man nun Einträge ändern. Dies geschieht mit folgenden Parametern, die einfach in die Angabe der Werte mit eingefügt werden müssen: - img#[imagehandle] fügt ein icon ein - unit#[Einheit] legt eine Einheit fest - short#[Stellen] trennt Kommastellen ab - multi#[wert] erweitert den Wert mit einer Zahl beim Sortieren Genauere Informationen findet ihr dann im ersten Post und in den Beispielen. Viel spaß damit ![]() Vorschläge und Kritik sind wünschenswert. Mfg TheProgrammer |
||
aktuelles Projekt: The last day of human being |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
bitte ordne die IPs so, dass es nicht nach string, sondern nach werten geordnet wird.
Bsp: Dein Algo ordnet so: 113.xxx.xxx.xxx 150.xxx.xxx.xxx 153.xxx.xxx.xxx 162.xxx.xxx.xxx 163.xxx.xxx.xxx 194.xxx.xxx.xxx 215.xxx.xxx.xxx 218.xxx.xxx.xxx 54.xxx.xxx.xxx 59.xxx.xxx.xxx oder eben so: 59.xxx.xxx.xxx 54.xxx.xxx.xxx 218.xxx.xxx.xxx 215.xxx.xxx.xxx 194.xxx.xxx.xxx 163.xxx.xxx.xxx 162.xxx.xxx.xxx 153.xxx.xxx.xxx 150.xxx.xxx.xxx 113.xxx.xxx.xxx eigentlich müsste es so aussehen: 59.xxx.xxx.xxx 54.xxx.xxx.xxx 113.xxx.xxx.xxx 150.xxx.xxx.xxx 153.xxx.xxx.xxx 162.xxx.xxx.xxx 163.xxx.xxx.xxx 194.xxx.xxx.xxx 215.xxx.xxx.xxx 218.xxx.xxx.xxx oder eben so: 218.xxx.xxx.xxx 215.xxx.xxx.xxx 194.xxx.xxx.xxx 163.xxx.xxx.xxx 162.xxx.xxx.xxx 153.xxx.xxx.xxx 150.xxx.xxx.xxx 113.xxx.xxx.xxx 59.xxx.xxx.xxx 54.xxx.xxx.xxx BITTE! und wieder das Selbe: Falls der Wert des Ordnungskriteriums gleich mit einem anderen ist, wird sinnlos geordnet. (Oder eben nicht.) |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
1.) Großes Lob - Das ding ist Geil 2.) Der link vom 2. Download ist kaputt. Ist der erste download die Aktuelle datei? |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank. ![]() Der Download im ersten Post ist die aktuelle Version. ![]() Mfg |
||
aktuelles Projekt: The last day of human being |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte Dich bitten den Code so zu posten da links halt gerne mal off gehen.
Danke im Voraus |
||
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 |
![]() |
klin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir das mal seit langem angegugt und hatte dabei die interesse Verloren ![]() ![]() Hidecolumnbox(panel) ... Showcolumnbox(panel) so... Aber das gibt es nicht es giebt zwar fee und delet aber nicht hide und show... Wäre sehr nett wenn du das nich hinbekommen würdest ![]() MFG Klin |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group