seit einiger Zeit arbeite ich an einem eigenen Main Menu. Im Prinzip auch gar nicht weiter schwer nur jetzt kommt die Verschachtelung ins spiel. Also Menus mit unter Menus .
Mein ziel ist es so eine Struktur zu erzeugen:
Sub + Zahl gehören zu Item1 zu Sub 1 gehöhren u1 und u2.Item1 Item2 Item3 Item4
Sub 1 -> u1
Sub 2 u2
Sub 3
Sub 4
das Problem ist nur wie mache ich das ?
Ich habe dafür erstmal eine einfach eigene Listbox geschrieben, die noch sehr einfach auf gebaut ist. Diese Listbox möchte ich für mein MainMenu verwenden. Also die Menu Leiste ist eine eigene Listbox nur die Anordnung ist anders.
Code: Alles auswählen
Tmylistbox = class;
TArrangement = (AGVerti,AGHori);
TmyListItem = class
Caption:String;
r:TRect;
visible:Boolean;
subitems:Tmylistbox;
end;
Code: Alles auswählen
if typ = MS_Down then begin
if index <> -1 then begin
if ItemDownIndex > -1 then
AddChangeItem(items[ItemDownIndex].r);
ItemDownIndex:=index;
AddChangeItem(items[ItemDownIndex].r);
if items[ItemDownIndex].subitems <> NIL then begin
items[ItemDownIndex].subitems.Visible:=True;
items[ItemDownIndex].subitems.x:=items[ItemDownIndex].r.left;
items[ItemDownIndex].subitems.y:=hp.y+5+items[ItemDownIndex].r.top;
items[ItemDownIndex].subitems.onMouseEv:=onMouseEv;
fRect.left:=items[ItemDownIndex].subitems.x;
fRect.top:=items[ItemDownIndex].subitems.y;
fRect.Right:=fRect.left+items[ItemDownIndex].subitems.hx;
fRect.Bottom:=fRect.top+items[ItemDownIndex].subitems.hp.y+10;
items[ItemDownIndex].subitems.AddChangeItem(fRect);
items[ItemDownIndex].subitems.Draw(fcanvas);
// items[ItemDownIndex].subitems.
// items[ItemDownIndex].subitems.w:=
// items[ItemDownIndex].subitems.h:=
end;
Draw(fcanvas);
end;
end;
Ich dachte jetzt irgenwie an Rekusion nur weiß ich nicht wie ich das am besten umsetzten könnte.
Ich hoffe ihr könnt mir weiter Helfen mit: Tipps, oder Vorschlägen zu diesem Problem.
Ich währe sehr Dankbar.
Ich habe schon überlegt eine art Parent einzuestezten also eine Variable die den Vorgänger speichert... und einen Next eine Variable die den nachfolger speichert nur weiß ich noch nicht wirklich wie ich das anstellen könnte/kann

PS:
Bitte nur antworten wenn es zu Klärung des Problems beiträgt, sonst bringt das wirklich nichts.
Danke für eurer Verständnis
