Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Zeile in StringGrid mit rechter Maustaste markieren ? (https://www.delphipraxis.net/83425-zeile-stringgrid-mit-rechter-maustaste-markieren.html)

walharth 2. Jan 2007 16:17


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.

ibp 2. Jan 2007 17:29

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:
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;
ps: frohes neues!

Lannes 3. Jan 2007 07:29

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

Reinhard Kern 3. Jan 2007 12:21

Re: Zeile in StringGrid mit rechter Maustaste markieren ?
 
Zitat:

Zitat von walharth
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.

Hallo,

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

ibp 3. Jan 2007 15:46

Re: Zeile in StringGrid mit rechter Maustaste markieren ?
 
Zitat:

Zitat von Lannes
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

... nicht nur das man muss auch noch auf den äusseren rand testen sonst gibbets nen prob....

Delphi-Quellcode:
..
    if   (aGridCoord.y >= stringgrid1.FixedRows)
      and (aGridCoord.y < stringgrid1.RowCount)
      and (aGridCoord.x >= stringgrid1.FixedCols)
      and (aGridCoord.x < stringgrid1.ColCount) then
    begin
      // zelle markieren
..
... oder besser man testet auf ist agridcoord <> -1

Delphi-Quellcode:
..
    if   (aGridCoord.y >= stringgrid1.FixedRows)
      and (aGridCoord.y > -1)
      and (aGridCoord.x >= stringgrid1.FixedCols)
      and (aGridCoord.x > -1) then
    begin
      // zelle markieren
..

Lannes 3. Jan 2007 22:02

Re: Zeile in StringGrid mit rechter Maustaste markieren ?
 
Hallo,

mit
Delphi-Quellcode:
aGridCoord.y >= stringgrid1.FixedRows
fange ich doch auch ab wenn
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:

Zitat von Reinhard Kern
...
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.
...

also mein Explorer markiert bei einem Rechtsklick auf einen Ordner oder eine Datei das angeklickte Element, 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.

Kann man das Verhalten des Explorers diesbezüglich umstellen?

Reinhard Kern 4. Jan 2007 00:46

Re: Zeile in StringGrid mit rechter Maustaste markieren ?
 
Zitat:

Zitat von Lannes
...
Zitat:

Zitat von Reinhard Kern
...
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.
...

also mein Explorer markiert bei einem Rechtsklick auf einen Ordner oder eine Datei das angeklickte Element, 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.

Kann man das Verhalten des Explorers diesbezüglich umstellen?

Ich sage doch, das ist unerheblich, kann man also machen wie man will - jedenfalls muss man nur 1 x klicken. Also noch einmal gaaaanz langsam: auf Rechstklick folgt Markieren, wenn man das will, und unmittelbar danach und ohne 2. Klick geht das Popup-Menu auf. Oder klickst du beim Explorer tatsächlich 2 x rechts, um etwas zu löschen? Dann würde ich mich nach einem anderen umsehen...

Gruss Reinhard

Lannes 4. Jan 2007 09:54

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 von Reinhard Kern
...
beim Rechtsklicken (...Eigenschaften) ist es eigentlich nicht üblich, VORHER etwas zu markieren - siehe Explorer
...

das hatte ich wohl zu sehr aus der Sicht des Entwicklers interpretiert.

Zitat:

Zitat von Reinhard Kern
...
Ob man dazu eine Markierung setzt und anzeigt, ist recht unerheblich.
...

Ob man dazu eine Markierung setzt und anzeigt, ist nicht unerheblich, denn der Anwender soll sehen was über die Menü-Befehle bearbeitet wird.

Das StringGrid setzt keine Markierung bei einem Rechtsklick,
und darum geht es walharth vermutlich.

ibp 4. Jan 2007 10:29

Re: Zeile in StringGrid mit rechter Maustaste markieren ?
 
Zitat:

Zitat von Lannes
..mit
Delphi-Quellcode:
aGridCoord.y >= stringgrid1.FixedRows
fange ich doch auch ab wenn
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:

..click mal mit der oberen methode, ohne test auf -1, unterhalb von der letzten reihe des grids oder auch neben die letzten spalte!

Lannes 4. Jan 2007 11:15

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.
Seite 1 von 2  1 2      

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