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 PopupMenu geht bei RichEdit 2 mal auf (https://www.delphipraxis.net/95531-popupmenu-geht-bei-richedit-2-mal-auf.html)

cruzer 8. Jul 2007 18:38


PopupMenu geht bei RichEdit 2 mal auf
 
Hallo,
ich wollte mir gestern bei einem meiner Programme in Delphi (ich verwende Borland Delphi 7 unter Windows ME) ein PopupMenu zu einem RichEdit hinzufügen.
Prinzipiell funktioniert das auch, nur wenn ich in dem PopupMenu etwas auswähle geht es direkt danach an der gleichen Stelle nochmal auf.
Das passiert aber nur wenn ich es zu einem RichEdit hinzufüge, bei einem Memo gehts z.B.
Ich hab dann mal probiert ob das mit C++ auch passiert (Borland CBuilder 6) und da passiert genau das gleiche.

Was könnte man denn machen, damit das nicht mehr passiert?

marabu 9. Jul 2007 07:37

Re: PopupMenu geht bei RichEdit 2 mal auf
 
Liste der Anhänge anzeigen (Anzahl: 1)
Herzlich willkommen in der Delphi-PRAXiS, cruzer.

Vielleicht liegt es an der Art, wie du mit dem PopupMenu umgehst? Wenn das Phänomen auch mit meinem Beispiel-Projekt auftritt, dann kann ich dir nicht helfen.

Freundliche Grüße

Stefan92 9. Jul 2007 09:25

Re: PopupMenu geht bei RichEdit 2 mal auf
 
Wie hast du das PopupMenü denn hinzugefügt.
Ich habe es beim RichEdit über das Ereignis vom RE namens PopupMenu auf mein PopupMenü gesetzt und bei mir funzt alles.

Gruß

Stefan

cruzer 9. Jul 2007 13:00

Re: PopupMenu geht bei RichEdit 2 mal auf
 
Hi, erstmal danke für die Antworten.
Ich habe es mit dem Objektinspektor zum RichEdit hinzugefügt. Da gibts ja extra nen Punkt namens "PopupMenu".

Zu dem Programm von marabu: Es geht nicht 2 Mal auf. Wenn ich allerdings das
Delphi-Quellcode:
ShowMessage(Hint)
z.B durch
Delphi-Quellcode:
RichEdit.Text := '...'
ersetze, tritt der Fehler wieder auf.

Als Übergangslösung hab ich das Problem umgangen, indem ich das PopupMenu zerstöre (oder wie man da sagt) und es dann neu erschaffe.

Also so:

Delphi-Quellcode:
procedure TForm1.Ausschneiden1Click(Sender: TObject);
begin
PopupMenu1.Destroy;
PopupMenu1 := TPopupMenu.Create(self);
Ausschneiden3 := TMenuItem.Create(self);
Ausschneiden3.Caption := 'Ausschneiden';
Ausschneiden3.OnClick := Ausschneiden1Click;
PopupMenu1.Items.Insert(0,Ausschneiden3);
Kopieren3 := TMenuItem.Create(self);
Kopieren3.Caption := 'Kopieren';
Kopieren3.OnClick := Kopieren1Click;
PopupMenu1.Items.Insert(1,Kopieren3);
Einfgen3 := TMenuItem.Create(self);
Einfgen3.Caption := 'Einfügen';
Einfgen3.OnClick := Einfgen1Click;
PopupMenu1.Items.Insert(2,Einfgen3);
RichEdit1.PopupMenu := PopupMenu1;
RichEdit1.CutToClipboard;
end;

procedure TForm1.Kopieren1Click(Sender: TObject);
begin
PopupMenu1.Destroy;
PopupMenu1 := TPopupMenu.Create(self);
Ausschneiden3 := TMenuItem.Create(self);
Ausschneiden3.Caption := 'Ausschneiden';
Ausschneiden3.OnClick := Ausschneiden1Click;
PopupMenu1.Items.Insert(0,Ausschneiden3);
Kopieren3 := TMenuItem.Create(self);
Kopieren3.Caption := 'Kopieren';
Kopieren3.OnClick := Kopieren1Click;
PopupMenu1.Items.Insert(1,Kopieren3);
Einfgen3 := TMenuItem.Create(self);
Einfgen3.Caption := 'Einfügen';
Einfgen3.OnClick := Einfgen1Click;
PopupMenu1.Items.Insert(2,Einfgen3);
RichEdit1.PopupMenu := PopupMenu1;
RichEdit1.CopyToClipboard;
end;

procedure TForm1.Einfgen1Click(Sender: TObject);
begin
PopupMenu1.Destroy;
PopupMenu1 := TPopupMenu.Create(self);
Ausschneiden3 := TMenuItem.Create(self);
Ausschneiden3.Caption := 'Ausschneiden';
Ausschneiden3.OnClick := Ausschneiden1Click;
PopupMenu1.Items.Insert(0,Ausschneiden3);
Kopieren3 := TMenuItem.Create(self);
Kopieren3.Caption := 'Kopieren';
Kopieren3.OnClick := Kopieren1Click;
PopupMenu1.Items.Insert(1,Kopieren3);
Einfgen3 := TMenuItem.Create(self);
Einfgen3.Caption := 'Einfügen';
Einfgen3.OnClick := Einfgen1Click;
PopupMenu1.Items.Insert(2,Einfgen3);
RichEdit1.PopupMenu := PopupMenu1;
RichEdit1.PasteFromClipboard;
end;

cruzer 9. Jul 2007 13:51

Re: PopupMenu geht bei RichEdit 2 mal auf
 
Hab ne bessere Lösung gefunden.
Jetzt ist das PopupMenu nicht mehr beim RichEdit hinzugefügt sondern ich fange einfach den Rechtsklick ab und machs dann auf.

Delphi-Quellcode:
procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if ssRight in Shift then
PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.

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