Валентин Озеров - Советы по 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 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

procedureCreateATableInAUnit;

varmyTable : TTable;

begin

myTable := TTable.Create( nil);

try

myTable.DatabaseName := 'MyDB';

myTable.TableName := 'MyTable.db';

mytable.IndexName := 'MyIndex';

myTable.Open;

{другой код}

finally

myTable.Free;

end;

end;

TabSet

Изменение количества закладок в TTabSet во время выполнения программы

Delphi 1

Вначале сделайте где-то в вашем коде следующее объявление:

TabSet1: TTabSet; { подразумевается, что это принадлежит Form1 }

Затем следующей строкой мы очищаем заголовки всех закладок:

Form1.TabSet1.Tabs.Clear;

Для того, чтобы добавить новую закладку с определенным именем, воспользуйтесь следующим кодом:

Form1.TabSet1.Tabs.Add('какой-то заголовок');

Пожалуйста, помните о том, что я назначил имя в предположении, что вы имеете ссылку на юнит, где оно определено [но не исключаю возможности, что вы можете получить ссылку на закладку и через обработчика соответствующего события, что еще проще, но мы то с вами должны знать все!]. Если вам нужно сослаться на объект из другого модуля, просто добавьте к вызову имя модуля (и добавьте этот модуль в список «uses»), например так:

Unit1.Form1.TabSet1.Tabs.Add('Заголовок');

Поскольку «TabSet1.Tabs» имеет тип TStrings, вы можете использовать любой из доступных методов этого типа (AddObject, LoadFromFile и т.д.).

Timer

Остановка таймера на `полпути`

Delphi 1

Timer1.Enabled := False;

Timer1.Enabled := True;

Это полностью «сбрасывает» таймер, другими словами, перезапускает его.

BTW: изменение интервала (в другое значение) также производит сброс таймера.

Вы можете включать и выключать ваш таймерный компонент, устанавливая соответствующее свойство, например:

Timer1.Enabled := True; { или False, если вы хотите выключить его }

Но при этом свои 5 секунд таймер продолжает отсчитывать. Если вы хотите изменить это, присвойте ему другой интервал, например так:

Timer1.Interval := 100;

TreeView

Поточность TreeView

Delphi 2

На пустой форме у меня располагается TTreeView. Затем я сохраняю это в файле, используя WriteComponent. Это работает как положено; я могу из DOS c помощью команды "type" посмотреть двоичный файл и увидеть его содержимое, типа строк TTreeView и имя объекта. По крайней мере файл записывается и создается впечатление его "наполненности".

Затем я освобождаю компонент TTreeView, открываю поток, делаю ReadComponent и, затем, InsertControl. И получаю исключение "TreeView1 has no parent window" (TreeView1 не имеет родительского окна).

Это происходит из-за того, что при установке определенных свойств TreeView требуется дескриптор окна элемента управления, а для этого необходимо иметь родителя. Решение заключается в создании пустого TreeView и передаче его в качестве параметра ReadComponent - вы наверняка меня спросите, почему ReadComponent необходим параметр, правильно? Смотрите дальше.

procedureTForm1.Button1Click(Sender: TObject);

varTreeView : TTreeView;

begin

withTFileStream.Create('JUNK.STR', fmCreate) do try

WriteComponent(TreeView1);

TreeView1.Name := 'TreeView';

Position := 0;

TreeView := TTreeView.Create(Self);

TreeView.Visible := false;

TreeView.Parent := Self;

ReadComponent(TreeView);

TreeView.Top := TreeView1.Top + TreeView1.Height + 10;

TreeView.Visible := true;

finally

Free;

end;

end;

Два небольших замечания:

1. Убедитесь в отсутствии конфликта имен. Данный код делает форму владельцем второго TreeView и при ее освобождении разрушает компонент. Я просто переименовываю существующий TreeView перед загрузкой 'клона'.

2. Я установил свойство visible в false перед установкой свойства parent, этим я предотвратил показ только что созданного TreeView до момента загрузки его из потока.

– Mike Scott

Получение доступа к узлам TreeView

Delphi 2

Небольшие хитрости для работы с узлами TreeView:

Если вы хотите производить поиск по дереву, может быть для того, чтобы найти узел, соответствующий определенному критерию, то НЕ ДЕЛАЙТЕ ЭТО ТАКИМ ОБРАЗОМ:

fori := 0 toMyTreeView.Items.Count) do begin

ifMyTreeView.Items[i].Text = 'Банзай' thenbreak;

end;

…если вам не дорого время обработки массива узлов.

Значительно быстрее будет так:

Noddy := MyTreeView.Items[0];

Searching := true;

while(Searching) and(Noddy <> nil) do begin

ifNoddy.text = SearchTarget then begin

Searching := False;

MyTreeView.Selected := Noddy;

MyTreeView.SetFocus;

end else begin

Noddy := Noddy.GetNext

end;

end;

В моей системе приведенный выше код показал скорость 33 милисекунды при работе с деревом, имеющим 171 узел. Первый поиск потребовал 2.15 секунд.

Оказывается, процесс индексирования очень медленный. Я подозреваю, что при каждой индексации свойства Items, вы осуществляете линейный поиск, но это нигде не засвидетельствовано, поэтому я могу ошибаться.

Вам действительно не нужно просматривать все дерево, чтобы найти что вам нужно – получить таким образом доступ к MyTreeView.Items[170] займет много больше времени, чем получения доступа к MyTreeView.Items[1].

Как правило, для отслеживания позиции в дереве TreeView, нужно использовать временную переменную TTreeNode, а не использовать целочисленные индексы. Возможно, свойство ItemId как раз и необходимо для такого применения, но, к сожалению, я никак не могу понять абзац в электронной документации, касающийся данного свойства:

«Свойство ItemId является дескриптором TTreeNode типа HTreeItem и однозначно идентифицирует каждый элемент дерева. Используйте это свойство, если вам необходимо получить доступ к элементам дерева из внешнего по отношению к TreeView элемента управления.»

«Я разговаривал с деревьями…вот почему они ушли от меня…»

(Spike Milligan)

– Peter Kane

Хочется выделять некоторые стpочки в TTreeView жирным или бледным. Как?

Nomadicсоветует:

Грхм… Господа, но если речь про bold… Матчасть учить надо 8-).

procedureSetNodeState(node: TTreeNode; Flags: Integer);

vartvi: TTVItem;

begin

FillChar(tvi, Sizeof(tvi), 0);

tvi.hItem := node.ItemID;

tvi.mask := TVIF_STATE;

tvi.stateMask := TVIS_BOLD ortvis_cut;

tvi.state := Flags;

TreeView_SetItem(node.Handle, tvi);

end;

И вызываем:

SetNodeState(TreeView1.Selected, TVIS_BOLD); // Текст жирным

SetNodeState(TreeView1.Selected, TVIS_CUT); // Иконку бледной

(Ctrl+X)

SetNodeState(TreeView1.Selected, TVIS_BOLD orTVIS_CUT); // Текст жирным

SetNodeState(TreeView1.Selected, 0); // Ни того, ни другого

Когда-то (мечтательно закатив глаза в потолок) в API было еще и TVIS_DISABLE. Снесли собаки. А рекомендуемую стилистику употребления этого добра смотри в MS Internet News.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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