ich möchte eine Anwendung mit mehreren verschiedenen Arbeitsflächen programmieren. Dabei ist eine Arbeitsfläche ein Panel (wer Blender kennt: ich möchte genau diese Art der Oberfläche nachmachen). Dabei soll jedes Panel auch ein MainMenu bekommen, das natürlich dynamisch erzeugt werden muss.
So weit mein Code:
Code: Alles auswählen
type
TSMMenu = class(TMainMenu) //neue Klasse von MainMenu wegen benötigtem Startparameter
private
public
constructor Create(cParent: TComponent; cMiTypes: array of TMiType); //cMiTypes - eigener Startparameter. Ist die Menge der Typen der MenuItems, die im neuen MainMenu angezeigt werden sollen
end;
TSBuild = class(TPanel) //ein einzelnes "Fenster" der Oberfläche -> Panel
private
Menu: TSMMenu;
public
constructor Create(cParent: TWinControl; cPos: TPoint);
end;
implementation
TSMMenu.Create(cParent: TComponent; cMiTypes: array of TMiType);
var i: byte;
NewItem: TMenuItem;
begin
inherited Create(cParent); //Erstellen des MainMenus
Parent:=cParent;
for i:=0 to length(cMiTypes)-1 do //Erzeugen der MenuItems die angezeigt werden sollen
begin
case cMiTypes[i] of
miContentType:
begin
NewItem:=TMenuItem.Create(Self);
NewItem.Caption:='Ansicht';
Items.Add(NewItem);
MenuItem.Free;
//später wird auch noch eine Prozedur hinzugefügt, versprochen ;)
end;
end;
end;
end;
constructor TSBuild.Create(cParent: TWinControl; cPos: TPoint);
begin
inherited Create(cParent);
Parent:=cParent;
Left:=cPos.X;
Top:=cPos.Y;
BevelOuter:=bvNone;
BevelInner:=bvNone;
Menu:=TSMMenu.Create(Self, [miContentType]);
end;
Man sieht kein MainMenu, gerade so, als würde kein MenuItem im MainMenu sein. Durch den Debugger weiß ich aber, dass die Stelle, an der das MenuItem erzeugt wird, korrekt durchlaufen wird.
Weiß jemand, was ich falsch mache?
Grüße
ConcAPPtLab