Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Buttonname über popupmenü ändern (https://www.delphipraxis.net/177868-buttonname-ueber-popupmenue-aendern.html)

Natcree 2. Dez 2013 21:25

Buttonname über popupmenü ändern
 
Hallo ich habe ein popupmenü und dieses auch bei einem TButton im OI mit eingefügt. nun möchte ich das wenn ich im popupmenü auf umbenennen klicke er diesen button auf dem ich das popupmenü geöffnet habe umbenennt.

Wie kann ich an die Sache rangehen ?

procedure TForm1.Umbenennen1Click(Sender: TObject);
begin
// den angeklickten Button ermitteln
// Button xy.caption:='Hallo';
end;

Hat jemand ne idee??

Dalai 2. Dez 2013 22:01

AW: Buttonname über popupmenü ändern
 
Ich würde schon beim Öffnen des Popupmenü den Button ermitteln, über dem das Popupmenü (mit Rechtsklick?) geöffnet wurde. Das macht IMO die Sache einfacher, weil man zu diesem Zeitpunkt die Mausposition hat und auch ermitteln kann, über welchem Element der Klick stattgefunden hat.

Für das Umbenennen selbst bietet sich eine InputBox an; je nach Programm/Wunsch geht natürlich auch ein TEdit, das man ein- und danach wieder ausblendet.

MfG Dalai

Natcree 2. Dez 2013 22:06

AW: Buttonname über popupmenü ändern
 
Delphi-Quellcode:
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
p:Tpoint;
begin
getcursorpos(p);//bekomme ich die Maus positon
if Button = mbright then popupmenu2.Popup(p.x,p.y);
//nun muss ich nur noch an den button namen rankommen
end;
Wie mache ich das???

himitsu 2. Dez 2013 22:27

AW: Buttonname über popupmenü ändern
 
Delphi-Quellcode:
PopupMenu1.PopupComponent
= die Komponente, welche das PopupMenu aufrief

oder man hangelt sich komplett durch die Besitzerstruktur
Delphi-Quellcode:
((Sender as TMenuItem).GetParentMenu as TPopupMenu).PopupComponent

Volker Z. 2. Dez 2013 23:04

AW: Buttonname über popupmenü ändern
 
Hallo,

spendier doch den Buttons, die in Frage kommen - also umbenannt werden sollen - ein OnContextPopup; dort speicherst Du Dir eine Referenz auf den Button, der umbenannt werden soll und im OnRenameTheButton änderst Du die Caption der gemerkten Referenz. Also z. B. so:
Delphi-Quellcode:
  TForm1 = class (TForm)
    Button1 : TButton;
    Button2 : TButton;
    Button3 : TButton;
    Button4 : TButton;
    PopupMenu1 : TPopupMenu;
    RenameButton : TMenuItem;
  private
    FButtonToRename : TButton;
    procedure RenameButtonContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Button1.PopupMenu := PopupMenu1; // oder im OI zuweisen

  Button1.OnContextPopup := ButtonContextPopup; // oder über den OI zuweisen

  FButtonToRename := nil
end;

procedure TForm1.RenameButtonClick(Sender: TObject);
begin
  if Assigned (FButtonToRename) then
    FButtonToRename.Caption := 'Some Caption'
end;

procedure TForm1.ButtonToRenameContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
  FButtonToRename := TButton (Sender)
end;
Gruß

Natcree 3. Dez 2013 13:45

AW: Buttonname über popupmenü ändern
 
Danke Funtz super XD


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