Delphi-PRAXiS
Seite 2 von 2     12   

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/)
-   -   DBGrid Right Click (https://www.delphipraxis.net/155088-dbgrid-right-click.html)

-187- 9. Okt 2010 13:40

AW: DBGrid Right Click
 
Hm weiss nicht so recht wie ich das anwenden soll. Ich merke mir den aktuellen Datensatz:
Code:
Cell:=DBGrid1.SelectedField.AsString;
Und nach danach spring ich da mit Locate wieder hin. Aber aus deinem Code kann man ja sehen das du dir die Scrollbar Position merkst, und diese dann wieder anfährst. Die Idee ist perfekt, jedoch hat das bei mir noch nicht geklappt:

Code:
var
  Cell: String;
  TempScrollInfo: SCROLLINFO;
begin
  if Button = mbRight then
  begin
    TempScrollInfo.cbSize := SizeOf(SCROLLINFO);
    TempScrollInfo.fMask := SIF_POS;
    GetScrollInfo(DBGrid1.Handle, SB_HORZ, TempScrollInfo);
    Cell:=DBGrid1.SelectedField.AsString;
    GridDeSelectAll(DBGrid1);
    DBGrid1.DataSource.DataSet.Locate('NUMBER',Cell,[loPartialKey,loCaseInsensitive]);
    DBGrid1.SelectedRows.CurrentRowSelected:=True;
    SetScrollInfo(DBGrid1.Handle, SB_HORZ, TempScrollInfo, True);
    PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
  end;
end;

-187- 9. Okt 2010 13:51

AW: DBGrid Right Click
 
Das seltsame ist auch, mein DBGrid zeigt immer 20 Datensätze. Wenn ich in diesen ersten 20 Datensätzen den Rechtsclick mache dann hab ich das Problem nicht ! Nur wenn ich scrolle und bei Datensätzen > 20 den Rechtsclick mache dann springt der angeklickte Datensatz in die letzte angezeigte Row.

rapante 9. Okt 2010 14:09

AW: DBGrid Right Click
 
Du hast den "falschen" Teil genommen.
Damit setzt du nur die horizontale Scrollbar.

Du brauchst den Part mit row und rowdelta...

toms 9. Okt 2010 14:10

AW: DBGrid Right Click
 
Zitat:

Zitat von -187- (Beitrag 1054665)
GetScrollInfo(DBGrid1.Handle, SB_HORZ, TempScrollInfo);

Soll es sich wirklich die horizontale Position merken?

-187- 9. Okt 2010 14:13

AW: DBGrid Right Click
 
Hm natürlich nicht :) Mal wieder verwechselt. Ja ich brauche die verticale Position.

Code:
rowDelta := -1 + MyDBGrid.Row;
Mein DBGrid1 kennt kein .Row :cry:

toms 9. Okt 2010 14:24

AW: DBGrid Right Click
 
Zitat:

Zitat von -187- (Beitrag 1054675)
Mein DBGrid1 kennt kein .Row :cry:

Hat es schon, aber es ist protected.

Mit diesem "Hack" kannst du auf Row zugreifen:

Delphi-Quellcode:
type
  TMyGrid = class(TDBGrid)
end;
   
TMyGrid(DbGrid1).Row;

rapante 9. Okt 2010 14:32

AW: DBGrid Right Click
 
Zitat:

Zitat von -187- (Beitrag 1054675)
Mein DBGrid1 kennt kein .Row :cry:

Oh, hab' ich nicht dran gedacht...

Row ist eine property von TCustomGrid und im DBGrid nicht sichtbar.
Ich hatte mir eine eigene Grid-Klasse von DBGrid abgeleitet und die Property dort
publiziert (vielleicht kommt man da auch anders dran (cast?))

Edit: mit dem "Hack" gehts natürlich auch ;)

-187- 9. Okt 2010 14:35

AW: DBGrid Right Click
 
Jap hat alles geklappt. Danke für eure Hilfe und dem prima Code :)!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.
Seite 2 von 2     12   

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