Discussion:
DbGrid - numerowanie wierszy
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Rafal Kubiak
18 lat temu
Permalink
Witam
Czy jest jakiś prosty sposób na numerowanie wierszy dbgrida? Chodzi o taką
zwykłą liczbę porządkową, która po prostu ponumeruje wiersze. Googlałem
trochę, ale specjalnie nic nie ma. Da sie to zrobić?

Pozdrawiam
Skomoroch
18 lat temu
Permalink
Post by Rafal Kubiak
Witam
Czy jest jakiś prosty sposób na numerowanie wierszy dbgrida? Chodzi o taką
zwykłą liczbę porządkową, która po prostu ponumeruje wiersze. Googlałem
trochę, ale specjalnie nic nie ma. Da sie to zrobić?
Pozdrawiam
mysle, ze nie ma. grid co najwyzej moze po napisaniu odp.funkcji ponumerowac
wiersze, ktore wyswietla, o pozostalych z dataseta po prostu nie ma pojecia.
Rajmund Wrotek
18 lat temu
Permalink
Post by Skomoroch
Post by Rafal Kubiak
Witam
Czy jest jakiś prosty sposób na numerowanie wierszy dbgrida? Chodzi o taką
zwykłą liczbę porządkową, która po prostu ponumeruje wiersze. Googlałem
trochę, ale specjalnie nic nie ma. Da sie to zrobić?
Pozdrawiam
mysle, ze nie ma. grid co najwyzej moze po napisaniu odp.funkcji ponumerowac
wiersze, ktore wyswietla, o pozostalych z dataseta po prostu nie ma pojecia.
...add a Row Number in your DBGrid?
Autor: eko schuscanto
Homepage: http://www.schuscanto.com
[ Print tip ]

Tip Rating (42):





{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. create new blank field in dbgrid
2. rename the title with 'No'
3. put this code in OnDrawColumncell
4. Now your Grid has a row number
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataSource1.DataSet.RecNo > 0 then
begin
if Column.Title.Caption = 'No' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top,
IntToStr(DataSource1.DataSet.RecNo));
end;
end;




begin 666 progressbar-grau.gif
M1TE&.#EA!P`.`,0``````/___]77]A8CS1LGSAXKSSQ'U45/UU%;VE9?VWA_
MXHV3YI"7YYJ?Z=#3]=W?^/___P``````````````````````````````````
M`````````````````````````"'Y! $``! `+ `````'``X```478"".9&F>
3P>.L3["^C@#/=$V[,.F@? @`.P``
`
end

begin 666 progressbar-blau.gif
M1TE&.#EA!P`.`+,``````/___]'3]>;G^A<DS20PT# \TEIDW%]HW'B XH&(
MY)&7Y]W?^/+S_/K[_O___R'Y! $```\`+ `````'``X```0B,,A)J[UA**1&
;$ 4A%LPAGD=X$H6Q$L;R+DYR)H[4" V&10`[
`
end
Rajmund Wrotek
18 lat temu
Permalink
Post by Skomoroch
Post by Rafal Kubiak
Witam
Czy jest jakiś prosty sposób na numerowanie wierszy dbgrida? Chodzi o taką
zwykłą liczbę porządkową, która po prostu ponumeruje wiersze. Googlałem
trochę, ale specjalnie nic nie ma. Da sie to zrobić?
Pozdrawiam
mysle, ze nie ma. grid co najwyzej moze po napisaniu odp.funkcji ponumerowac
wiersze, ktore wyswietla, o pozostalych z dataseta po prostu nie ma pojecia.
sorry, poprzednim razem (nie wiem czemu) poszło w html-u

...add a Row Number in your DBGrid?
Autor: eko schuscanto
Homepage: http://www.schuscanto.com

{++++++++++++++++++++++++++++++++++++++++++++++++++++
1. create new blank field in dbgrid
2. rename the title with 'No'
3. put this code in OnDrawColumncell
4. Now your Grid has a row number
+++++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataSource1.DataSet.RecNo > 0 then
begin
if Column.Title.Caption = 'No' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top,
IntToStr(DataSource1.DataSet.RecNo));
end;
end;
Morff
18 lat temu
Permalink
Post by Rajmund Wrotek
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataSource1.DataSet.RecNo > 0 then
begin
if Column.Title.Caption = 'No' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top,
IntToStr(DataSource1.DataSet.RecNo));
end;
end;
Fajnie .. ale nie zawsze zadziała , są datasety które nie wiedzą ile
rekordów zciagaja.
--
Pozdrawiam
Morff
--------------------
AQQ : 141151 (***@aqq.eu)
wloochacz
18 lat temu
Permalink
[ciach]
Post by Morff
Fajnie .. ale nie zawsze zadziała , są datasety które nie wiedzą ile
rekordów zciagaja.
Racja, ale jak ktoś potrzebuje RowNumber, to powinien zrobić FetchAll -
imho...
--
wloochacz
Morff
18 lat temu
Permalink
Post by wloochacz
[ciach]
Post by Morff
Fajnie .. ale nie zawsze zadziała , są datasety które nie wiedzą ile
rekordów zciagaja.
Racja, ale jak ktoś potrzebuje RowNumber, to powinien zrobić FetchAll -
imho...
tak :) jeśli chce mieć numer rekordu z RowNumber to powinien zrobić
FetchAll ...
ale pytanie czy powinien robić FetchAll tylko po to zeby zobaczyć
RowNumber ... np w przypadku tabeli z tysiącami rekordów ..
--
Pozdrawiam
Morff
--------------------
AQQ : 141151 (***@aqq.eu)
wloochacz
18 lat temu
Permalink
[ciach]
Post by Morff
tak :) jeśli chce mieć numer rekordu z RowNumber to powinien zrobić
FetchAll ...
Uściślając - jeśli chce mieć RowNumber robione przez klienta. Da się to
zrobić na serwerze ;-)
Post by Morff
ale pytanie czy powinien robić FetchAll tylko po to zeby zobaczyć
RowNumber ... np w przypadku tabeli z tysiącami rekordów ..
Wiesz równie dobrze jak ja, że RowNumber raczej na pewno nie stosuje się
w takim przypadku, a nawet jeśli - FetchAll 12 000 rekordów z UDF'a do
cxGrida na AnyDAC i MSSQL to ~2s. Można szybciej, ale po co?
po prostu w moim przypadku nie warto tego optymalizować ;-)
Ach i jeszcze jedno - nie zawsze trzeba robić FetchAll; sprytne datasety
(FIBPlus, AnyDAC) robią select count(*) zamiast FetchAll :-)
--
wloochacz
Morff
18 lat temu
Permalink
Post by wloochacz
[ciach]
Post by Morff
tak :) jeśli chce mieć numer rekordu z RowNumber to powinien zrobić
FetchAll ...
Uściślając - jeśli chce mieć RowNumber robione przez klienta. Da się to
zrobić na serwerze ;-)
W oracle jest pseudokolumna rownum ..
Post by wloochacz
Wiesz równie dobrze jak ja, że RowNumber raczej na pewno nie stosuje się
w takim przypadku,
no własnie :) .. dlatego to rozwiązanie z rownum jakos nie przypadło mi do
gustu ..
--
Pozdrawiam
Morff
--------------------
AQQ : 141151 (***@aqq.eu)
Morff
18 lat temu
Permalink
Post by Morff
no własnie :) .. dlatego to rozwiązanie z rownum jakos nie przypadło mi
do gustu ..
z RowNumber oczywiscie :)
--
Pozdrawiam
Morff
--------------------
AQQ : 141151 (***@aqq.eu)
Krzysztof Szyszka
18 lat temu
Permalink
Post by Rafal Kubiak
Witam
Czy jest jakiś prosty sposób na numerowanie wierszy dbgrida? Chodzi o taką
zwykłą liczbę porządkową, która po prostu ponumeruje wiersze. Googlałem
trochę, ale specjalnie nic nie ma. Da sie to zrobić?
Poszukaj dbgrida, który ma już taką funkcjonalność wbudowaną.

Możesz zacząć tu: http://www.x-files.pl/pl/components/index.html
Ustawiając dgForceSequence w Options i AutoNumber w wybranej
kolumnie, będziesz miał automatczną liczbę porządkową dla dowolnego
DataSetu nawet przy włączonym filtrowaniu.
--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland Technology Partner
_________________________________________
Website: http://www.x-files.pl/ E-mail: ***@x-files.pl
Loading...