Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь есть возможность читать онлайн «Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Советы по Delphi. Версия 1.4.3 от 1.1.2001: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Советы по Delphi. Версия 1.4.3 от 1.1.2001»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Советы по Delphi. Версия 1.4.3 от 1.1.2001», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

ifIndexOf(Items[x]) > -1 then begin

DBGrid1.Datasource.Dataset.Bookmark:= Items[x];

showmessage(DBGrid1.Datasource.Dataset.Fields[1].AsString);

end;

end;

end;

DBGrid1.Datasource.Dataset.GotoBookmark(TempBookmark);

DBGrid1.Datasource.Dataset.FreeBookmark(TempBookmark);

DBGrid1.Datasource.Dataset.EnableControls;

end;

{*Данный пример позволит вам установить закладку изатем найти ее в списке выбранных записей компонента DBGrid.*}

//Устанавливаем закдадку

procedureTForm1.GetBookMarkClick(Sender: TObject);

begin

Bookmark1:= DBGrid1.Datasource.Dataset.GetBookmark;

end;

//Освобождаем закладку

procedureTForm1.FreeBookmarkClick(Sender: TObject);

begin

ifassigned(Bookmark1) then begin

DBGrid1.Datasource.Dataset.FreeBookmark(Bookmark1);

Bookmark1:= nil;

end;

end;

//Испольуем метод Find для установления позиции

//записи-закладки в списке выбранных записей компонента DBGrid

procedureTForm1.FindClick(Sender: TObject);

begin

ifassigned(Bookmark1) then begin

ifDBGrid1.SelectedRows.Find(TBookMarkStr(Bookmark1),z) thenshowmessage(inttostr(z));

end;

end;

end.

Вертикальная полоса прокрутки Dbgrid

Delphi 1

Это небольшое исправление к исходному коду VCL, позволяющее поддерживать перемещение по таблице с помощью изменения позиции движка вертикальной полосы прокрутки.

(Примечание: это работает только с таблицами Paradox и BDE. Для использования этого кода с другими таблицами/движками вам необходимо заменить DBIGetSeqNo на функцию, надежно возвращающую текущую позицию записи вне зависимости от того, использует ли таблица индекс или нет.)

В DBGRID.PAS измените две следующих процедуры:

procedureTCustomDBGrid.UpdateScrollBar;

var

Pos: Integer;

mPos, mMax: longint;

begin

ifFDatalink.Active andHandleAllocated then

withFDatalink.DataSet do begin

UpdateCursorPos;

if(DBIGetSeqNo(Handle,mPos) = DBIERR_NONE) then begin

mMax := RecordCount;

whilemMax > 1000 do begin

mMax := mMax div10;

mPos := mPos div10;

end;

SetScrollRange(Self.Handle, SB_VERT, 1, mMax, False);

end else begin

ifBOF thenmPos := 0

else ifEOF thenmPos := 4

elsemPos := 2;

SetScrollRange(Self.Handle, SB_VERT, 0, 4, False);

end; (**)

ifGetScrollPos(Self.Handle, SB_VERT) <> mPos then

SetScrollPos(Self.Handle, SB_VERT, mPos, True);

end;

end;

procedureTCustomDBGrid.WMVScroll( var Message: TWMVScroll);

var

mMin, mMax: integer;

RecCount, RecNo, NewRecNo: longint;

begin

if notAcquireFocus thenExit;

ifFDatalink.Active then

with Message, FDataLink.DataSet, FDatalink do

caseScrollCode of

SB_LINEUP: MoveBy(-ActiveRecord - 1);

SB_LINEDOWN: MoveBy(RecordCount - ActiveRecord);

SB_PAGEUP: MoveBy(-VisibleRowCount);

SB_PAGEDOWN: MoveBy(VisibleRowCount);

SB_THUMBPOSITION:

if(DBIGetSeqNo(Handle,RecNo) = DBIERR_NONE) then begin

GetScrollRange(self.Handle, SB_VERT, mMin, mMax);

NewRecNo := Pos*(FDataLink.DataSet.RecordCount divmMax);

MoveBy(NewRecNo-RecNo);

end else casePos of

0: First;

1: MoveBy(-VisibleRowCount);

2: Exit;

3: MoveBy(VisibleRowCount);

4: Last;

end;

SB_BOTTOM: Last;

SB_TOP: First;

end;

end;

Имейте в виду, что из-за небольшой ошибки в VCL (MoveBy использует integer-параметр вместо longint), могут быть проблемы с большими таблицами (RecordCount>MaxInt). Объяснение этому факту я нашел в журнале Delphi Magazine. Для больших таблиц вы должны заменить вызовы MoveBy на DBISetToSeqNo или DBIGetRelativeRecord. Не забудьте после данного вызова вызвать Resnyc([]) или Refresh!

P.S. Пока вы ковыряетесь в DBGRIDS.PAS: найдите и замените TitleColor на FixedColor в TCustomDBGrid.Create и в TCustomDBGrid.DrawCell. Значение свойства FixedColor влияет на показ заголовков колонок, и они будут выводится как и ожидалось.

– Reinhard Kalinke

TDBGrid Lookup-поле в D2

Delphi 2

1. Как создать lookup-поле в TDBGrid для Delphi 2.0

2. Разместите на форме 2 компонента TTable, 1 компонент TDataSource и 1 – TDBGrid.

• Подключите Table1 – к DataSource1 – к DBGrid1

• DataSource1.DataSet = Table1

• DBGrid1.DataSource = DataSource1

3. Установка Table1

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Представляем Вашему вниманию похожие книги на «Советы по Delphi. Версия 1.4.3 от 1.1.2001» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001»

Обсуждение, отзывы о книге «Советы по Delphi. Версия 1.4.3 от 1.1.2001» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x