Чтение онлайн

на главную

Жанры

Советы по Delphi. Версия 1.0.6

Озеров Валентин

Шрифт:

unit Unit2;

interface

uses db, DBTables, dialogs;

type fake = class(Ttable)

 procedure fakeFilterRecord(DataSet: TDataSet; var Accept: Boolean);

end;

var

 MyTable: fake;

implementation

procedure fake.fakeFilterRecord(DataSet: TDataSet; var Accept: Boolean);

begin

 showmessage('Здравствуй,
Вася');

end;

Initialization

 MyTable:= fake.create(nil);

 With Mytable do begin

DataBaseName:= 'dbdemos';

TableName:= 'biolife';

OnFilterRecord:= MyTable.fakeFilterRecord;

Filtered:= true;

active:= true;

 end;

 {проверка получением неких данных…}

 showmessage(MyTable.fields[1].asstring);

Finalization

 {Важно! MyTable не имеет родителя, – уничтожаем объект сами, иначе память не высвобождается…}

 MyTable.free;

end.

TreeView

Ускорение работы TreeView

Представляем вашему вниманию немного переработанный компонент TreeView, работающий быстрее своего собрата из стандартной поставки Delphi. Кроме того, была добавлена возможность вывода текста узлов и пунктов в жирном начертании (были использованы методы TreeView, хотя, по идее, необходимы были свойства TreeNode. Мне показалось, что это будет удобнее).

Для сравнения:

TreeView:

128 сек. для загрузки 1000 элементов (без сортировки)*

270 сек. для сохранения 1000 элементов (4.5 минуты!!!)

HETreeView:

1.5 сек. для загрузки 1000 элементов – ускорение около 850%!!! (2.3 секунды без сортировки = stText)*

0.7 сек. для сохранения 1000 элементов – ускорение около 3850%!!!

Примечание:

• Все операции выполнялись на медленной машине 486SX 33 Mгц, 20 Mб RAM.

• Если TreeView пуст, загрузка происходит за 1.5 секунды, плюс 1.5 секунды на стирание 1000 элементов (общее время загрузки составило 3 секунды). В этих условиях стандартный компонент TTreeView показал общее время 129.5 секунд. Очистка компонента осуществлялась вызовом функции SendMessage(hwnd, TVM_DELETEITEM, 0, Longint(TVI_ROOT)).

Проведите несколько приятных минут, развлекаясь с компонентом.

unit HETreeView;

{$R-}

// Описание: Реактивный TreeView

(*

TREEVIEW:

 128 сек. для загрузки 1000 элементов (без сортировки)*

 270 сек. для сохранения 1000 элементов (4.5 минуты!!!)

HETREEVIEW:

 1.5
сек. для загрузки 1000 элементов – ускорение около 850%!!! (2.3 секунды без сортировки = stText)*

 0.7 сек. для сохранения 1000 элементов – ускорение около 3850%!!!

NOTES:

 – Все операции выполнялись на медленной машине 486SX 33 Mгц, 20 Mб RAM.

 – * Если TTreeView пуст, загрузка происходит за 1.5 секунды,

 плюс 1.5 секунды на стирание 1000 элементов (общее время загрузки составило 3 секунды).

 В этих условиях стандартный компонент TreeView показал общее время 129.5 секунд.

 Очистка компонента осуществлялась вызовом функции

 SendMessage(hwnd, TVM_DELETEITEM, 0, Longint(TVI_ROOT)).

*)

interface

uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, CommCtrl, tree2vw;

type THETreeView = class(TTreeView)

private

FSortType: TSortType;

 procedure SetSortType(Value: TSortType);

protected

 function GetItemText(ANode: TTreeNode): string;

public

 constructor Create(AOwner: TComponent); override;

 function AlphaSort: Boolean;

 function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;

 procedure LoadFromFile(const AFileName: string);

 procedure SaveToFile(const AFileName: string);

 procedure GetItemList(AList: TStrings);

 procedure SetItemList(AList: TStrings);

 //Жирное начертание шрифта 'Bold' должно быть свойством TTreeNode, но...

 function IsItemBold(ANode: TTreeNode): Boolean;

 procedure SetItemBold(ANode: TTreeNode; Value: Boolean);

published

 property SortType: TSortType read FSortType write SetSortType default stNone;

end;

procedure Register;

implementation

function DefaultTreeViewSort(Node1, Node2: TTreeNode; lParam: Integer): Integer; stdcall;

begin

 {with Node1 do

if Assigned(TreeView.OnCompare) then

TreeView.OnCompare(Node1.TreeView, Node1, Node2, lParam, Result)

 else}

 Result:= lstrcmp(PChar(Node1.Text), PChar(Node2.Text));

end;

Поделиться:
Популярные книги

Ищу жену для своего мужа

Кат Зозо
Любовные романы:
любовно-фантастические романы
6.17
рейтинг книги
Ищу жену для своего мужа

Имперец. Земли Итреи

Игнатов Михаил Павлович
11. Путь
Фантастика:
героическая фантастика
боевая фантастика
5.25
рейтинг книги
Имперец. Земли Итреи

Газлайтер. Том 15

Володин Григорий Григорьевич
15. История Телепата
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Газлайтер. Том 15

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи

Вечная Война. Книга VIII

Винокуров Юрий
8. Вечная Война
Фантастика:
боевая фантастика
юмористическая фантастика
космическая фантастика
7.09
рейтинг книги
Вечная Война. Книга VIII

Низший - Инфериор. Компиляция. Книги 1-19

Михайлов Дем Алексеевич
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
5.00
рейтинг книги
Низший - Инфериор. Компиляция. Книги 1-19

Гром над Тверью

Машуков Тимур
1. Гром над миром
Фантастика:
боевая фантастика
5.89
рейтинг книги
Гром над Тверью

Возвышение Меркурия. Книга 13

Кронос Александр
13. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 13

Кодекс Охотника XXVIII

Винокуров Юрий
28. Кодекс Охотника
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника XXVIII

Свадьба по приказу, или Моя непокорная княжна

Чернованова Валерия Михайловна
Любовные романы:
любовно-фантастические романы
5.57
рейтинг книги
Свадьба по приказу, или Моя непокорная княжна

Новый Рал

Северный Лис
1. Рал!
Фантастика:
фэнтези
попаданцы
5.70
рейтинг книги
Новый Рал

Вечный. Книга III

Рокотов Алексей
3. Вечный
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга III