Текущий архив: 2007.12.23;
Скачать: CL | DM;
ВнизКак DBGrid отображает несколько записей, не меняя RecNo датасета? Найти похожие ветки
← →
TheEd (2007-11-29 06:36) [0]Интересен один вопрос:
для того, чтобы заполнить таблицу данными, DBGrid у назначенного DataSource.DataSet не меняет RecNo. Как же он получает записи для отображения при начальной прорисовке или прокрутке?
← →
Anatoly Podgoretsky © (2007-11-29 09:19) [1]Исходные коды тебе полностью доступны, смотри папку Source
← →
ЮЮ © (2007-11-29 09:25) [2]Что значит не меняет?
в OnDraw... грида DataSet спозиционирован именно на той записи, которую он отрисовывает. А чтобы заполнить таблицу данными он пробегает по всем записям, видимым в гриде:
procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
...
Value := "";
OldActive := FDataLink.ActiveRecord;
try
FDataLink.ActiveRecord := ARow;
if Assigned(DrawColumn.Field) then
Value := DrawColumn.Field.DisplayText;
Highlight := HighlightCell(ACol, ARow, Value, AState);
if Highlight then
begin
Brush.Color := clHighlight;
Font.Color := clHighlightText;
end;
if not Enabled then
Font.Color := clGrayText;
if FDefaultDrawing then
WriteText(Canvas, ARect, 2, 2, Value, DrawColumn.Alignment,
UseRightToLeftAlignmentForField(DrawColumn.Field, DrawColumn.Alignment));
if Columns.State = csDefault then
DrawDataCell(ARect, DrawColumn.Field, AState);
DrawColumnCell(ARect, ACol, DrawColumn, AState);
finally
FDataLink.ActiveRecord := OldActive;
end;
З.Ы. может твой датасет поддерживает RecNo на уровне базового?function TDataSet.GetRecNo: Integer;
begin
Result := -1;
end;
procedure TDataSet.SetRecNo(Value: Integer);
begin
end;
:)
← →
Johnmen © (2007-11-29 09:56) [3]
> А чтобы заполнить таблицу данными он пробегает по всем
> записям, видимым в гриде
Ну если быть точным, то по записям в буфере.
http://sql.ru/forum/actualthread.aspx?bid=20&tid=497291
← →
ЮЮ © (2007-11-29 10:20) [4]> Ну если быть точным, то по записям в буфере.
В OnDraw... грида я могу получать данные непосредственно из отображаемого DataSeta.
А в буфере они или нет, одна строка в буфере или несколько, дело десятое. Важно то, что
DataSeta скроллируется, однако без побчных эффектов, т.e. TDataSet.DoAfterScroll, например, из-за этого не возникает
← →
Anatoly Podgoretsky © (2007-11-29 11:24) [5]> ЮЮ (29.11.2007 10:20:04) [4]
Так грид знает что делает :-)
← →
ЮЮ © (2007-11-29 11:30) [6]> [5] Anatoly Podgoretsky © (29.11.07 11:24)
> > ЮЮ (29.11.2007 10:20:04) [4]
>
> Так грид знает что делает :-)
и DataSet знает, что его "делают", но вида при этом не показывает.
← →
Anatoly Podgoretsky © (2007-11-29 11:50) [7]> ЮЮ (29.11.2007 11:30:06) [6]
Массонский заговор.
Страницы: 1 вся ветка
Текущий архив: 2007.12.23;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.05 c