Thema: Delphi TMenuItem = TopItem?

Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: TMenuItem = TopItem?

  Alt 21. Jun 2007, 16:20
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
  Mit Zitat antworten Zitat