Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dbgrid multiselect, selektierte ids erhalten ? (https://www.delphipraxis.net/102080-dbgrid-multiselect-selektierte-ids-erhalten.html)

agm65 23. Okt 2007 09:40


dbgrid multiselect, selektierte ids erhalten ?
 
Delphi-Quellcode:
var
i:integer;
begin
for i := 0 to DBGridMain.SelectedRows.Count-1 do
begin
   showmessage(DBGridMain.DataSource.DataSet.GotoBookmark(pointer(DBGridMain.SelectedRows.Items[i])) );
end;

end;
wo gebe ich jetzt das fieldvalue an also id, das ich in meiner showmessage alle ids bekomme, die ich selektiert habe ?

Leuselator 23. Okt 2007 10:00

Re: dbgrid multiselect, selektierte ids erhalten ?
 
sollte so gehen
Delphi-Quellcode:
var
i:integer;
IdListe : String;
begin
  IdListe := '';
  for i := 0 to pred(DBGridMain.SelectedRows.Count) do
  begin
    if DBGridMain.DataSource.DataSet.GotoBookmark(pointer(DBGridMain.SelectedRows.Items[i]))
    then IdListe := IdListe+{TrennZeichen?+}DBGridMain.DataSource.DataSet.FieldByName('IdFeldName').AsString;
  end;
  showmessage('Gewählte ID''s: '+IdListe);
end;
Gruß

marabu 23. Okt 2007 10:00

Re: dbgrid multiselect, selektierte ids erhalten ?
 
Noch eine Variante:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  i: Integer;
  ds: TDataSet;
  bm: TBookmark;
  s: TStrings;
begin
  s := TStringList.Create;
  ds := DBGrid.DataSource.DataSet;
  ds.DisableControls;
  bm := ds.GetBookmark;
  with DBGrid.SelectedRows do
    for i := 0 to Pred(Count) do
    begin
      ds.GotoBookmark(Pointer(Items[i]));
      s.Add(ds.FieldByName('NAME').AsString);
    end;
  ds.GotoBookmark(bm);
  ds.FreeBookmark(bm);
  ds.EnableControls;
  ShowMessage(s.Text);
  s.Free;
end;
Grüße vom marabu

agm65 23. Okt 2007 10:05

Re: dbgrid multiselect, selektierte ids erhalten ?
 
marabu, danke dir..so geht es und nur so .. ! zumindest geht der source drüber nicht ! ;) ! danke nochmal

Andidreas 14. Aug 2009 11:47

Re: dbgrid multiselect, selektierte ids erhalten ?
 
@marabu...

ich hab hier gerade im forum nach einer möglichkeit gesucht wie ich an die in einem dbgrid selektierten datensätze herankomme...
dabei bin ich über deinen source hier gestolpert...

ich hab den source mal in mein programm kopiert und es funzt auch soweit...

bloß leider versteh ich manche sachen nicht ganz...
könntest du mir viell. kurz deine prozedur ein bißchen erklären?

vor allem was es mit den controls, bookmarks und "pred(count)" auf sich hat?

vielen dank

DeddyH 14. Aug 2009 11:56

Re: dbgrid multiselect, selektierte ids erhalten ?
 
Da marabu sich mittlerweile hier rar macht, versuche ich es einmal:
DisableControls verhindert das Neuzeichnen der angeschlossenen datengebundenen Komponenten beim Wechsel des aktuellen Datensatzes. Das spart Zeit und verhindert "Mäusekino". Bookmark ist ein "Lesezeichen", d.h. ein gemerkter Datensatz kann direkt angesprungen werden, ohne mit First etc. durchiterieren zu müssen. Und Pred() ermittelt den Vorgänger eines Wertes eines ordinalen Datentyps (entspricht also Wert - 1). Das Gegenteil davon wäre Succ(), was Wert + 1 entspricht.
Ich hoffe, das war halbwegs verständlich.

Andidreas 14. Aug 2009 12:07

Re: dbgrid multiselect, selektierte ids erhalten ?
 
@deddyh...

vielen dank erst mal für die schnelle antwort...

ok das mit den cotrols und pred is mir jetzt klar...

das mit dem bookmarks verstehe ich aber nur zum teil

hierdurch
Delphi-Quellcode:
      ds.GotoBookmark(Pointer(dbgrid1.selectedrows.Items[i]));
denke ich mal werden die selektierten sätze im dataset angesteuert je nach selektion im dbgrid nehme ich an...


aber warum hat er in der funktion eine variable TBookmark definiert???
ich habe bei mir alles auskommentiert was mit dieser variable zu tun hat und es funktioniert trotzdem noch alles wie davor....

DeddyH 14. Aug 2009 12:10

Re: dbgrid multiselect, selektierte ids erhalten ?
 
Er merkt sich vorher den aktuellen Datensatz, geht dann die selektierten durch und springt anschließend wieder zum gemerkten zurück.

Andidreas 14. Aug 2009 12:12

Re: dbgrid multiselect, selektierte ids erhalten ?
 
macht er bei mir auch ohne diese variable...

kann es vielleicht daran liegen das ich bei mir im dbgrid das dbrowselect auf true gesetzt habe?

DeddyH 14. Aug 2009 12:14

Re: dbgrid multiselect, selektierte ids erhalten ?
 
Ist vielleicht bei Dir der aktuelle Datensatz der unterste selektierte? Wenn ja, mach einmal einen anderen zum aktuellen und schau dann noch einmal.


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

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