AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Menü mit Panels und Collection

Ein Thema von Cyberaxx · begonnen am 27. Jan 2008 · letzter Beitrag vom 29. Jan 2008
 
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Dynamisches Menü mit Panels und Collection

  Alt 29. Jan 2008, 06:39
Keiner der mir helfen könnte?

Hab ein wenig rum probiert und durchs suchen bin ich dann auf PostMessage gestossen.
Da mein TObject leider kein Control besitzt klappt dies nicht.
Habe dann einfach mal testweise TWinControl genommen und meine anstatt den Button nun zu löschen sende ich eine Message.
Empfangen wird sie auch von meinem MenuManager.
Wenn ich aber nun meine Main App beende Reagiert es entweder überhaupt nicht mehr oder es kommt mal wieder eine AV, je nachdem ob ich meine MenuManager beende oder nicht.

MenuManager beenden -> Ich kann klicken wohin ich will es tut sich nichts mehr.
MenuManager nicht beenden -> AV beim beenden.

Delphi-Quellcode:
type
  TMenuManager = class(TWinControl)
  private
    FOwner: TWinControl;
    FXPos: Integer;
    FYPos: Integer;
    FTempYPos: Integer;
    FMenuEntries: TMenuEntries;
    FActiveButton: Integer;
    FItemClick: TNotifyEvent;
    FHandle: HWND;
    function GetAcctiveButton: Integer;
    procedure SetActiveButton(const Value: Integer);
    procedure OnClick(Sender: TObject);
  protected
    procedure GetMessage(var Message: TMessage); Message WM_DELBUTTON;
  public
    constructor Create(AOwner: TWinControl; XPos, YPos: Integer);
    destructor Destroy; override;
    procedure AddButton(Caption: String; ButtonStyle: TButtonStyle = etButton);
    procedure RemoveButton(Index: Integer);
    procedure ClearButtons;
    function Count: Integer;
    property ButtonActive: Integer read GetAcctiveButton write SetActiveButton;
    property OnItemClick: TNotifyEvent read FItemClick write FItemClick;
  end;

implementation

constructor TMenuManager.Create(AOwner: TWinControl; XPos, YPos: Integer);
begin
  inherited Create(AOwner);

  Self.Parent := AOwner;
  Self.FOwner := AOwner;
  Self.FXPos := XPos;
  Self.FYPos := YPos;
  Self.FTempYPos := Self.FYPos;
  Self.FActiveButton := -1;

  Self.FMenuEntries := TMenuEntries.Create;
end;

procedure TMenuManager.GetMessage(var Message: TMessage);
begin
    ShowMessage('Message');
end;

procedure TMenuManager.RemoveButton(Index: Integer);
begin
  //Self.FMenuEntries.Del(Index);
  PostMessage(Self.FOwner.Handle, WM_DELBUTTON, Index, 0);
end;
Mir kommt es so vor als würde meine Main App also die Form keine Messages mehr empfangen :/
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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