Thema: Delphi TadvMainMenu

Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: TadvMainMenu

  Alt 4. Okt 2014, 21:11
Hallo,

Zitat:
Kann mir einer sagen wie ich zur Laufzeit Untermenü punkte im TadvMain Menu erzeuge
Delphi-Quellcode:
  [...]
  AdvMenu.Items[3].Insert(7,Item);
Der obige Code fügt zwar Menuüunkte ein abder keine Submenüs
Was willst Du den eigentlich erreichen?

Soll Deine Menüstruktur in etwa so aussehen?
Code:
Datei | Bearbeiten | Ansicht | Textbausteine       <-- AdvMenu.Items [3]
                                Neu...             <-- AdvMenu.Items [3].Items [0]
                                Öffnen...          <-- AdvMenu.Items [3].Items [1]
                                Löschen...         <-- AdvMenu.Items [3].Items [2]
                                Organisieren...    <-- AdvMenu.Items [3].Items [3]
                                Reorganisieren...  <-- AdvMenu.Items [3].Items [4]
                                Zerlegen...        <-- AdvMenu.Items [3].Items [5]
                                Zusammenführen...  <-- AdvMenu.Items [3].Items [6]
                                                   <-- hier was einfügen ??
Oder sollte es in etwa so aussehen:
Code:
Datei | Bearbeiten | Ansicht | Extras                <-- AdvMenu.Items [3]
                                Extra (0)
                                Extra (1)
                                Extra (2)
                                Extra (3)
                                Extra (4)
                                Extra (5)
                                Extra (6)
                                Textbausteine        <-- AdvMenu.Items [3].Items [7]
                                  Textbaustein (0)   <-- ab hier was einfügen ??
                                  Textbaustein (1)
Wenn ich Deinen Post richtig interpretiere, dann möchtest Du etwas wie in Variante II erreichen - oder(?) -, und: Dann,
Delphi-Quellcode:
  AdvMenu.BeginUpdate;
  While not BausteineQry.Eof do
  begin
    [...]
    AdvMenu.Items[3].Insert(7,Item); ----------> Hier musß ein Problem sein
    [...]
  end;
  AdvMenu.EndUpdate;
hast Du das schon richtig erkannt.

Es könnte:
Delphi-Quellcode:
  AdvMenu.BeginUpdate;
  While not BausteineQry.Eof do
  begin
    [...]
    AdvMenu.Items [3].Items [7].Add (Item);
    [...]
  end;
  AdvMenu.EndUpdate;
in die richtige Richtung gehen.

Allerdings würde ich auf die hardcodierten Indizes verzichten und die Referenz des entsprechende Menüpunkts zur Laufzeit ermitteln; also irgendwie so:
Delphi-Quellcode:
procedure TForm.AddTextBlockItems;
var
  p : TMenuItem;
begin
  p := GetTextBlockMainItem;
  AdvMenu.BeginUpdate;
  try
    while not BausteineQry.Eof do
      begin
        item := TMenuItem.Create (nil);
        item.Caption := BausteineQry.FieldByName('Suchwort').AsString;
        item.OnClick := InsertTextbaustein;

        p.Add (Item);

        BausteineQry.Next
      end
  finally
    AdvMenu.EndUpdate
  end
end;
Aber, das ist alles stochern im Nebel. Vielleicht bringst Du mal etwas Licht (Erläuterung, Screenshot, etc.) in die Geschichte.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat