AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit onClick procedure

Ein Thema von Satyr · begonnen am 13. Feb 2012 · letzter Beitrag vom 14. Feb 2012
 
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#7

AW: Probleme mit onClick procedure

  Alt 13. Feb 2012, 17:38
ich habe mein dynamisch erzeugtes TMenuItem.
Dann deklariere im Interface-Teil:
Delphi-Quellcode:
type
  TSpecMenuItem = class(TMenuItem)
  private
    Message : string;
    EinWert : Integer;
  end;
Erzeuge dynamisch:
Delphi-Quellcode:
var
  aMenuItem : TSpecMenuItem;
begin
  aMenuItem := TSpecMenuItem.Create(Self);
  aMenuItem.Message := 'Hi';
  aMenuItem.EinWert := 4711;
  aMenuItem.OnClick := actMenuClickExecute;
  FPopupMenu.Items.Add(aMenuItem);
end;
Und benutze:
Delphi-Quellcode:
procedure TMyForm.actMenuClickExecute(Sender : TObject);
var
  aMenuItem : TSpecMenuItem;
begin
  aMenuItem := Sender as TSpecMenuItem;
  ShowMessage(Format('%s : %d', [aMenuItem.Message, aMenuItem.EinWert]));
end;
Das geht auch mit D2007.

Da fällt mir noch ein: Wenn Dir das Arbeiten mit einer eigenen abgeleiteten Klasse nicht behagt, kannst Du mit dem Interceptor Pattern die gewünschte Erweiterung auch einem TMenuItem "unterschieben". Dazu deklariert man in einer separaten Unit:

Delphi-Quellcode:
unit uMenuItemInterceptor;

interface

uses
  Menus;

type
  TMenuItem = class(Menus.TMenuItem)
    MeinWert : string
  end;

implementation

end.
Diese Unit bindest Du dann als letzte Unit in Deiner Form-Unit ein und schon kannst Du Deinem TMenuItem beliebige Werte (hier MeinWert) mit auf den Weg geben.

Diese Technik funktioniert immer nur einmal pro Klasse (ähnlich wie bei den Class Helper).
Andreas

Geändert von neo4a (13. Feb 2012 um 18:52 Uhr)
  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 23:40 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