[Gelöst] Rechte MT und Popup in Drawgrid

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 977
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 19.3 Cinnamon / FPC/Lazarus
CPU-Target: Intel i7 64/32 Bit
Wohnort: Freiburg

[Gelöst] Rechte MT und Popup in Drawgrid

Beitrag von MacWomble »

Für euch sicher kein Problem, aber ich bekomme es nicht hin :oops:

Ich habe ein PopupMenu mit einem Drawgrid verknüpft und kann dieses nun mit der rechten Maustaste aufrufen.
Nun möchte ich aber, dass zuächst die Zeile unter dem Mauszeiger zur aktuellen Zeile gemacht wird, so dass das Menu auf diese Zeile angewendet werden kann.
Zuletzt geändert von MacWomble am Do 14. Mär 2019, 19:54, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 619
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Rechte MT und Popup in Drawgrid

Beitrag von fliegermichl »

Im OnPopup des PopupMenüs DrawGrid.GetChildAccessibleObjectAtPos aufrufen und in einer Variablen merken.
Im Onclick des Popupmenüeitems kannst du dann damit hantieren.

MacWomble
Lazarusforum e. V.
Beiträge: 977
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 19.3 Cinnamon / FPC/Lazarus
CPU-Target: Intel i7 64/32 Bit
Wohnort: Freiburg

Re: Rechte MT und Popup in Drawgrid

Beitrag von MacWomble »

Danke, ich werde das später versuchen.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 977
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 19.3 Cinnamon / FPC/Lazarus
CPU-Target: Intel i7 64/32 Bit
Wohnort: Freiburg

Re: Rechte MT und Popup in Drawgrid

Beitrag von MacWomble »

Gibt es hierzu irgendwo ein Beispiel?

Die Zeile soll markiert, dann das Popup ausgeführt werden.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 619
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Rechte MT und Popup in Drawgrid

Beitrag von fliegermichl »

Hab's grad mal ausprobiert. Geht so nicht. aber so:
TDrawGrid.MouseToCell ist der Schlüssel.

Code: Alles auswählen

 
type
 
 { TForm1 }
 
 TForm1 = class(TForm)
  DrawGrid1: TDrawGrid;
  MenuItem1: TMenuItem;
  PopupMenu1: TPopupMenu;
  procedure DrawGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
   aRect: TRect; aState: TGridDrawState);
  procedure DrawGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
   var CanSelect: Boolean);
  procedure MenuItem1Click(Sender: TObject);
  procedure PopupMenu1Popup(Sender: TObject);
 private
  fCol, fRow : integer;
 public
 
 end;
 
var
 Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.PopupMenu1Popup(Sender: TObject);
var O : TObject;
    mp : TPoint;
begin
 mp := DrawGrid1.ScreenToClient(Mouse.CursorPos);
 DrawGrid1.MouseToCell(mp.x, mp.y, fCol, fRow);
end;
 
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
 aRect: TRect; aState: TGridDrawState);
begin
 DrawGrid1.Canvas.TextOut(aRect.Left + 3, aRect.Top + 3, Format('%d / %d', [aRow, aCol]));
end;
 
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
 var CanSelect: Boolean);
begin
 
end;
 
procedure TForm1.MenuItem1Click(Sender: TObject);
var s : string;
    cs : boolean;
begin
 DrawGrid1.Row := fRow;
 DrawGrid1.Col := fCol;
 cs := true;
 DrawGrid1SelectCell(self, fCol, fRow, cs);
end;
 

MacWomble
Lazarusforum e. V.
Beiträge: 977
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 19.3 Cinnamon / FPC/Lazarus
CPU-Target: Intel i7 64/32 Bit
Wohnort: Freiburg

Re: Rechte MT und Popup in Drawgrid

Beitrag von MacWomble »

Danke, da hat nun deutlich geholfen!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten