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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

if TreeView_GetItem(Handle, Item) then Result:= (state and TVIS_BOLD) <> 0;

end;

end;

procedure THETreeView.SetSortType(Value: TSortType);

begin

if SortType <> Value then begin

FSortType:= Value;

if ((SortType in [stData, stBoth]) and Assigned(OnCompare)) or (SortType in [stText, stBoth]) then AlphaSort;

end;

end;

procedure THETreeView.LoadFromFile(const AFileName: string);

var

AList: TStringList;

begin

AList:= TStringList.Create;

Items.BeginUpdate;

try

AList.LoadFromFile(AFileName);

SetItemList(AList);

finally

Items.EndUpdate;

AList.Free;

end;

end;

procedure THETreeView.SaveToFile(const AFileName: string);

var

AList: TStringList;

begin

AList:= TStringList.Create;

try

GetItemList(AList);

AList.SaveToFile(AFileName);

finally

AList.Free;

end;

end;

procedure THETreeView.SetItemList(AList: TStrings);

var

ALevel, AOldLevel, i, Cnt: Integer;

S: string;

ANewStr: string;

AParentNode: TTreeNode;

TmpSort: TSortType;

function GetBufStart(Buffer: PChar; var ALevel: Integer): PChar;

begin

ALevel:= 0;

while Buffer^ in [' ', #9] do begin

Inc(Buffer);

Inc(ALevel);

end;

Result:= Buffer;

end;

begin

//Удаление всех элементов – в обычной ситуации подошло бы Items.Clear, но уж очень медленно

SendMessage(handle, TVM_DELETEITEM, 0, Longint(TVI_ROOT));

AOldLevel:= 0;

AParentNode:= nil;

//Снятие флага сортировки

TmpSort:= SortType;

SortType:= stNone;

try

for Cnt := 0 to AList.Count-1 do begin

S:= AList[Cnt];

if (length(s) = 1) and (s[1] = chr($1a)) then break;

ANewStr:= GetBufStart(PChar(S), ALevel);

if (ALevel > AOldLevel) or (AParentNode = nil) then begin

if ALevel - AOldLevel > 1 then raise Exception.Create('Неверный уровень TreeNode');

end else begin

for i:= AOldLevel downto ALevel do begin

AParentNode:= AParentNode.Parent;

if (AParentNode = nil) and (i - ALevel > 0) then raise Exception.Create('Неверный уровень TreeNode');

end;

end;

AParentNode:= Items.AddChild(AParentNode, ANewStr);

AOldLevel:= ALevel;

end;

finally

//Возвращаем исходный флаг сортировки…

SortType:= TmpSort;

end;

end;

procedure THETreeView.GetItemList(AList: TStrings);

var

i, Cnt: integer;

ANode: TTreeNode;

begin

AList.Clear;

Cnt:= Items.Count -1;

ANode:= Items.GetFirstNode;

for i:= 0 to Cnt do begin

AList.Add(GetItemText(ANode));

ANode:= ANode.GetNext;

end;

end;

function THETreeView.GetItemText(ANode: TTreeNode): string;

begin

Result:= StringOfChar(' ', ANode.Level) + ANode.Text;

end;

function THETreeView.AlphaSort: Boolean;

var

I: Integer;

begin

if HandleAllocated then begin

Result:= CustomSort(nil, 0);

end else Result:= False;

end;

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

var

SortCB: TTVSortCB;

I: Integer;

Node: TTreeNode;

begin

Result:= False;

if HandleAllocated then begin

with SortCB do begin

if not Assigned(SortProc) then lpfnCompare:= @DefaultTreeViewSort

else lpfnCompare:= SortProc;

hParent:= TVI_ROOT;

lParam:= Data;

Result:= TreeView_SortChildrenCB(Handle, SortCB, 0);

end;

if Items.Count > 0 then begin

Node:= Items.GetFirstNode;

while Node <> nil do begin

if Node.HasChildren then Node.CustomSort(SortProc, Data);

Node:= Node.GetNext;

end;

end;

end;

end;

//Регистрация компонента

procedure Register;

begin

RegisterComponents('Win95', [THETreeView]);

end;

end.

Разное

Создание компонента во время работы приложения

Var

MyButton: TButton;

MyButton:= TButton.Create(MyForm); // MyForm теперь "обладает" MyButton

with MyButton do BEGIN

Parent:= MyForm; // Выбираем родителей. MyForm "усыновляет" MyButton

height:= 32;

width:= 128;

caption:= 'Я здесь!';

left := (MyForm.ClientWidth – width) div 2;

top := (MyForm.ClientHeight – height) div 2;

END;

Inprise также рассказывала об этом в выпусках TechInfo.

Поищите

ti2938.asc Creating Dynamic Components at Runtime

на публичном WWW или FTP сайте компании Inprise.

Получение индекса компонента в списке родителя

Мне необходимо найти индекс компонента в родительском списке дочерних элементов управления. Я попытался модифицировать prjexp.dll, но без успеха. У кого-нибудь есть идеи?

Есть такая функция. Ищет родителя заданного компонента, перебирает список и возвращает индекс искомого компонента. Функция прошла многочисленные тесты и вполне работоспособна.

{ функция, возвращающая индекс искомого компонента в

списке родителя; возвращает –1 при отсутствии компонента }

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

Интервал:

Закладка:

Сделать

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

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


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

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

x