amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Gadtools: Menu aufbauen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- 2 [ - Beitrag schreiben - ]

09.05.2006, 21:16 Uhr

Ralf27
Posts: 2779
Nutzer
Ja, ich mal wieder :D

Ich dachte eigentlich das man mit GadTools recht einfach Menus aufbauen könnte (also nach dem ersten Studium der Doku), aber leider scheint das leider nicht der Fall zu sein.

Ich hab einfach mal folgendes Testprogramm geschrieben:

code:
REM $INCLUDE gadtools.bh
LIBRARY OPEN "gadtools.library",36

REM $INCLUDE Intuition.bh
LIBRARY OPEN "intuition.library", 39

REM $nowindow
REM $noerrors
REM $nolines
REM $library
REM $nodebug
REM $nobreak
REM $noevent
REM $nooverflow
REM $novarchecks
REM $noautodim
REM $noaddicon
REM $noarray
REM $nostack


 WINDOW 1,"testfenster"

 a$=SPACE$(1000):mem&=SADD(a$):REM Jo, schon klar... :) 
 
 GOSUB Aufbau
 INPUT "->";ok$

Ende:
 IF Info& THEN FreeVisualInfo! Info&
 IF NewMenu& THEN FreeMenus! NewMenu&
 SYSTEM


Aufbau:
 win&=WINDOW(7)
 scr&=PEEKL(win&+WScreen%) 
 Info&=GetVisualInfoA&(scr&,0)
 IF Info&=0 THEN PRINT"Fehler bei GetVisualInfosA":RETURN
 REM Newmenu füllen
 memp&=mem&
 AddMenuLine NM_TITLE&,"Project",   "",0,0,0
 AddMenuLine NM_ITEM&,"Open...",   "O",0,0,0
 AddMenuLine NM_ITEM&,"Save"      ,"s",0,0,0
 AddMenuLine NM_ITEM&,"Save As...","S",0,0,0
 AddMenuLine NM_ITEM&,"Quit",      "Q",0,0,0
 EndMenuLine
 NewMenu&=CreateMenusA&(mem&,0)
 IF NewMenu&=0 THEN PRINT"Fehler bei CreateMenusA":RETURN
 s=LayoutMenusA(NewMenu&,Info&,0)
 IF s=0 THEN PRINT"fuck":RETURN
 FreeVisualInfo! Info&:Info&=0
 junk&=SetMenuStrip&(win&,NewMenu&)
RETURN
 
SUB AddMenuLine(a&,b$,c$,d&,e&,f&)STATIC
 SHARED memp&
 POKEW memp&+nm_Type%,a&
 POKEL memp&+nm_Label%,SADD(b$)
 IF c$="" THEN c&=0 ELSE c&=SADD(c$)
 POKEL memp&+nm_CommKey%,c&
 POKEW memp&+nm_Flags%,d&
 POKEL memp&+nm_MutualExclude%,e&
 POKEL memp&+nm_UserData%,f&
 memp&=memp&+NewMenu_sizeof%
END SUB

SUB EndMenuLine STATIC
 SHARED memp&
 POKEW memp&+nm_Type%,0
 POKEL memp&+nm_Label%,0
 POKEL memp&+nm_CommKey%,0
 POKEW memp&+nm_Flags%,0
 POKEL memp&+nm_MutualExclude%,0
 POKEL memp&+nm_UserData%,0
 memp&=memp&+NewMenu_sizeof%
END SUB


Leider steigt er immer bei CreateMenusA aus. Ich hoffe wenigstens ich hab die Reihenfolge der Befehle aus der Doku richtig interpretiert und ich denk mir mal das ich da auch nicht mit einer TAGLIST bei der Menugenerierung weiterkomme, deswegen diese seltsame Lösung über Subroutinen.
Noch ein kleiner Hinweis: Mir ist klar das da noch ein paar kleine Befehle am Schluss fehlen, wie z.b. das Menu wieder abmelden. Bitte übersehn. :)

2. Hinweis: Mir geht es erst mal nur um das Menu aufbauen. Wenn das mal geht, dann schau ich weiter. :D

Und: Ich weis das ich C nehmen sollte, das C besser ist und das MaxonBasic für Anfänger ist. Also bitte nicht damit anfangen. I-)

Aber: Was hab ich falsch gemacht? Hab übrigens die englische Doku gelesen... I-)
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 21:36 Uhr

Kaesebroetchen
Posts: 643
Nutzer
@Ralf27:
Guck mal im Aminet nach GadToolsBox.
Damit kann man sich mit der Maus eine GUI und auch ein Menü zusammenklicken.

Es sind verschiedene Code Generatoren dabei.
Ob einer für Basic dabei war, weiß ich nicht.
Ich denke aber daß du auch aus dem erzeugten C-Code einiges lernen kannst.
--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 21:55 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Kaesebroetchen:
@Ralf27:
Guck mal im Aminet nach GadToolsBox.
Damit kann man sich mit der Maus eine GUI und auch ein Menü zusammenklicken.

Es sind verschiedene Code Generatoren dabei.
Ob einer für Basic dabei war, weiß ich nicht.
Ich denke aber daß du auch aus dem erzeugten C-Code einiges lernen kannst.
--
http://amidevcpp.amiga-world.de/


Hab eben das Programm getestet und es läuft recht gut. Danke für den Tip! Allerdings kommt bei mir bei dem Versuch es als Programm zu speichern ein "RAM Unbekannter Befehl" (oder so ähnlich). Hab es nach UNIX-Manier mal statt mit Ram Disk: nur mit RAM: versucht... das gleiche.
Versteh ich nicht. Ich such mal weiter.

--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 22:16 Uhr

Kaesebroetchen
Posts: 643
Nutzer
@Ralf27:
Welche Version hast du denn probiert ?
Es gibt da mehrere.
Ich habe glaube ich mit einer 2.x gearbeitet und die lief völlig problemlos.

Es gibt übrigens tatsächlich einen Code Generator für Basic.
Heisst BlitzGUIgen.

--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 22:19 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Hab nochmal nachgesehen, war die Version 2.0 c
Hier findest du ein paar Links:

http://heinzreinke.de/amiga/Amiga/html/seite1.html
--
http://amidevcpp.amiga-world.de/

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 22:19 Uhr

thomas
Posts: 7716
Nutzer
@Ralf27:

Zitat:
Leider steigt er immer bei CreateMenusA aus.

nm_Type ist ein Byte, kein Word. Dahinter kommt ein ungenutztes Byte, weil Longwords immer auf geraden Adressen liegen müssen. Wenn du POKEW benutzt, hast du in nm_Type immer 0 drin und den eigentlichen Typ schreibst du in das ungenutzte Byte.

Gruß Thomas


P.S. für "Fehler bei LayoutMenusA" hat es nicht mehr gereicht ? :P

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 22:24 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von thomas:
nm_Type ist ein Byte, kein Word. Dahinter kommt ein ungenutztes Byte, weil Longwords immer auf geraden Adressen liegen müssen. Wenn du POKEW benutzt, hast du in nm_Type immer 0 drin und den eigentlichen Typ schreibst du in das ungenutzte Byte.

Heureka, das wars! Hab einfach das W weg und jetzt läuft. Hab noch ein kleines Problem mit dem Text, aber das ist trivial und leicht zu lösen. Danke!
Zitat:
P.S. für "Fehler bei LayoutMenusA" hat es nicht mehr gereicht ? :P
Ähm, :D :lach:
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

09.05.2006, 22:28 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Kaesebroetchen:
@Ralf27:
Welche Version hast du denn probiert ?
Es gibt da mehrere.
Ich habe glaube ich mit einer 2.x gearbeitet und die lief völlig problemlos.

Mit der 3er und die mag nicht so. Hab aber eben denn Tip vom Thomas gelesen und jetzt läuft. Hatte einen Buchstaben zu viel im Code, das wars. :)
Zitat:
Es gibt übrigens tatsächlich einen Code Generator für Basic.
Heisst BlitzGUIgen.


Ja, leider generiert der BlitzBasic und ich versteh C besser als BlitzBasic. Und das als MaxonBasic-Progger...
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 00:14 Uhr

Ralf27
Posts: 2779
Nutzer
So, jetzt ist noch zwei Sachen und zwar:

gegeben:

a&=ItemAddress&(MenuMem&,IntuiCode&)

Im alten Programm hab ich dann einfach auf die Adresse der einzelnen Menupunkte kontrolliert, was ja jetzt nicht geht. Es gibt doch bestimmt eine elegantere Methode das herrauszufinden. Also MenuTitel und MenuItem.

Und da ist eigentlich nochwas:
Früher hab ich direkt(Asche über mein Haupt :D ) in der Menustruktur die einzelnen Items ein/ausgeschaltet bzw. abgehakt/haken entfernt.

Wie bewerkstellige ich das jetzt am besten?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 03:59 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Leider verstehe ich nicht wirklich was du fragen willst?

Aber wie du schon am Anfang erwähnt hattest

Zitat:
Ich dachte eigentlich das man mit GadTools recht einfach Menus aufbauen könnte (also nach dem ersten Studium der Doku), aber leider scheint das leider nicht der Fall zu sein.

Fakt war und ist mit GadTools hast du exakt den Gleichen, wenn nicht größeren Aufwand Menus zu erstellen also Ohne, wenn nicht IMHO gar mehr, als wenn du die Menus direkt als Struktur erzeugst.

AFAIK erstellt GadTools aus einer (komplizierteren) NewMenu Struktur eine normale Menu struktur ohne Vorteile (soweit ich weiss).

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 08:47 Uhr

thomas
Posts: 7716
Nutzer
@Ralf27:

Zitat:
Im alten Programm hab ich dann einfach auf die Adresse der einzelnen Menupunkte kontrolliert, was ja jetzt nicht geht. Es gibt doch bestimmt eine elegantere Methode das herrauszufinden. Also MenuTitel und MenuItem.

Das letzte Feld in der NewMenu-Struktur (UserData) kannst du für dich benutzen. Da kannst du z.B. eine ID reinschreiben. Nach CreateMenus steht das dann immer hinter dem MenuItem (also PEEKL(item& + MenuItem_sizeof) oder so).

Zitat:
Früher hab ich direkt(Asche über mein Haupt ) in der Menustruktur die einzelnen Items ein/ausgeschaltet bzw. abgehakt/haken entfernt.

Das geht mit GadTools genauso. CreateMenus gibt dir genauso eine Struktur zurück, wie du sie vorher selbst angelegt hast. Du mußt halt jetzt nur die Verkettungen durchgehen, weil du nicht direkt weißt, welche Adresse jedes Item hat. Da könnte dir die UserData wieder helfen, um das Item zu identifizieren.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 10:19 Uhr

MaikG
Posts: 5172
Nutzer
>Fakt war und ist mit GadTools hast du exakt den Gleichen, wenn nicht
>größeren Aufwand Menus zu erstellen also Ohne, wenn nicht IMHO gar
>mehr, als wenn du die Menus direkt als Struktur erzeugst.


GadTools hab ich einmal probiert, für ein paar Gadgets hat es
einen sehr langen source ausgegeben...
Das mach ich daher jetzt immer von Hand.

@Ralf was spricht gegen das mitgelieferte Beispiel von Maxonbasic?
Menüs entsprechend ändern und alles geht.

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 12:02 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von MaikG:
@Ralf was spricht gegen das mitgelieferte Beispiel von Maxonbasic?
Menüs entsprechend ändern und alles geht.


Uf, gabs da Beispiele? Ich hab das ganze vor 10 Jahrenn installiert und wenn ich jetzt wüßte wo die Disks sind/ob die noch gehn.

Könntest du mir bitte grad das passende Beispiel via EMail senden? Die Info vom Thomas ist ja auch gerade Ideal, aber ich würde gerne mal sehn wie das 1994 gemacht worden ist. :D
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 15:58 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
So, jetzt ist noch zwei Sachen und zwar:

gegeben:

a&=ItemAddress&(MenuMem&,IntuiCode&)

Im alten Programm hab ich dann einfach auf die Adresse der einzelnen Menupunkte kontrolliert, was ja jetzt nicht geht. Es gibt doch bestimmt eine elegantere Methode das herrauszufinden. Also MenuTitel und MenuItem.

Wie thomas schon sagte, kannst Du im UserData Feld eigenen Informationen speichern. Da Du in Basic wahrscheinlich keine Features ala Funktionspointer nutzen willst/kannst, es Dir also nur um eine Nummer geht, kannst Du den IntuiCode auch direkt verwenden. Der besteht ja aus den Menünummern.
Aus dem Kopf kann ich Dir natürlich jetzt nicht genau sagen, wie der Aufbau war, imho menu<<10|item<<5|subitem, aber das schlage ich heute abend noch mal nach.
Zitat:
Und da ist eigentlich nochwas:
Früher hab ich direkt(Asche über mein Haupt :D ) in der Menustruktur die einzelnen Items ein/ausgeschaltet bzw. abgehakt/haken entfernt.

Wie bewerkstellige ich das jetzt am besten?

Wie thomas auch schon sagte: genauso, ItemAddress liefert Dir ja den nötigen Strukturpointer.
Zitat:
Original von thomas:
Das geht mit GadTools genauso. CreateMenus gibt dir genauso eine Struktur zurück, wie du sie vorher selbst angelegt hast. Du mußt halt jetzt nur die Verkettungen durchgehen, weil du nicht direkt weißt, welche Adresse jedes Item hat. Da könnte dir die UserData wieder helfen, um das Item zu identifizieren.

Das geht auch einfacher, eben mit jener erwähnten Funktion ItemAddress. Wenn ich mich mit den Offsets richtig erinnert habe, müßte man nur ItemAddress(menuindex<<10|itemindex<<5) aufrufen und erhält die richtige Adresse.
Ob die Offsets stimmen, schlage ich, wie gesagt, nochmal nach. Falls nicht jemand anderes schneller ist.

Zitat:
Original von DariusBrewka:
Fakt war und ist mit GadTools hast du exakt den Gleichen, wenn nicht größeren Aufwand Menus zu erstellen also Ohne, wenn nicht IMHO gar mehr, als wenn du die Menus direkt als Struktur erzeugst.

AFAIK erstellt GadTools aus einer (komplizierteren) NewMenu Struktur eine normale Menu struktur ohne Vorteile (soweit ich weiss).


Die Struktur mag nur minimal einfacher sein, aber Du mußt keinerlei Größen und Positionen berechnen. Das ist schon ein Vorteil.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 16:43 Uhr

thomas
Posts: 7716
Nutzer

Zitat:
Das geht auch einfacher, eben mit jener erwähnten Funktion ItemAddress.

Nicht wirklich. Bei ItemAddress muß man die Menu- und Item-Nummer wissen. Das ist nützlich, wenn man diese z.B. von der IntuiMessage geliefert bekommt.

Aber für den Direktzugriff auf ein Item, ohne daß dieses vorher vom Benutzer ausgewählt wurde, eignen sie sich nicht, da sie sich im Laufe des Lebenszyklus eines Programms häufiger ändern und dann muß ich an tausend Stellen im Programm die Änderungen nachpflegen. Da gehe ich lieber die ganze Menüstuktur durch und suche die Items heraus, die in UserData "Kommando Hugo" drin stehen haben.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 17:29 Uhr

Ralf27
Posts: 2779
Nutzer
Hey, so schnell bin ich noch nie nach der Arbeit an den Rechner :)

Ich hab es eben eingebaut und es läuft wie am Schnürchen!

Also, ich benutze jetzt die einfache Methode, das ich die MenuTitel und MenuItem direkt aus dem IntuiMessageCode generiere.

Diese Methode hat auch den Vorteil das ich anderstherum auch immer die Adresse des Items auf die Menustruktur durch ItemAddress bekomme, wenn ich einfach MenuTitel und MenuItem durch z.b.

pokew ItemAddress(MenuMem&,MenuTitel+MenuItem*32)+12,Flags

ändern kann.


@Maik:

Hab die Diskette gefunden und war erst mal geschockt über den Code. Himmel, da Blick ich ja überhaupt nicht durch. Da ist für mich jeder C-Code einfacher. Kein Wunder das ich das damals nicht mit kopiert habe.
Wenn ich denn jetzigen Code und denn Code in dem Beispiel seh... arg.
Und in dem Beispiel ist ja auch noch nicht mal die Menuabfrage drin, jedenfalls ist in der Messageschleife nur die Abfrage ob das Close-Gadget geklickt wurde. Und dafür ist der Code extrem lang und unübersichtlich.
Kein Wunder das andere Progger wenn die sowas sehn die Flucht ergreifen...
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 18:03 Uhr

MaikG
Posts: 5172
Nutzer
>Hab die Diskette gefunden und war erst mal geschockt über den Code.
>Himmel, da Blick ich ja überhaupt nicht durch. Da ist für mich jeder
>C-Code einfacher. Kein Wunder das ich das damals nicht mit kopiert
>habe.

Na ich habs damit hinbekommen... Ich hab mich schon gewundert
warum du irgendein komischen 1.3 code verwendest. Es gibt
ja auch Beispiele1.3 von MB die laufen auch heute noch...

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 18:20 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von MaikG:
Na ich habs damit hinbekommen... Ich hab mich schon gewundert
warum du irgendein komischen 1.3 code verwendest. Es gibt
ja auch Beispiele1.3 von MB die laufen auch heute noch...


Dann zieh ich wirklich den Hut vor dir. :D

Ich hab es dann schnell wieder entfernt. Meine Lösung zu dem ganzen ist wirklich sehr viel übersichtlicher und wesentlich kürzer. Es ist ungefähr so lang wie das was da oben steht. Ok, Oben fehlt noch die Abfrage, die auch noch ein paar Zeilen benötigt.

Ich hab mir noch ein paar weitere Beispiele angesehn und eins muß ich tippen:
Ich lese lieber englische Doku und versuch dann mit BrutalForce oder hier Fragen die Lösung aus oder lese lieber C-Code als das ich die Beispiele mir ansehn, die ich überhaupt nicht versteh. :nuke:
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 20:09 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von thomas:
Nicht wirklich. Bei ItemAddress muß man die Menu- und Item-Nummer wissen. Das ist nützlich, wenn man diese z.B. von der IntuiMessage geliefert bekommt.

Aber für den Direktzugriff auf ein Item, ohne daß dieses vorher vom Benutzer ausgewählt wurde, eignen sie sich nicht, da sie sich im Laufe des Lebenszyklus eines Programms häufiger ändern und dann muß ich an tausend Stellen im Programm die Änderungen nachpflegen. Da gehe ich lieber die ganze Menüstuktur durch und suche die Items heraus, die in UserData "Kommando Hugo" drin stehen haben.


Bislang sind wir nur von einem relativ kleinen statischen Menü ausgegangen. Für große Anwendungen, die womöglich noch ein dynamisches Menü-Layout haben, hast Du natürlich Recht.

Aber da sind weder Basic, noch gadtools eine allzu große Hilfe...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 21:22 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Holger:
Bislang sind wir nur von einem relativ kleinen statischen Menü ausgegangen. Für große Anwendungen, die womöglich noch ein dynamisches Menü-Layout haben, hast Du natürlich Recht.

Aber da sind weder Basic, noch gadtools eine allzu große Hilfe...


Für mich ist diese Lösung gerade richtig. Ist übrigens für Sudoku, was ich auch dann gleich mit den Menus heute hochgeladen habe.

Anbei muß ich noch weitere Bugs und Schönheitsfehler beseitigen, wobei ich bei vielen einfach nicht weiter komme, wie z.b. die Sache mit dem Screen und die Farben vom Datatype.
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 10.05.2006 um 21:23 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 21:42 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
Für mich ist diese Lösung gerade richtig. Ist übrigens für Sudoku, was ich auch dann gleich mit den Menus heute hochgeladen habe.

Aber prinzipiell hat thomas schon recht, UserData zu benutzen verbessert die Struktur des Programms erheblich. Und es ist doch besser, schon bei kleinen Projekten mit der richtigen Vorgehensweise anzufangen, als bei größeren irgendwann das Handtuch zu schmeißen.

Ich hab das Programm in seiner aktuellen Version noch nicht getestet, aber ich vermute mal, Du hast noch nicht berücksichtigt, daß es auch Mehrfachauswahl bei Menüs gibt, oder?

Das zu unterstützen, ist relativ einfach. Wenn das betroffene MenuItem in seinem NextSelect Feld einen von MENUNULL abweichenden Wert hat, dann ist es der Code des nächsten MenuItems (WORD). Dieses kann in seinem NextSelect Feld natürlich auf ein weiteres Item verweisen, usw.usf.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 22:01 Uhr

Holger
Posts: 8116
Nutzer
Der Vollständigkeit halber, auch wenn's nicht mehr relevant ist, will ich noch meine ursprüngliche Vermutung korrigieren.

Der Menücode setzt sich also so zusammen: submenuitem<<11|item<<5|menu

Wobei 0 das erste Item bedeutet und deshalb 0x1f<<11 "kein Submenuitem" bedeutet. Und auch MENUNULL gleich 0xffff ist.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 22:27 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Holger:
Ich hab das Programm in seiner aktuellen Version noch nicht getestet, aber ich vermute mal, Du hast noch nicht berücksichtigt, daß es auch Mehrfachauswahl bei Menüs gibt, oder?

Das zu unterstützen, ist relativ einfach. Wenn das betroffene MenuItem in seinem NextSelect Feld einen von MENUNULL abweichenden Wert hat, dann ist es der Code des nächsten MenuItems (WORD). Dieses kann in seinem NextSelect Feld natürlich auf ein weiteres Item verweisen, usw.usf.


Danke für den Hinweis, aber ich vermute mal das ich das nicht einbauen werde. Aber wer weis wie sich das Programm noch entwickelt... :)
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 22:46 Uhr

Ralf27
Posts: 2779
Nutzer
Aus reiner Interesse:

Also sind maximal 31 Items pro Titel möglich(wenn man keine Subitems dazu zählt)?

Also 31Titel*31Items*31 SubItems=29791 Items (schon einiges)

Es gibt also keine Möglichkeit mehr als 31 Items "in einen Block" zu bekommen?
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

10.05.2006, 22:55 Uhr

MaikG
Posts: 5172
Nutzer
>Ich hab es dann schnell wieder entfernt. Meine Lösung zu dem ganzen
>ist wirklich sehr viel übersichtlicher und wesentlich kürzer.

Bei den Beispielen muss man immer so einiges rausnehmen...

[ - Antworten - Zitieren - Direktlink - ]

12.05.2006, 11:29 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Ralf27:
Danke für den Hinweis, aber ich vermute mal das ich das nicht einbauen werde. Aber wer weis wie sich das Programm noch entwickelt... :)


Soll das Programm systemkonform sein, oder nicht? Sind doch letztendlich höchstens zwei zusätzliche Zeilen.

Zitat:
Aus reiner Interesse:

Also sind maximal 31 Items pro Titel möglich(wenn man keine Subitems dazu zählt)?

Also 31Titel*31Items*31 SubItems=29791 Items (schon einiges)

Es gibt also keine Möglichkeit mehr als 31 Items "in einen Block" zu bekommen?


Knapp daneben. Es sind 31 Menüs * 63 Items * 31 Subitems = 60543 Maximum.

Man kann durchaus mehr als 63 Items "in einen Block" bekommen, hat dann halt ein Problem bei der Auswertung der Auswahl.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

12.05.2006, 17:23 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Holger:
Soll das Programm systemkonform sein, oder nicht? Sind doch letztendlich höchstens zwei zusätzliche Zeilen.

Ich hab eben mal nachgesehn. Ich muß es einbauen, denn sonst ist es auch sowas wie ein Bug wenn ich mehrere Items gleichzeitig auswähle. Ist mir vorher nie aufgefallen.
Ich muß mir das heute Abend nochmal genauer ansehn.
Zitat:
Knapp daneben. Es sind 31 Menüs * 63 Items * 31 Subitems = 60543 Maximum.

Zja, so schnell geht das:
Menu: Bit 0-4 = 5 Bits
Item: Bit 5-10 = 6(!)Bits ... ist mir vorher auch nicht aufgefallen.
SubItem: Bit 10-15 = 6 Bits

63Items in einer Reihe sind schon einiges.

Aber das würde ja 31*63*63 bedeuten.. also 123039 Items(?)
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 12.05.2006 um 17:29 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

12.05.2006, 17:48 Uhr

NoImag
Posts: 1050
Nutzer
Zitat:
Original von Ralf27:
Zja, so schnell geht das:
Menu: Bit 0-4 = 5 Bits
Item: Bit 5-10 = 6(!)Bits ... ist mir vorher auch nicht aufgefallen.
SubItem: Bit 10-15 = 6 Bits


Bit 11-15 = 5 Bits

Tschüß


[ - Antworten - Zitieren - Direktlink - ]

12.05.2006, 17:59 Uhr

Ralf27
Posts: 2779
Nutzer
Stimmt, diesmal fängt es dann von 11 an bis 15. :) Dann stimmt auch wieder der Rest.
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

12.05.2006, 20:37 Uhr

Ralf27
Posts: 2779
Nutzer
Ich hab es eben eingebaut. Waren gerade mal drei Zeilen.

Heute war übrigens Premiere bei mir, hab heute zum ersten mal DO...LOOP eingebaut. Bin ja eigentlich mehr ein Fan von WHILE...WEND
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]


-1- 2 [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Gadtools: Menu aufbauen [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.