Автор: Andrei999
Дата сообщения: 13.10.2009 21:22
tavria2 спасибо что откликнулся
За основу я взял проек с со 2 части страница 58 и 59
В это проект я забросил класификацию дефектов которые разделены на групы и подгруппы. С этим я разобрался А вот в трее у меня подрупы дефектов. Когда я выбираю дефекту (Нажимая на Tree1) у меня на странице происходит описание причины появления и т.д. в разных Paragraph. А в ComboBox1 у меня должен быть список аппаратов которые эти дефекты выявляют. Когда я вибираю аппарат должно в Paragraph выходить описание параметров этого дефекта.
Это код который на TREE
-- устанавливаем картинку выбора на ноду
Tree.SetNode("Tree1", e_NodeIndex, {SelectedImageIndex = 0});
-- таблица данных выбранной ноды
local tNodeProps = Tree.GetNode("Tree1", e_NodeIndex);
if (tNodeProps) then
-- текущая запись в базе данных
nItem = tNodeProps.Data;
-- отображаем имя программы
sPrgName = XML.GetValue("database/item:"..nItem.."/name");
if (bClickSearch) then
Paragraph.SetText("Prg_Name", XML.GetValue("database/item:"..nItem.."/razdel").."\\"..sPrgName);
else
Paragraph.SetText("Prg_Name", sPrgName);
end
-- путь к папке с программой
sPrgFolder = sPath_SoftFolder.."\\"..XML.GetValue("database/item:"..nItem.."/razdel").."\\"..sPrgName;
--================== Вказівкі з єксплуатациї ==================--
-- описание проги
Paragraph.SetText("Prg_Desc", XML.GetValue("database/item:"..nItem.."/desc"));
--================== Описанием название дефекта==================--
-- описание проги
Paragraph.SetText("Prg_ND", XML.GetValue("database/item:"..nItem.."/nd"));
--================== Описанием название дефекта==================--
-- описание проги
--Paragraph.SetText("Prg_DEF", XML.GetValue("database/item:"..nItem.."/df"));
Paragraph.SetText("Prg_RDM1", XML.GetValue("database/item:"..nItem.."/rdm_1"));
Paragraph.SetText("Prg_POZ", XML.GetValue("database/item:"..nItem.."/poz"));
--==================Действия с Инстоллятором==================--
-- путь к инстоллятору
sPathFile = sPrgFolder.."\\"..XML.GetValue("database/item:"..nItem.."/file");
end
А это код который формирует db.xml он стоит у меня на Button_1
-- Функция возвращает имя папки из пути к ней
FolderEx={};
function FolderEx.GetName(sPath)
if (String.Right(sPath, 1) == "\\") then
sPath = String.Left(sPath, String.Length(sPath) - 1);
end
local nInd = String.ReverseFind(sPath, "\\", false);
if (nInd ~= -1) then
sName = String.Right(sPath, String.Length(sPath) - nInd);
else
sName = sPath;
end
return sName;
end
-- описание программы способы выявления
function GetFileSize(sPath)
-- ищем файлы а папке с программой по маске
local tPaths_SizeFile = File.Find(sPath, "sv.*", false, false, nil);
-- если нашли
if (tPaths_SizeFile) then
-- считываем содержимое первого файла в таблице в строку
sSize = TextFile.ReadToString(tPaths_SizeFile[1]);
-- если не нашли
else
-- произвольное сообщение
sSize = "Описание к данной программе отсутствует.";
end
-- возвращаем описание к программе
return sSize;
end
--------------------------------------------------------------------------------------------------------------------
-- описание программы указания поэксплуатации
function GetDescription(sPath)
-- ищем файлы а папке с программой по маске
local tPaths_DescFile = File.Find(sPath, "readme.*", false, false, nil);
-- если нашли
if (tPaths_DescFile) then
-- считываем содержимое первого файла в таблице в строку
sDesc = TextFile.ReadToString(tPaths_DescFile[1]);
-- если не нашли
else
-- произвольное сообщение
sDesc = "Описание к данной программе отсутствует.";
end
-- возвращаем описание к программе
return sDesc;
end
--------------------------------------------------------------------------------------------------------------------------
-- описание программы причины появления и развития
function GetUrl(sPath)
-- ищем файлы а папке с программой по маске
local tPaths_UrlFile = File.Find(sPath, "ppr.*", false, false, nil);
-- если нашли
if (tPaths_UrlFile) then
-- считываем содержимое первого файла в таблице в строку
sUrl = TextFile.ReadToString(tPaths_UrlFile[1]);
-- если не нашли
else
-- произвольное сообщение
sUrl = "Описание к данной программе отсутствует.";
end
-- возвращаем описание к программе
return sUrl;
end
--------------------------------------------------------------------------------------------------------------------------
-- описание программы способы выявления
function GetND(sPath)
-- ищем файлы а папке с программой по маске
local tPaths_NDFile = File.Find(sPath, "nd.*", false, false, nil);
-- если нашли
if (tPaths_NDFile) then
-- считываем содержимое первого файла в таблице в строку
sND = TextFile.ReadToString(tPaths_NDFile[1]);
-- если не нашли
else
-- произвольное сообщение
sND = "Описание к данной программе отсутствует.";
end
-- возвращаем описание к программе
return sND;
end
-----------------------------------------------------------------------------------------------------------------------
-- описание программы способы выявления
function GetPOZ(sPath)
-- ищем файлы а папке с программой по маске
local tPaths_POZFile = File.Find(sPath, "poz.*", false, false, nil);
-- если нашли
if (tPaths_POZFile) then
-- считываем содержимое первого файла в таблице в строку
sPOZ = TextFile.ReadToString(tPaths_POZFile[1]);
-- если не нашли
else
-- произвольное сообщение
sPOZ = "Описание к данной программе отсутствует.";
end
-- возвращаем описание к программе
return sPOZ;
end
-- Возвращает имя скриншота программы
function GetImage(sPath)
local sFullImg = "";
local tMasks = {"*.png", "*.jpg", "*.bmp", "*.gif", "*.tga", "*.tiff"};
for n, cMask in tMasks do
local tFullPaths = File.Find(sPath, cMask, false, false, nil, nil);
if (tFullPaths) then
sFullImg = tFullPaths[1];
end
end
return String.SplitPath(sFullImg).Filename..String.SplitPath(sFullImg).Extension;
end
-- создание БД
sFolderPath = Dialog.FolderBrowse("Please select a folder:", "C:\\");
if (sFolderPath ~= "CANEL") and (sFolderPath ~= "") then
local sXMLDB = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>\r\n<database>\r\n";
tRazdelNames = Folder.Find(sFolderPath.."\\", "*", false, nil);
if (tRazdelNames) then
for n, cRazdelName in tRazdelNames do
tProgramNames = Folder.Find(cRazdelName.."\\", "*", false, nil);
if (tProgramNames) then
for n, cProgramName in tProgramNames do
sXMLDB = sXMLDB.."<item><name>"..FolderEx.GetName(cProgramName).."</name>";
----------------------------------------------------------
sPrgND=GetND(cProgramName);
sXMLDB = sXMLDB.."<nd>"..sPrgND.."</nd>";
-------------------------------------------------------------------------
sPrgPOZ=GetPOZ(cProgramName);
sXMLDB = sXMLDB.."<poz>"..sPrgPOZ.."</poz>";
-------------------------------------------------------------------------
-- sPrgDEF=GetDEF(cProgramName);
-- sXMLDB = sXMLDB.."<df>"..sPrgDEF.."</df>";
-------------------------------------------------------------------------
--rdm 1
sPrgRDM1=GetRDM1(cProgramName);
sXMLDB = sXMLDB.."<rdm_1>"..sPrgRDM1.."</rdm_1>";
-------------------------------------------------------------------------
--rdm 1m
sPrgRDM1M=GetRDM1M(cProgramName);
sXMLDB = sXMLDB.."<rdm_1m>"..sPrgRDM1M.."</rdm_1m>";
-------------------------------------------------------------------------
--rdm 2
sPrgRDM2=GetRDM2(cProgramName);
sXMLDB = sXMLDB.."<rdm_2>"..sPrgRDM2.."</rdm_2>";
-------------------------------------------------------------------------
--sProgramSize = GetFileSize(cProgramName.."\\"..sProgramFile);
sProgramSize = GetFileSize(cProgramName);
sXMLDB = sXMLDB.."<size>"..sProgramSize.."</size>";
----------------------------------------------------------
sProgramDesc = GetDescription(cProgramName);
sXMLDB = sXMLDB.."<desc>"..sProgramDesc.."</desc>";
----------------------------------------------------------
sPrgURL = GetUrl(cProgramName);
sXMLDB = sXMLDB.."<url>"..sPrgURL.."</url>";
----------------------------------------------------------
sPrgImg = GetImage(cProgramName);
sXMLDB = sXMLDB.."<img>"..sPrgImg.."</img>";
----------------------------------------------------------
-- sXMLDB = sXMLDB.."<file>"..GetInstallFile(cProgramName).."</file>";
----------------------------------------------------------
-- sXMLDB = sXMLDB.."<rus>"..GetRusFile(cProgramName).."</rus>";
----------------------------------------------------------
-- sXMLDB = sXMLDB.."<crack>"..GetCrackFile(cProgramName).."</crack>";
----------------------------------------------------------
sXMLDB = sXMLDB.."<razdel>"..FolderEx.GetName(cRazdelName).."</razdel></item>\r\n\r\n";
end
end
end
sXMLDB = sXMLDB.."</database>";
end
XML.SetXML(sXMLDB);
-- непошифрованная БД
XML.Save("AutoPlay\\Docs\\db.xml");
-- sEncDB = Crypto.BlowfishEncryptString(sXMLDB, "ru-board", 0);
-- TextFile.WriteFromString("C:\\db.xml", sEncDB, false);
end