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


 
  Verein
Verein 
 Links
Links Suche
Suche