AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dbgrid + DoubleClick bzw. RowClick

Ein Thema von bwolf · begonnen am 16. Mär 2007 · letzter Beitrag vom 16. Mär 2007
Antwort Antwort
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

Dbgrid + DoubleClick bzw. RowClick

  Alt 16. Mär 2007, 14:17
Hi all,

in meinem DBGrid kann man per Doppelklick einen Datensatz auswählen, der daraufhin zum bearbeiten in einer neuen Maske angezeigt wird.
Soweit so gut, nun mein Problem:
Wenn im DBGrid ein Datensatz makiert ist, und man macht einen Doppelklick irgendwo ins Grid rein, wird die Maske ebenfalls angezeigt. Auch wenn man auf einen Title zu schnell 2x hintereinader klickt, wird die Bearbeiten-Maske angezeigt.

Ich würde es gern so haben, das nur, wenn man auf eine Row nen Doppelklick macht, die Maske angezeigt wird - leider hab ich keine Idee wie das zu lösen wäre.

Danke für eure Hilfe,
gruß ben
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Dbgrid + DoubleClick bzw. RowClick

  Alt 16. Mär 2007, 15:01
Hallo Ben,

probiere es mal so:

Delphi-Quellcode:
procedure TDemoForm.StringGridDblClick(Sender: TObject);
var
  iCol, iRow: Integer;
  pt: TPoint;
begin
  with Sender as TStringGrid do
  begin
    pt := ScreenToClient(Mouse.CursorPos);
    MouseToCell(pt.X, pt.Y, iCol, iRow);
    if (iCol in [FixedCols .. Pred(ColCount)])
    and (iRow in [FixedRows .. Pred(RowCount)])
      then ShowMessage('bulls eye')
      else ShowMessage('off shore');
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Dbgrid + DoubleClick bzw. RowClick

  Alt 16. Mär 2007, 15:35
Hi Marabu,

thx a lot für die Antwort

Ich habs ein bischen umgebaut, denke mal das es so passt.

Delphi-Quellcode:
procedure Tfrm_sachbearbeiter.dbgrid_uebersichtDblClick(Sender: TObject);
var
  iCol, iRow: Integer;
  pt: TPoint;
begin
  with Sender as TJvDBGrid do
  begin
    pt := ScreenToClient(Mouse.CursorPos);
    MouseToCell(pt.X, pt.Y, iCol, iRow);
    showmessage(inttostr(iCol)+' '+inttostr(iRow));
    if iRow > 0 then DataModule1.ActionList1.Actions[5].Execute;
  end;
end;
Mich würde jetzt noch interessieren, warum es so nicht klappt:
Delphi-Quellcode:
  pt := ScreenToClient(Mouse.CursorPos);
  TJVDbGrid(Sender).MouseToCell(pt.X, pt.Y, iCol, iRow);
  showmessage(inttostr(iCol)+' '+inttostr(iRow));
Danke nochmal, jetzt kann ich bald beruhigt ins Wochenende gehn
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Dbgrid + DoubleClick bzw. RowClick

  Alt 16. Mär 2007, 16:04
Vielleicht rufst du in dem fraglichen Code die Methode ScreenToClient() von der falschen Komponente (Form) auf?

Dabei ergeben sich natürlich auch falsche Koordinatenwerte für MouseToCell()...
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:28 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