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

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

{*Данные пример проходит в цикле все выбранныезаписи табличной сетки и отображает второеполе набора данных.

Метод DisableControls используется в случае,когда необходимо запретить обновление DBGridпри изменении набора данных. Последняя позициянабора данных сохраняется как TBookmark.

Метод IndexOf вызывается при необходимостипроверить существование закладки.Решение использовать метод IndexOf, а неRefresh, должно приниматься исходя изспецифики приложения.*}

procedureTForm1.SelectClick(Sender: TObject);

var

x: word;

TempBookmark: TBookMark;

begin

DBGrid1.Datasource.Dataset.DisableControls;

withDBgrid1.SelectedRows do ifCount > 0 then begin

TempBookmark:= DBGrid1.Datasource.Dataset.GetBookmark;

forx:= 0 toCount - 1 do begin

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

• Table1.Database = DBDemos

• Table1.TableName = Customer

• Table1.Active = True

4. Установка Table2

• Table2.Database = DBDemos

• Table2.TableName = Orders

• Table2.Active = True

5. Добавьте все поля для Table1, используя Fields Editor (редактор полей):

• Дважды щелкните на Table1

• Нажмите правую кнопку мыши в редакторе полей

• Выберите пункт Add New Fields. Добавьте их все.

6. Добавьте новое поле для Table1.

• Нажмите правую кнопку мыши в редакторе полей и выберите пункт «New Field».

7. Определите следующие параметры для вновь добавленного поля:

• Name: Bob

• Type: String

• Size: 30

• Select Lookup

• Key Fields: CustNo – Поле в Table1 для хранения значения

• DataSet: Table2 – Здесь устанавливается табличный lookup

• LookUpKeys: CustNo – Данный ключ копируется в KeyField

• Result Field: OrderNo – Значение для показа пользователю в выпадающем списке

8. Запустите приложение

Как зафиксировать один или несколько столбцов в TDBGrid с возможностью навигации по этим столбцам?

Nomadicсоветует:

Это маленькая вставка в Ваш наследник от TCustomDBGrid, которая решает данную задачу.

// DBGRIDEX.PAS

// ----------------------------------------------------------------------------

destructorTDbGridEx.Destroy;

begin

_HideColumnsValues.Free;_HideColumns.Free;

inheritedDestroy;

end;

// ----------------------------------------------------------------------------

constructorTDbGridEx.Create(Component : TComponent);

begin

inheritedCreate(Component);

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

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x