![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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