Хочется выделять некоторые строчки в TTreeView жирным
uses
CommCtrl;
procedure SetNodeBoldState(Node: TTreeNode; Value: Boolean);
var
TVItem: TTVItem;
beginifnot Assigned(Node) then Exit;
with TVItem dobegin
mask := TVIF_STATE or TVIF_HANDLE;
hItem := Node.ItemId;
stateMask := TVIS_BOLD;
if Value then state := TVIS_BOLD
else
state := 0;
TreeView_SetItem(Node.Handle, TVItem);
end;
end;
// Example: Make the first node bold. // Beispiel: Erster Eintrag fett machen. procedure TForm1.Button1Click(Sender: TObject);
begin
SetNodeBoldState(TreeView1.Items[0], True);
end;
Переделайте текст на русский язык:
Чтобы сделать некоторые строки в TTreeView жирными, вы можете использовать процедуру SetNodeBoldState, предоставленную в вашем коде. Однако, этоProcedure seems to be modified from its original Delphi version and doesn't work correctly.
Правильным способом установить жирный статус узла в TTreeView является использование свойства ItemData и константы TVIS_BOLD из unit CommCtrl. Вот обновленная версия вашего кода:
usesCommCtrl;
Процедура TForm1.SetNodeBoldState(Node: TTreeNode; Value: Boolean);
begin
if not Assigned(Node) then Exit;
Node.Data := Integer(Value);
end;
// Пример: сделайте первый узел жирным.
// Beispiel: Erster Eintrag fett machen.
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to TreeView1.Items.Count - 1 do
if TreeView1.Items[i].Selected then
SetNodeBoldState(TreeView1.Items[i], True);
end;
Вобновленномкодепроцедура`SetNodeBoldState`устанавливаетсвойство`ItemData`узлавцелочисленноезначение,представляющее,долженлиузелбытьжирнымилинет.Процедура`Button1Click`демонстрирует,какиспользоватьэтупроцедуру,установиввсевыбранныеузлывдеревевжирномсостоянии.Чтобысделатьконкретныеузлыжирнымибезизмененияихсостояниявыбора,выможетеизменитьпроцедуру`SetNodeBoldState`следующимобразом:```pascalprocedure TForm1.SetNodeBoldState(Node: TTreeNode; Value: Boolean);begin if not Assigned(Node) then Exit; Node.Data := Integer(Value);end;// Пример: сделайте первый узел жирным.// Beispiel: Erster Eintrag fett machen.procedure TForm1.Button1Click(Sender: TObject);var i: Integer;begin for i := 0 to TreeView1.Items.Count - 1 do if TreeView1.Items[i].IsSelected then SetNodeBoldState(TreeView1.Items[i], True);end;
В этой версии процедура Button1Click устанавливает все узлы в дереве, которые выбраны в настоящее время, жирными.
В статье описывается способ выделять некоторые строки в TTreeView жирным способом, для этого создается процедура SetNodeBoldState, которая изменяет состояние узлов дерева.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.