Delphi-PRAXiS
Seite 1 von 2  1 2      

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 String aus zur Laufzeit erstelltem PopUpMenü zurückgeben? (https://www.delphipraxis.net/66526-string-aus-zur-laufzeit-erstelltem-popupmenue-zurueckgeben.html)

Grolle 30. Mär 2006 21:56


String aus zur Laufzeit erstelltem PopUpMenü zurückgeben?
 
Hallo,
ist es möglich einen String aus einem zur Laufzeit erstelltem PopUpMenü zurückzugeben?
Die PopUpMenü-Items erstelle ich ganz einfach aus einer Stringliste. Jetzt soll einfach die
ausgewählte Item-Caption zurückgegeben werden. Wie mache ich das?

Viele Grüße,

marabu 30. Mär 2006 22:29

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Hallo Stefan,

wenn du den menu items einen Handler für das Event OnClick() zugeordnet hast, dann kannst du einfach auf die Caption zugreifen:

Delphi-Quellcode:
procedure TDemoForm.MenuItemClick(Sender: TObject);
begin
  with Sender as TMenuItem do
    ShowMessage(Caption);
end;
Grüße vom marabu

Grolle 30. Mär 2006 22:41

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Hallo,

nein ich habe keinen Handler zugeordnet. Hier mein Text:
Delphi-Quellcode:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
a : TMenuItem;
sl : TStringList;
i : integer;
begin
  sl :=TStringList.Create;
  sl.LoadFromFile(ExtractFilePath(ParamStr(0))+'daten\gruppen.txt');
  sl.Add('Alle Gruppen');
  for i := 0 to SL.Count - 1 do
   begin
    a := TMenuItem.Create(Self);
    a.Caption := SL[i];
    a.Hint   := SL[i];
    PopUpMenu1.Items.Add(a);
   end;
  sl.free;
end;

ChrisE 30. Mär 2006 23:04

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Zitat:

Zitat von Grolle
nein ich habe keinen Handler zugeordnet. Hier mein Text:

Dann weise ihn doch zu. Ich meine wie willst du sonst auf onClick reagieren?

Deinen Quelltext folgender maßen anpassen:
Delphi-Quellcode:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
a : TMenuItem;
sl : TStringList;
i : integer;
begin
  sl :=TStringList.Create;
  sl.LoadFromFile(ExtractFilePath(ParamStr(0))+'daten\gruppen.txt');
  sl.Add('Alle Gruppen');
  for i := 0 to SL.Count - 1 do
   begin
    a := TMenuItem.Create(Self);
    a.Caption := SL[i];
    a.Hint   := SL[i];
    // Hier neu
    a.OnClick := MenuItemClick;
    // ende neu
    PopUpMenu1.Items.Add(a);
   end;
  sl.free;
end;
und dann die methode von marabu


Zitat:

Zitat von marabu
Delphi-Quellcode:
procedure TDemoForm.MenuItemClick(Sender: TObject);
begin
  with Sender as TMenuItem do
    // mach was du willste mit Caption
end;

Dann geht sollte es gehen

Grolle 30. Mär 2006 23:15

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Hallo,
alles klar. Klappt so. Besten Dank! :thumb:

Grolle 30. Mär 2006 23:32

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Hallo,
klappt doch noch nicht so ganz. Der erste Buchstabe, der zurückkommt ist ein &.
Dieser dürfte eigentlich gar nicht existieren :gruebel:

freak4fun 30. Mär 2006 23:35

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Das '&' wird automatisch hinzu gefügt, damit man den Eintrag über die Taste (Buchstabe danach) anwählen kann. ;)

MfG
freak

Grolle 30. Mär 2006 23:37

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Ok, dann muss ich den einfach abschneiden.

Danke!

freak4fun 30. Mär 2006 23:43

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Zitat:

Zitat von Grolle
Ok, dann muss ich den einfach abschneiden.

Ja, aber ich bin mir nicht sicher, ob das '&' immer am Anfang steht. Eigentlich kann es überall sein. Ich würde das mal testen, wenn 2 Einträge den gleichen Anfangsbuchstaben haben. :gruebel: Aber 100% kann ich das nicht sagen. ;)

MfG
freak

Grolle 30. Mär 2006 23:46

Re: String aus zur Laufzeit erstelltem PopUpMenü zurückgeben
 
Hallo,
mit StringReplace klappt das einwandfrei.

Viele Grüße...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz