Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PopupMenü zur Laufzeit (https://www.delphipraxis.net/88647-popupmenue-zur-laufzeit.html)

Blackheart 18. Mär 2007 22:04


PopupMenü zur Laufzeit
 
Hallo Leute
Wie erstelle Ich zur Laufzeit ein PopUpMenu für RichEdit ?
Hab schon die Suche bemüht und schon einiges probiert aber es
klappt nicht so recht.
Vieleicht hatt das ja schon wer von Euch getan und kann Mir mal
ein paar Tips dazu geben.

Delphi-Quellcode:
RE:=TPopUpMenu.Create(RichEdit1);
  RE.Name:='Test';
  RE.Items.Caption:='Test';

Luckie 18. Mär 2007 22:14

Re: PopupMenü zur Laufzeit
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    popRTF: TPopupMenu;
    procedure OnMenuItemClick(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1             : TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnMenuItemClick(Sender: TObject);
begin
  case TMenuItem(Sender).Tag of
    0: ShowMessage(TMenuItem(Sender).Caption);
    1: ShowMessage(TMenuItem(Sender).Caption);
    2: ShowMessage(TMenuItem(Sender).Caption);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  mi               : TMenuItem;
begin
  popRTF := TPopupMenu.Create(Form1);

  mi := TMenuItem.Create(Form1);
  mi.Caption := 'Item0';
  mi.Tag := 0;
  mi.OnClick := OnMenuItemClick;
  popRtf.Items.Add(mi);
  mi := TMenuItem.Create(Form1);
  mi.Caption := 'Item1';
  mi.Tag := 1;
  mi.OnClick := OnMenuItemClick;
  popRtf.Items.Add(mi);
  mi := TMenuItem.Create(Form1);
  mi.Caption := 'Item2';
  mi.Tag := 2;
  mi.OnClick := OnMenuItemClick;
  popRtf.Items.Add(mi);

  RichEdit1.PopupMenu := popRTF;
end;
Sollte selbst erklärend sein.

Blackheart 18. Mär 2007 22:26

Re: PopupMenü zur Laufzeit
 
Danke Luckie, jetzt wo Ich es seh TMenuItem aber manchmal hatt man ein Brett vorm Kopf.
Wollte mal versuchen Mir eine Unit zu schreiben für ein Standard PopUp
für RichEdit, mal schauen.
Nochmals vielen Dank.

bitsetter 18. Mär 2007 23:40

Re: PopupMenü zur Laufzeit
 
Hallo,

bei Luckies Code kannst du dir die Zuweisung von TMenuItem.Tag sogar noch sparen folgendes reicht aus:
Delphi-Quellcode:
procedure TForm1.OnMenuItemClick(Sender: TObject);
begin
  if (Sender is TMenuItem) then
    ShowMessage((Sender as TMenuItem).Caption);

 (*case TMenuItem(Sender).Tag of
    0: ShowMessage(TMenuItem(Sender).Caption);
    1: ShowMessage(TMenuItem(Sender).Caption);
    2: ShowMessage(TMenuItem(Sender).Caption);
  end;*)
end;

Luckie 18. Mär 2007 23:48

Re: PopupMenü zur Laufzeit
 
Aber nicht, wenn er für jeden Eintrag im Menü etwas anderes ausführen will und das wird wohl der Fall sein. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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