![]() |
StringGrid und Popup
Hi kann mir vielleicht einer sagen wie ich es schaffe eine zelle im StringGrid mit Rechter maustaste zu selektieren und das dann ein popup menü auf geht habe es mal so versucht
Delphi-Quellcode:
danke sascha
procedure TForm7.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then StringGridpopup.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y); end; |
Re: StringGrid und Popup
Ich habe gerade kein Delphi zur Hand, aber hat das StringGrid keine Property PopupMenu?
|
Re: StringGrid und Popup
Doch aber ich mus zuerst mit der linken Maustaste die Zelle makieren
und dann kann ich erst an der stelle mein popup ausführen |
Re: StringGrid und Popup
Schon mal mit MouseToCell versucht?
|
Re: StringGrid und Popup
Ja hat aber auch nicht so ganz geklappt dann wird es irgenwohin geschoben
|
Re: StringGrid und Popup
Moment, wenn Du das PopupMenu im OI zuweist, könntest Du doch OnPopup die entsprechende Zelle ermitteln und markieren, oder geht das nicht? Wie gesagt, ich kann das gerade nicht ausprobieren.
|
Re: StringGrid und Popup
meinst du so ungefähr
Delphi-Quellcode:
procedure TForm7.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var col, row: integer; begin StringGrid1.MouseToCell(x, y, col, row); if Button = mbRight then StringGridpopup.Popup(col, row); end; |
Re: StringGrid und Popup
Gerade mal unter Ubuntu mit Lazarus versucht:
Delphi-Quellcode:
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var aCol,aRow: integer; p: TPoint; begin p := StringGrid1.ScreenToClient(Mouse.CursorPos); StringGrid1.MouseToCell(p.X,p.Y,aCol,aRow); StringGrid1.Col := aCol; StringGrid1.Row := aRow; end; |
Re: StringGrid und Popup
Genau das wars hatte nicht an die Eigenschaft vom Popup gedacht dank dir Trotzdem :thumb:
|
Re: StringGrid und Popup
vielleicht doch noch einen kleinen tipp
das verhindern des Popups bei Spalte null
Delphi-Quellcode:
geht net so ganz
procedure TForm7.StringGridPopupPopup(Sender: TObject);
var iCol,iRow: integer; Position: TPoint; begin if StringGrid1.Col = 0 then begin abort; end else begin Position := StringGrid1.ScreenToClient(Mouse.CursorPos); StringGrid1.MouseToCell(Position.X,Position.Y,iCol,iRow); StringGrid1.Col:= iCol; StringGrid1.Row:= iRow; end; end; |
Re: StringGrid und Popup
Moin, Moin.
Vielleicht mal einen alternativer Lösungsansatz ...
Delphi-Quellcode:
Achtung: Die Eigenschaft "AutoPopup" des PopUpMenüs muss FALSE sein! Durch die Addition/Subtraktion der beiden Zahlenwerte bei der Ermittlung von dx und dy kann die Position des Popup-Menüs noch optimiert werden. Durch die Verwendung von FixedCols/FixedRows wird das Öffnen des PopUp für alle nicht verschiebbaren (grau hinterlegten) Zellen verhindert.
procedure TfoTest9.StringGrid1MouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
var iCol,iRow, dx,dy : Integer; begin if Button=mbRight then with StringGrid1 do begin MouseToCell(X,Y,iCol,iRow); if iCol>=FixedCols then if iRow>=FixedRows then begin Col:=iCol; Row:=iRow; dx :=foTest9.Left+StringGrid1.Left-10; // -10 << adjusts Popup relative to cursor dy :=foTest9.Top +StringGrid1.Top +20; // +20 << adjusts Popup relative to cursor PopUpMenu1.Popup(X+dx,Y+dy); end; end; end; Gruß Ralph |
Re: StringGrid und Popup
Der lösungsansatz ist genauso gut wie der andere aber wie mach ich das jetzt das, das popup in der Spalte 0 nicht auf geht mein ansatz geht nicht fehlerfrei
|
Re: StringGrid und Popup
Ich kann es gerade nicht ausprobieren, aber versuch es mal so:
Delphi-Quellcode:
procedure TForm7.StringGridPopupPopup(Sender: TObject);
var iCol,iRow: integer; Position: TPoint; begin Position := StringGrid1.ScreenToClient(Mouse.CursorPos); StringGrid1.MouseToCell(Position.X,Position.Y,iCol,iRow); if iCol = 0 then abort else begin StringGrid1.Col:= iCol; StringGrid1.Row:= iRow; end; end; |
Re: StringGrid und Popup
Moin, Moin Sascha.
Genau DAS wird doch mit meinem Code verhindert: das Öffnen des PopUps über Spalte 0 / Zeile 0 (sofern diese als FIXED deklariert sind) - hast du den Code-Schnipsel denn nicht ausprobiert?? Gruß Ralph |
Re: StringGrid und Popup
doch hab ich aber es geht trotzdem auf
|
Re: StringGrid und Popup
Na, ich glaub mich laust ein Affe!
Bei mir funktioniert das einwandfrei! Hast du denn FixedRows=0 ??? |
Re: StringGrid und Popup
uuuuuuuuups da war ne 1 drin sorry jetzt gehts auch
|
Re: StringGrid und Popup
joooooo, ist schon ok :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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 by Thomas Breitkreuz