![]() |
Delphi-Version: 10.4 Sydney
TMenueitem mit Basisframe
Hi zusammen
Damit versuche ich, in meinem Basisframe (TOpenFileFrame) ein da über den OI erstelltes PopUpMenue um Untermenues zu ergänzen. Diese benennen jeweils bestimmte Dateiendungen, die ich wie folgt deklariert habe:
Delphi-Quellcode:
Um Flüchtigkeitsfehler zu vermeiden, wollte ich diese Array per Code durchlaufen und die einzelnen Strings dem PopUpMenue als Items zuweisen. Da ich das bislang noch nie gemacht habe, wollte ich mit meiner Prozedur NewPopUpItem erstmal einen Versuchsballon starten:
Const
ExtendedArray : array[0..7] of string =('alle Dateien', '.pdf', '.sqlite', '.Docx', '.bmp', '.nef', '.jpg', '.png'); //
Delphi-Quellcode:
Das aber passt Delphi gar nicht. Die erste Zeile in NewPopUpItem erzeugt dabei folgende Fehlermeldung:
constructor TOpenFileFrame.Create(AOwner: TComponent);
begin inherited; FReportlist := TStringlist.Create; FPopUpModeList:= TStringlist.Create; DisplayAllFiles; FPathlist := TStringlist.Create; FPopUpItemList := TStringlist.Create; PnlLookOut.Align := alClient; FCmbxItem := False; FFileType := 'Alle Dateien'; FPopUpNode := NIL; NewPopUpItem; end; procedure TOpenFileFrame.NewPopUpItem; var NewItem: TMenuItem; begin Self.PopupMenu1.Items.Add(NewItem); NewItem.Caption := 'Dateierweiterungen 2 '; NewItem.Name := 'DateiExtension ' + IntToStr(NewItem.Count); // NewItem.Tag := 1; // NewItem.OnClick := PopupMenuItemsClick; // Assign it an event handler. end; Zitat:
Ein MenueItem mit der Caption 'Dateierweiterungen' exisiert bereits; desshalb nennt sich die neue Caption auch 'Dateierweiterungen 2 '... Was mache ich falsch? Gruss Delbor |
AW: TMenueitem mit Basisframe
Hi zusammen
Zitat:
![]() Andrerseits: je nach dem kann Add auch eine Funktion sein und das Objekt selbst erzeugen... Gruss Delbor |
AW: TMenueitem mit Basisframe
Das Beispiel ist insofern etwas unglücklich, weil die lokale Variable NewItem die gleichnamiger Funktion aus Vcl.Menus überdeckt, mit der man ein solches TMenuItem recht komfortabel erstellen kann:
![]() |
AW: TMenueitem mit Basisframe
Wie in dem Beispiel von Delbor verlinkt fehlt also nur die Zeile zum Erzeugen von NewItem.
Delphi-Quellcode:
procedure TOpenFileFrame.NewPopUpItem;
var NewItem: TMenuItem; begin NewItem := TMenuItem.Create(PopupMenu1); // Create the new item. Self.PopupMenu1.Items.Add(NewItem); NewItem.Caption := 'Dateierweiterungen 2 '; NewItem.Name := 'DateiExtension ' + IntToStr(NewItem.Count); // NewItem.Tag := 1; // NewItem.OnClick := PopupMenuItemsClick; // Assign it an event handler. end; |
AW: TMenueitem mit Basisframe
Siehe BerndS > das Erstellen, was man einfügen will.
Außerdem ist im Add der Parameter sowieso kein VAR und man hätte daher erkennen müssen, dass dort nichts rauskommen kann. Und warum wird nicht auf den Compiler gehört, welcher hier bestimmt was vonwegen "Variable ist nicht initialisiert" gesagt haben müsste? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz