Thread View: pl.comp.lang.delphi
5 messages
5 total messages
Started by ExM
Mon, 22 Jan 2018 15:11
Wybieranie pozycji z XDBGrid
Author: ExM
Date: Mon, 22 Jan 2018 15:11
Date: Mon, 22 Jan 2018 15:11
14 lines
1826 bytes
1826 bytes
Hej, szukam optymalnego rozwiązania do wybrania zaznaczonych wpisów na XDBGrid Mam grida i powiedzmy 2 kolumny W XDBGRid.Columns[0] - mam CheckBox'a do wyboru wierszy (bez powiązania z DB) W XDBGRid.Columns[1] - mam ID rekordu w bazie danych który chce np. usunąć Jak wykonać przejście po XDBGridzie aby uzyskać ID rekordów do usunięcia? Zwykle leciałem po samym DataSet'cie ale odnosiłem się tylko do wartości które w nim występowały a tutaj muszę jakoś się dowiedzieć czy jest zaznaczony chceckbox w gridzie... Możecie podpowiedzieć jak to ruszyć? ExM
Re: Wybieranie pozycji z XDBGrid
Author: Krzysztof Szyszka
Date: Mon, 22 Jan 2018 16:39
Date: Mon, 22 Jan 2018 16:39
37 lines
2233 bytes
2233 bytes
> Hej,
> szukam optymalnego rozwiązania do wybrania zaznaczonych wpisów na XDBGrid
>
> Mam grida i powiedzmy 2 kolumny
> W XDBGRid.Columns[0] - mam CheckBox'a do wyboru wierszy (bez powiązania z DB)
> W XDBGRid.Columns[1] - mam ID rekordu w bazie danych który chce np. usunąć
>
> Jak wykonać przejście po XDBGridzie aby uzyskać ID rekordów do usunięcia?
>
> Zwykle leciałem po samym DataSet'cie ale odnosiłem się tylko do wartości które w nim występowały a
> tutaj muszę jakoś się dowiedzieć czy jest zaznaczony chceckbox w gridzie...
>
> Możecie podpowiedzieć jak to ruszyć?
Możesz wykonać analogiczną iterację po XDBGrid.SelectedRows, albo skorzystać z metody
XDBGrid.ForEachDataRow z parametrem reSelectedRows:
function TMainForm.GetSelectedID(DBGrid: TXDBGrid; ID: TField): string;
var
ID_List: string;
begin
ID_List := '';
DBGrid.ForEachDataRow(reSelectedRows,
procedure
begin
if ID_List = '' then ID_List := ID.Text
else ID_List := ID_List + ', ' + ID.Text;
end);
Result := ID_List;
end;
--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-DBGrid Component
Embarcadero Technology Partner
http://www.x-files.pl/
Re: Wybieranie pozycji z XDBGrid
Author: ExM
Date: Tue, 23 Jan 2018 20:30
Date: Tue, 23 Jan 2018 20:30
27 lines
2415 bytes
2415 bytes
W dniu poniedziałek, 22 stycznia 2018 17:39:46 UTC+1 użytkownik Krzysztof Szyszka napisał:
> Możesz wykonać analogiczną iterację po XDBGrid.SelectedRows, albo skorzystać z metody
> XDBGrid.ForEachDataRow z parametrem reSelectedRows:
>
> function TMainForm.GetSelectedID(DBGrid: TXDBGrid; ID: TField): string;
> var
> ID_List: string;
> begin
> ID_List := '';
> DBGrid.ForEachDataRow(reSelectedRows,
> procedure
> begin
> if ID_List = '' then ID_List := ID.Text
> else ID_List := ID_List + ', ' + ID.Text;
> end);
> Result := ID_List;
> end;
Niestety ForEachDataRow dopiero od D2009 - a ja rzeźbię na D5 :D
Ale SelectedRows idealnie do tego się nadaje.
Zrobiłem to tak jak niżej - działa :)
if Lista.SelectedRows.Count > 0 then
for i : =0 to Lista.SelectedRows.Count - 1 do Begin
TabelaDanych.GotoBookmark(Pointer(Lista.SelectedRows.Items[i]));
>> tutaj procedura która ma być wykonana na danych rekordu z TabelaDanych
end;
Re: Wybieranie pozycji z XDBGrid
Author: Krzysztof Szyszka
Date: Wed, 24 Jan 2018 15:20
Date: Wed, 24 Jan 2018 15:20
45 lines
2496 bytes
2496 bytes
> > Możesz wykonać analogiczną iterację po XDBGrid.SelectedRows, albo skorzystać z metody > > XDBGrid.ForEachDataRow z parametrem reSelectedRows: > > > > function TMainForm.GetSelectedID(DBGrid: TXDBGrid; ID: TField): string; > > var > > ID_List: string; > > begin > > ID_List := ''; > > DBGrid.ForEachDataRow(reSelectedRows, > > procedure > > begin > > if ID_List = '' then ID_List := ID.Text > > else ID_List := ID_List + ', ' + ID.Text; > > end); > > Result := ID_List; > > end; > > Niestety ForEachDataRow dopiero od D2009 - a ja rzeźbię na D5 :D > Ale SelectedRows idealnie do tego się nadaje. > Zrobiłem to tak jak niżej - działa :) > > if Lista.SelectedRows.Count > 0 then > for i : =0 to Lista.SelectedRows.Count - 1 do Begin > TabelaDanych.GotoBookmark(Pointer(Lista.SelectedRows.Items[i])); > >> tutaj procedura która ma być wykonana na danych rekordu z TabelaDanych > end; I prawidłowo. A jak całość umieścisz jeszcze w takim bloku jak poniżej, to w XDBGridzie nie będzie widać, że skaczesz po zaznaczonych rekordach i wrócisz w to samo miejsce. Lista.DisablePosition; try // tu Twój kod finally Lista.EnablePosition; end; -- pozdrowienia Krzysztof Szyszka, X-Files Software Developer of X-DBGrid Component Embarcadero Technology Partner http://www.x-files.pl/
Re: Wybieranie pozycji z XDBGrid
Author: ExM
Date: Thu, 25 Jan 2018 08:16
Date: Thu, 25 Jan 2018 08:16
10 lines
1728 bytes
1728 bytes
W dniu środa, 24 stycznia 2018 16:20:25 UTC+1 użytkownik Krzysztof Szyszka napisał: > Lista.DisablePosition; > try > // tu Twój kod > finally > Lista.EnablePosition; > end; o... super - dodaje do mojej bazy wiedzy :P
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads