![]() |
dbgrid multiselect, selektierte ids erhalten ?
Delphi-Quellcode:
wo gebe ich jetzt das fieldvalue an also id, das ich in meiner showmessage alle ids bekomme, die ich selektiert habe ?
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; |
Re: dbgrid multiselect, selektierte ids erhalten ?
sollte so gehen
Delphi-Quellcode:
Gruß
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; |
Re: dbgrid multiselect, selektierte ids erhalten ?
Noch eine Variante:
Delphi-Quellcode:
Grüße vom marabu
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; |
Re: dbgrid multiselect, selektierte ids erhalten ?
marabu, danke dir..so geht es und nur so .. ! zumindest geht der source drüber nicht ! ;) ! danke nochmal
|
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 |
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. |
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:
denke ich mal werden die selektierten sätze im dataset angesteuert je nach selektion im dbgrid nehme ich an...
ds.GotoBookmark(Pointer(dbgrid1.selectedrows.Items[i]));
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.... |
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.
|
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? |
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 18:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz