Hallo,
ich komme einfach nicht weiter, vielleicht kann mir einer von Euch helfen.
Ich habe zwei Stringgrids und ein Popupmenü, jetzt möchte ich gerne
abfragen, wer der Sender (Auslöser) des Menüaufrufes ist.
Das onclick Ereignis ( procedure TForm1.GridPMenu_CopyClick(Sender: TObject);)
vom Popupmenü hat jedoch als Sender das Menü selber. Auch das Parent
vom Popupmenü wäre ja eigentlich nur die Form.
Gibt es eine Möglichekeit mit einem Popupmenü auf zwei Komponenten,
hier Stringdrids, unterschiedliche zu reagieren?
[gelöst] Popupmenü
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
[gelöst] Popupmenü
Zuletzt geändert von DAP am Fr 25. Jan 2013, 13:53, insgesamt 1-mal geändert.
Re: Popupmenü
Naja, das sauberste wäre wohl, zwei Popupmenus zu verwenden.
Der Spruch "ich komme einfach nicht weiter" ist für grössere Probleme reserviert.
Alternativ kann man auch bei jedem StringGrid im OnMouseDown Ereignis den aktuellen StringGrid in einer Variable speichern.
Das Popupmenu kommt ja gleich danach.
Zur Illustration:
Der Spruch "ich komme einfach nicht weiter" ist für grössere Probleme reserviert.

Alternativ kann man auch bei jedem StringGrid im OnMouseDown Ereignis den aktuellen StringGrid in einer Variable speichern.
Das Popupmenu kommt ja gleich danach.
Zur Illustration:
Code: Alles auswählen
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
PopupMenu1.Items[0].Caption:=Caption;
end;
procedure TForm1.StringGridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssRight in Shift then Caption:=TControl(Sender).Name;
end;
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Popupmenü
Ok, sehe ich ein, ich kam aber wirklich nicht weiter.theo hat geschrieben:Naja, das sauberste wäre wohl, zwei Popupmenus zu verwenden.
Der Spruch "ich komme einfach nicht weiter" ist für grössere Probleme reserviert.![]()
Mehrere PopupMenüs kommen in diesem Fall nicht in Frage, da ich ca. 10 Tabellen habe.
Beim Versuch dein Beispiel umzusetzen bricht er beim zweiten Aufruf von doCopyToClipBoard
ab. Beim direkten Ansprechen der StringGrid1 - Komponente funktioniert der Aufruf!
(Den zweiten Aufruf von doCopytoClipBoard habe ich nur zu Testzwecken eingeführt)
Code: Alles auswählen
//TForm = ...
public
{ public declarations }
LastGridMouseDown : TObject;
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssRight in Shift then LastGridMouseDown := Sender;
end;
procedure TForm1.GridPMenu_CopyClick(Sender: TObject);
begin
StringGrid1.doCopyToClipBoard;
with TStringGrid(LastGridMousedown) do
begin
doCopyToClipBoard; //Abruch Fehler: SIGSEGV
end;
end;
Re: Popupmenü
Die könnte man auch dynamisch erzeugen.DAP hat geschrieben: Mehrere PopupMenüs kommen in diesem Fall nicht in Frage, da ich ca. 10 Tabellen habe.
Warum bzw. wie verwendest du die protected Methode doCopytoClipBoard, und nicht einfach die public Methode CopytoClipBoard ?DAP hat geschrieben: Beim Versuch dein Beispiel umzusetzen bricht er beim zweiten Aufruf von doCopyToClipBoard
ab. Beim direkten Ansprechen der StringGrid1 - Komponente funktioniert der Aufruf!
(Den zweiten Aufruf von doCopytoClipBoard habe ich nur zu Testzwecken eingeführt)
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Popupmenü
hatte ich auf die Schnelle als Beispiel verwendet, aber mit CopytoClipBoard kommt der gleiche Fehler.theo hat geschrieben: Warum bzw. wie verwendest du die protected Methode doCopytoClipBoard, und nicht einfach die public Methode CopytoClipBoard ?
Re: Popupmenü
Keine Ahnung, dann ist LastGridMouseDown halt aus irgend einem Grund zu diesem Zeitpunkt wieder ungültig.
Das musst du debuggen, was da abgeht. Das weiss ich doch auch nicht.
Das musst du debuggen, was da abgeht. Das weiss ich doch auch nicht.
-
- Beiträge: 55
- Registriert: Sa 15. Jan 2011, 00:14
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
[gelöst] Re: Popupmenü
Deine Antwort lies mich vermuten, dass ich im Code nicht ganz so viel falsch
haben kann, deshalb habe ich das gleiche in einem neuen Projekt probiert
und siehe da, es klappt wunderbar.
Der Ausnahmefehler muss also an etwas anderm liegen.
Danke Theo
haben kann, deshalb habe ich das gleiche in einem neuen Projekt probiert
und siehe da, es klappt wunderbar.
Der Ausnahmefehler muss also an etwas anderm liegen.
Danke Theo