AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zeile in StringGrid mit rechter Maustaste markieren ?
Thema durchsuchen
Ansicht
Themen-Optionen

Zeile in StringGrid mit rechter Maustaste markieren ?

Ein Thema von walharth · begonnen am 2. Jan 2007 · letzter Beitrag vom 4. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
walharth

Registriert seit: 12. Nov 2006
13 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 2. Jan 2007, 17:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 2. Jan 2007, 18:29
herzlich willkommen bei 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!
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#3

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 3. Jan 2007, 08:29
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
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 3. Jan 2007, 13:21
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
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 3. Jan 2007, 16:46
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
..
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 3. Jan 2007, 23:02
Hallo,

mit 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


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?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#7

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 4. Jan 2007, 01:46
Zitat von Lannes:
...
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
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 4. Jan 2007, 10:54
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 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 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.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 4. Jan 2007, 11:29
Zitat von Lannes:
..mit 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
..click mal mit der oberen methode, ohne test auf -1, unterhalb von der letzten reihe des grids oder auch neben die letzten spalte!
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#10

Re: Zeile in StringGrid mit rechter Maustaste markieren ?

  Alt 4. Jan 2007, 12:15
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?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz