nein, oben nicht, aber in loop
Beim Initialisieren nur auf menu0 initialisiert,
erst in loop wird testweise actmenu auf menu2 initialisiert.
- - - Aktualisiert - - -
moment....
- - - Aktualisiert - - -
Code:
tMenu menu0(10,20, 0); // numEntries, lineLength, menuID;
tMenu menu02(10,20, 2);
tMenu & actMenu = menu0;
tMenu & preMenu = menu0;
void setup() {
menu0.init(); // optional numVisibleLines, fontHeight; defaults = (5,13)
Serial.println(menu0.ID);
Serial.println(actMenu.ID);
actMenu.mdisplay();
actMenu = menu02; // test
actMenu.init();
Serial.println(menu02.ID);
Serial.println(actMenu.ID);
actMenu.mdisplay();
ergibt jetzt völlig korrekt
Code:
0
0
>0 .......|
1 .......|
2 .......|
3 .......|
4 .......|
2
2
>0 .......|
1 .......|
2 .......|
3 .......|
4 .......|
super, habs kapiert, dankeschön! 
- - - Aktualisiert - - -
noch ein unerwarteter bug im Programm:
Code:
tMenu menu0(10,20, 0); // numEntries, lineLength, menuID=0;
tMenu menu02(10,20, 2); // numEntries, lineLength, menuID=2;
tMenu & actMenu = menu0;
tMenu & preMenu = menu0;
void init() {
//
display.setFont(&FreeMono9pt7b); // h=13.10pt
display.clearDisplay();
display.display();
Serial.println("Menu 0+02 init:");
menu0.init();
strcpy(menu0.list[0], " menu0");
Serial.print("menu0.ID="); Serial.println(menu0.ID); //<<<<<<<<<< stimmt noch !!
menu02.init();
strcpy(menu02.list[0], " menu02");
Serial.print("menu02.ID="); Serial.println(menu02.ID); //<<<<<<<<<< stimmt noch !!
Serial.println();
Serial.println("actMenu-Zuweisungen:");
Serial.println();
actMenu=menu0;
Serial.println("actMenu=0");
Serial.print("menu0.ID="); Serial.println(menu0.ID); // noch ok
Serial.print("menu02.ID="); Serial.println(menu02.ID);
Serial.print("actMenu.ID="); Serial.println(actMenu.ID);
actMenu.mdisplay(); // noch ok
Serial.println("actMenu=02");
actMenu = menu02; // test
Serial.print("menu0.ID="); Serial.println(menu0.ID); // Fehler
Serial.print("menu02.ID="); Serial.println(menu02.ID);
Serial.print("actMenu.ID="); Serial.println(actMenu.ID);
actMenu.mdisplay();
Serial.println("actMenu=0");
actMenu = menu0; // und wieder zurück
Serial.print("menu0.ID="); Serial.println(menu0.ID); // Fehler
Serial.print("menu02.ID="); Serial.println(menu02.ID);
Serial.print("actMenu.ID="); Serial.println(actMenu.ID); // Fehler
actMenu.mdisplay(); // Fehler
delay(1);
bis nach der 1. Zuweisung actMenu=menu0 ist noch alles ok,
nach der Neuzuweisung actMenu=menu02 ist der Inhalt von Original-menu0 überschrieben:
Code:
Menu 0+02 init:
menu0.ID=0 // ok!
menu02.ID=2 // ok!
actMenu-Zuweisungen:
actMenu=0
menu0.ID=0 // ok!
menu02.ID=2
actMenu.ID=0
> menu0 // ok
1 .......|
2 .......|
3 .......|
4 .......|
actMenu=02
menu0.ID=2 // Fehler!
menu02.ID=2
actMenu.ID=2
> menu02 // ok
1 .......|
2 .......|
3 .......|
4 .......|
actMenu=0
menu0.ID=2 // Fehler!
menu02.ID=2
actMenu.ID=2 // Fehler!
> menu02 // Fehler!
1 .......|
2 .......|
3 .......|
4 .......|
Lesezeichen