Stringgrid OnClick ausserhalb der Rows

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Stringgrid OnClick ausserhalb der Rows

Beitrag von Vbxler »

Hallo an Alle,

ich habe ein Stringgrid, das ist mit einigen Zeilen gefüllt ist
und unter diesen Zeilen ist die leere Fläche für mögliche weitere Zeilen.
Wenn ich jetzt auf diese leer Fläche unterhalb klicke, bekomme ich eine
OnClick in der untersten Zeile in der darüberliegenden Spalte.

Gebt es eine Möglichkeit, dass ich ermitteln kann, ob ausserhalb der Rows geklickt wurde?
Vbxler
-------------------------

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Stringgrid OnClick ausserhalb der Rows

Beitrag von Socke »

Vbxler hat geschrieben:Gebt es eine Möglichkeit, dass ich ermitteln kann, ob ausserhalb der Rows geklickt wurde?
Ja: selber rechnen. Eine andere, vorgefertigte Möglichkeit ist mir nicht bekannt.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: Stringgrid OnClick ausserhalb der Rows

Beitrag von Vbxler »

Dann werde ich OnMouseDown verwenden, da bekomme ich x,y geliefert
und mit MouseToCell bekomme ich ja wieder die Row und Col.
Vbxler
-------------------------

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Stringgrid OnClick ausserhalb der Rows

Beitrag von Michl »

Dazu müsstest du noch AllowOutboundEvents auf False setzen, da du sonst immer die letzt möglichen Cols/Rows bekommst z.B:

Code: Alles auswählen

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  ACol,ARow:integer;
begin
  StringGrid1.AllowOutboundEvents:=False;
  StringGrid1.MouseToCell(X,Y,ACol,ARow);
  if ACol <> -1 then
    Caption:='Maus ist in Zelle ['+inttostr(ACol)+'/'+inttostr(ARow)+']'
  else
    Caption:='Maus befindet sich außerhalb des Zellenbereichs!';
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Stringgrid OnClick ausserhalb der Rows

Beitrag von theo »

Code: Alles auswählen

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
   if (Sender as TStringGrid).ScreenToClient(Mouse.CursorPos).Y >  (Sender as TStringGrid).GridHeight then ShowMessage('ausserhalb');
end;
 

Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: Stringgrid OnClick ausserhalb der Rows

Beitrag von Vbxler »

Vielen Dank für Eure hilfreichen Antworten.
Durch die tolle Hilfe in diesem Forum kann man viel lernen, was man sonst nie herausfinden würde.
Vbxler
-------------------------

Antworten