Меню выбора, кроме инвертирования
This commit is contained in:
parent
ddb1d7ca8f
commit
15d4e0bf31
@ -3713,6 +3713,7 @@ object dmMain: TdmMain
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
ImageIndex = 95
|
||||
OnClick = mbCheckAllClick
|
||||
end
|
||||
object mbCheckInvert: TMenuItem
|
||||
Caption = 'Инвертировать'
|
||||
@ -3793,6 +3794,7 @@ object dmMain: TdmMain
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
ImageIndex = 96
|
||||
OnClick = mbCheckNoneClick
|
||||
end
|
||||
end
|
||||
object mbOptions: TMenuItem
|
||||
|
71
dmain.pas
71
dmain.pas
@ -5,7 +5,7 @@ unit dMain;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Controls, Menus, uPackage, uPackageList;
|
||||
Classes, SysUtils, FileUtil, Controls, Menus, VirtualTrees, uPackage, uPackageList;
|
||||
|
||||
type
|
||||
|
||||
@ -35,6 +35,8 @@ type
|
||||
pmInstallTree: TPopupMenu;
|
||||
pmInstallCheck: TPopupMenu;
|
||||
procedure DataModuleCreate(Sender: TObject);
|
||||
procedure mbCheckAllClick(Sender: TObject);
|
||||
procedure mbCheckNoneClick(Sender: TObject);
|
||||
procedure mbCollapseTreeClick(Sender: TObject);
|
||||
procedure mbExpandTreeClick(Sender: TObject);
|
||||
private
|
||||
@ -59,6 +61,8 @@ type
|
||||
SoftPackages: TPackageList;
|
||||
// Список объектов пакетов утилит для запуска
|
||||
ToolsPackages: TPackageList;
|
||||
// Установка состояния отметки для всех корневых нод указанного дерева
|
||||
procedure SetVSTCheckState(AVST: TBaseVirtualTree; AState: boolean);
|
||||
end;
|
||||
|
||||
var
|
||||
@ -75,13 +79,73 @@ uses fMain;
|
||||
{------------------------------------------------------------------------------
|
||||
Конструктор: TdmMain.Create()
|
||||
Назначение: Создание датамодуля, подготовка путей и списков пакетов
|
||||
Вх. параметры: Sender: TObject
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.DataModuleCreate(Sender: TObject);
|
||||
begin
|
||||
PrepareDirs();
|
||||
PreparePackages();
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Конструктор: TdmMain.SetVSTCheckState()
|
||||
Назначение: Установка состояния отметки для всех корневых нод указанного дерева
|
||||
Вх. параметры:
|
||||
AVST: TBaseVirtualTree - дерево
|
||||
AState: boolean - состояние отметок: TRUE выбрать все, FALSE снять выбор со всех
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.SetVSTCheckState(AVST: TBaseVirtualTree; AState: boolean);
|
||||
var
|
||||
Node: PVirtualNode;
|
||||
|
||||
// Установка состояния отметки ноды-родителя дочерним нодам
|
||||
procedure CheckChildNodes(ANode: PVirtualNode);
|
||||
var
|
||||
ChildNode: PVirtualNode;
|
||||
begin
|
||||
ChildNode := AVST.GetFirstChild(ANode);
|
||||
while Assigned(ChildNode) do
|
||||
begin
|
||||
CheckChildNodes(ChildNode);
|
||||
ChildNode^.CheckState := ChildNode^.Parent^.CheckState;
|
||||
ChildNode := AVST.GetNextSibling(ChildNode);
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
AVST.BeginUpdate;
|
||||
try
|
||||
Node := AVST.GetFirst;
|
||||
while Assigned(Node) do
|
||||
begin
|
||||
if AState = true then
|
||||
Node^.CheckState := csCheckedNormal
|
||||
else
|
||||
Node^.CheckState := csUncheckedNormal;
|
||||
CheckChildNodes(Node);
|
||||
Node := AVST.GetNextSibling(Node);
|
||||
end;
|
||||
finally
|
||||
AVST.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Конструктор: TdmMain.mbCheckAllClick()
|
||||
Назначение: Обработка клика п. меню "Выбрать всё"
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.mbCheckAllClick(Sender: TObject);
|
||||
begin
|
||||
SetVSTCheckState(fmMain.vstSoftPkgContents, true);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Конструктор: TdmMain.mbCheckNoneClick()
|
||||
Назначение: Обработка клика п. меню "Снять выбор"
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TdmMain.mbCheckNoneClick(Sender: TObject);
|
||||
begin
|
||||
SetVSTCheckState(fmMain.vstSoftPkgContents, false);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TdmMain.mbCollapseTreeClick()
|
||||
@ -138,8 +202,5 @@ begin
|
||||
ToolsPackages.Load(ptTools);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
object fmMain: TfmMain
|
||||
Left = 299
|
||||
Left = 430
|
||||
Height = 450
|
||||
Top = 82
|
||||
Top = 108
|
||||
Width = 350
|
||||
BorderIcons = [biSystemMenu, biMinimize]
|
||||
Caption = 'ABTool'
|
||||
@ -3226,6 +3226,7 @@ object fmMain: TfmMain
|
||||
TabHeight = 20
|
||||
TabIndex = 0
|
||||
TabOrder = 0
|
||||
OnChange = PageControlChange
|
||||
object tabSoft: TTabSheet
|
||||
Caption = 'Установка'
|
||||
ClientHeight = 402
|
||||
|
12
fmain.pas
12
fmain.pas
@ -60,6 +60,7 @@ type
|
||||
procedure btnSoftPkgReloadClick(Sender: TObject);
|
||||
// Обрабока клика по кнопке обновления выпадающего меню пакетов утилит
|
||||
procedure btnToolsPkgReloadClick(Sender: TObject);
|
||||
procedure PageControlChange(Sender: TObject);
|
||||
// Отображение отметок в нодах дерева программ
|
||||
procedure vstSoftPkgContentsInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode;
|
||||
var InitialStates: TVirtualNodeInitStates);
|
||||
@ -208,6 +209,7 @@ procedure TfmMain.FormCreate(Sender: TObject);
|
||||
begin
|
||||
ReloadPackagesList(ptSoft);
|
||||
ReloadPackagesList(ptTools);
|
||||
PageControl.ActivePageIndex := 0;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -227,6 +229,16 @@ procedure TfmMain.btnToolsPkgReloadClick(Sender: TObject);
|
||||
begin
|
||||
ReloadPackagesList(ptTools);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmMain.PageControlChange()
|
||||
Назначение: Обрабока переключения вкладок
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TfmMain.PageControlChange(Sender: TObject);
|
||||
begin
|
||||
// меню выбора должно быть активно только на вкладке "Установка"
|
||||
dmMain.mbCheck.Enabled := PageControl.ActivePageIndex = 0;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Процедура: TfmMain.vstSoftPkgContentsGetText()
|
||||
|
Loading…
Reference in New Issue
Block a user