Hallo,
if TComponent((c as TMenuItem).parent) is TMenu then
geht leider nicht. die bedingung ist nie erfüllt trotz vorhandenem TMainMenu
die Auszüge aus der Menus.pas:
Delphi-Quellcode:
protected
function GetParentComponent: TComponent; override;
function HasParent: Boolean; override;
procedure SetParentComponent(Value: TComponent); override;
public
property Parent: TMenuItem read FParent;
function TMenuItem.HasParent: Boolean;
begin
Result := True;
end;
function TMenuItem.GetParentComponent: TComponent;
begin
if (FParent <> nil) and (FParent.FMenu <> nil) then
Result := FParent.FMenu else
Result := FParent;
end;
procedure TMenuItem.SetParentComponent(Value: TComponent);
begin
if FParent <> nil then FParent.Remove(Self);
if Value <> nil then
if Value is TMenu then
TMenu(Value).Items.Add(Self)
else if Value is TMenuItem then
TMenuItem(Value).Add(Self);
end;
somit fällt HasParent schonmal flach ;(, auch mittels "
vcl-Hack".
ich habe auch kaum stellen gefunden (nur insert,delete und destructor), wo FParent gesetzt wird, weder im Constructor noch gibt es ein SetParent...
ein weiterer versuch (zeigt immer "Ja")
Delphi-Quellcode:
if getParent((sender as TMenuItem).handle)=0 then
showmessage('Ja');
//edit:
die Suche in menus.pas nach "Top" findet keine passenden Stellen
Gruß Frank