![]() |
Zeile in StringGrid mit rechter Maustaste markieren ?
Hallo,
Könnte mir jemand weiterhelfen, wie ich in Delphi eine Zeile in einem StringGrid mittels der rechten Maustaste auswählen (markieren) kann ? Ich brauche diese Funktion, um gleichzeitig ein Popup-Menü einzublenden, was ja auch mit der rechten Muastaste geht. Ein Klick mit der linken Maustaste auf die gewünschte Zeile und dann nochmals mit der rechten Maustaste das Popup-Menü einblenden ist etwas zu umständlich für den Benutzer... Vielen Dank im voraus, für eure Tips... MfG, J. |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
herzlich willkommen bei dp! :dp:
...im mousedown-ereignis musst du mit den koordinaten der maus die zelle aktivieren...
Delphi-Quellcode:
ps: frohes neues!
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var aGridCoord:TGridCoord; begin if Shift = [ssRight] then // nur rechte maustaste begin // mauskoordinaten in gridkoordinaten aGridCoord:=stringgrid1.MouseCoord(x,y); // zelle markieren stringgrid1.Row:=aGridCoord.y; stringgrid1.Col:=aGridCoord.x; //.. hier deine menudingenskirchenabhanlung rein end; // if Shift in [ssRight] end; |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Hallo,
wenn fixierte Zeilen oder Spalten vorhanden sind, zusätzlich noch eine Markierung derselben verhindern, sonst kommt das Grid ein wenig durcheinander:
Delphi-Quellcode:
if (aGridCoord.y >= StringGrid1.FixedRows) and (aGridCoord.x >= StringGrid1.FixedCols) then
//jetzt markieren |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Zitat:
beim Rechtsklicken (...Eigenschaften) ist es eigentlich nicht üblich, VORHER etwas zu markieren - siehe Explorer, ich gehe mit der Maus über ein Verzeichnis und klicke rechts, wähle Eigenschaften mit EINEM Klick. Alles andere wäre unnötig kompliziert. Ob man dazu eine Markierung setzt und anzeigt, ist recht unerheblich. Man muss nur wissen, über welchem Objekt sich die Maus beim Rechtsklick befand. Gruss Reinhard |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Zitat:
Delphi-Quellcode:
... oder besser man testet auf ist agridcoord <> -1
..
if (aGridCoord.y >= stringgrid1.FixedRows) and (aGridCoord.y < stringgrid1.RowCount) and (aGridCoord.x >= stringgrid1.FixedCols) and (aGridCoord.x < stringgrid1.ColCount) then begin // zelle markieren ..
Delphi-Quellcode:
..
if (aGridCoord.y >= stringgrid1.FixedRows) and (aGridCoord.y > -1) and (aGridCoord.x >= stringgrid1.FixedCols) and (aGridCoord.x > -1) then begin // zelle markieren .. |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Hallo,
mit
Delphi-Quellcode:
fange ich doch auch ab wenn
aGridCoord.y >= stringgrid1.FixedRows
aGridCoord.y den Wert -1 liefert. Begründung: FixedRows ist immer größer -1, der mögliche Minimalwert ist 0. Oder hab ich mich jetzt irgendwie verpeilt :gruebel: Zitat:
Kann man das Verhalten des Explorers diesbezüglich umstellen? |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Zitat:
Gruss Reinhard |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Hallo,
ich Klicke nicht 2x rechts, hab ich nirgendwo geschrieben. Nochmal ausführlicher/ergänzt: also mein Explorer markiert bei einem Rechtsklick auf einen Ordner oder eine Datei das angeklickte Element und ruft das Menü auf, wenn dem nicht so wäre, würde ich mir einen anderen Dateimanager suchen, denn ich will sehen welche Datei ich mit der Maus getroffen habe, bevor ich sie lösche. Der Satz bezog sich im wesentlichen auf die Aussagen: Zitat:
Zitat:
Das StringGrid setzt keine Markierung bei einem Rechtsklick, und darum geht es walharth vermutlich. |
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Zitat:
|
Re: Zeile in StringGrid mit rechter Maustaste markieren ?
Hallo,
hab ich getestet, keine Change einen Fehler zu erzeugen. Ist imho auch nicht möglich. man klicke unterhalb: >> aGridCoord.y hat den Wert -1 Einstellung: >> FixedRow = 0 Abfrage: >> if -1 >= 0 then >> False >> Markierung wird nicht ausgeführt Wie wirkt sich der Fehler denn bei Dir aus? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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