المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الى جميع الاخوة المحترفين ارجوا حل مشكلتي


احمد كبه
25-05-2016, 09:26 AM
السلام عليكم بعد عن عجزت عن حل مشكلتي وامتلا رأسي شيبا ارجو منكم ان تساعدوني في حل مشكلتي في البحث في القائمة الشجرية

ربيع
25-05-2016, 09:33 AM
موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
25-05-2016, 10:02 AM
محلولة إن شاء الله :abc_138:

ثامر أبو بلقيس
25-05-2016, 10:06 AM
السلام عليكم ورحمة الله وبركاته

سأحدثك إنطلاقا من الملف المرفق

01- امسح كل الاكواد الموجودة على مستوى العناصر
أو أحداث الصفحات بمعنى امسح كل الاكواد لا تترك شيء

02- القائمة الشجرية خليها شاغرة أي لا تضع فيه أي تفرعات " جديدة"

03 - الكتب توضع في المجلد PDFs الموجود بجانب مجلد AutoPlay و ليست في المجلد Docs


بعد تجهيز الملف بهذه المواصفات نواصل :abc_138:

ثامر أبو بلقيس
25-05-2016, 10:10 AM
الخطوة الأولى :
في الحدث global functions ازرع الكود :
sPDFRootFolder = _SourceFolder .. "\\PDFs";
Tree.FindAllNodesByText =
function (strTree, strNode, strText, bExactMatch)
local tblItems = {};
local tbTree = Tree.GetChildren(strTree, strNode);
if tbTree then
for i,v in pairs(tbTree) do
if bExactMatch == false then
if String.Find(tbTree[i]["Text"], strText, 1, false) ~= -1 then
bFound = true;
else bFound = false;
end
else
if tbTree[i]["Text"] == strText then
bFound = true;
else bFound = false;
end
end
if bFound then
Table.Insert(tblItems, Table.Count(tblItems) +1, tbTree[i]["NodeIndex"]);
end
if Tree.GetChildCount(strTree, tbTree[i]["NodeIndex"]) ~= -1 then
tbReturn = Tree.FindAllNodesByText(strTree, tbTree[i]["NodeIndex"], strText, bExactMatch);
if tbReturn then
for i,v in pairs(tbReturn) do
Table.Insert(tblItems, Table.Count(tblItems)+1, v);
end
end
end
end
return tblItems;
else
return nil;
end
end
---------
sFirstPDFToLoad = "";
function AddToTree(sFullPath)
if (sFirstPDFToLoad == '') then
sFirstPDFToLoad = sFullPath;
end
tPathParts = String.SplitPath(sFullPath);
nRootLength = String.Length(sPDFRootFolder);
sFullFolderPath = tPathParts.Drive .. tPathParts.Folder;
nFullFolderPathLength = String.Length(sFullFolderPath);
sFullFolderPath = String.Mid(sFullFolderPath, 1, nFullFolderPathLength - 1);
if(String.Compare(sPDFRootFolder, sFullFolderPath) == 0) then
tNodeData = {};
tNodeData['Text']=tPathParts.Filename;
tNodeData['Data']=sFullPath;
tNodeData['ImageIndex']="0";
Tree.InsertNode("Tree1", Tree.GetChildCount("Tree1", "0") + 1, tNodeData);
else
sSearchString = tPathParts.Folder;
sSearchString = String.TrimRight(sSearchString, '\\');
nPosLastSlash = String.ReverseFind(sSearchString, '\\');
sSearchString = String.Mid(sSearchString, nPosLastSlash + 1, -1);
sFoundNodeIndex = Tree.FindNodeByText("Tree1", "0", sSearchString);
if sFoundNodeIndex == "" then
tNodeData = {};
tNodeData['Text']=sSearchString;
tNodeData['Data']="";
tNodeData['ImageIndex']="1";
sParentIndex = Tree.GetChildCount("Tree1", "0") + 1;
Tree.InsertNode("Tree1", sParentIndex, tNodeData);
else
sParentIndex = sFoundNodeIndex;
end
tNodeData = {};
tNodeData['Text']=tPathParts.Filename;
tNodeData['Data']=sFullPath;
tNodeData['ImageIndex']="0";
Tree.InsertNode("Tree1", sParentIndex .. "." .. (Tree.GetChildCount("Tree1", sParentIndex) + 1), tNodeData);
end
return true;
end

احمد كبه
25-05-2016, 10:10 AM
جاري عملية التعديل

ثامر أبو بلقيس
25-05-2016, 10:12 AM
الخطوة الثانية :

على مستوى أحداث الصفحة وبالضبط في الحدث on preload
ازرع الكود :
File.Find(sPDFRootFolder, "*.pdf", true, false, nil, AddToTree);
PDF.LoadFile("PDF1", sFirstPDFToLoad);

ثامر أبو بلقيس
25-05-2016, 10:15 AM
الخطوة الثالثة :

على مستوى العنصر Input1 و في الحدث on key
أكتب الكود :
tbFound = Tree.FindAllNodesByText("Tree1", "0", Input.GetText("Input1"), true);
for i,v in pairs(tbFound) do
Tree.SetSelectedNode("Tree1", v);
end

ثامر أبو بلقيس
25-05-2016, 10:17 AM
الخطوة الرابعة :

على مستوى العنصر Tree1 و في الحدث on select
أكتب :
if e_NodeIndex then
tNodeData = Tree.GetNode("Tree1", e_NodeIndex);
if tNodeData then
if (tNodeData['Data'] ~= '') then
PDF.LoadFile("PDF1", tNodeData['Data']);
end
end
end

ثامر أبو بلقيس
25-05-2016, 10:22 AM
الخطوة الأخيرة :

عاين مشروعك أكتب العنوان المراد البحث عنه بدقة في الانبوت 1
ستلاحظ أنه سيتم البحث عنه بمجرد كتابته بطريقة صحيحة مع مراعاة المسافات البادئة وتأثيرها
السلبي على البحث موفق :abc_152:


ملاحظة : اذ كانت هناك كتب متشابهة في العناوين سيتم فتح و المرور إلى الكتاب الاخير
يمكن التغلب على ذلك بتوقيف الحلقة التكرارية بالأمر break
موفق :abc_138:

ثامر أبو بلقيس
25-05-2016, 10:27 AM
هام : العنصر Tree1 اضغط عليه واجعله من التبويب font
يقبل اللغة العربية حتى يستقبل العناوين بخط مفهوم :abc_138:

احمد كبه
25-05-2016, 10:35 AM
شكرا جزيلا استاذ ثامر لقد تم حل المشكلة و الحمد لله
بقي لدي اين اضع الbreak في الحلقة التكرارية
مع فائق الشكر و الامتنان

احمد كبه
25-05-2016, 10:46 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

امل الماضي
25-05-2016, 10:50 AM
موفق بإذن الله ... لك مني أجمل تحية .

ياسرهتهت
25-05-2016, 10:57 AM
شكرا لك استاذنا الكريم

موفق بإذن الله ... لك مني أجمل تحية .

فرح صالحي
25-05-2016, 07:42 PM
شـكــ وبارك الله فيك ـــرا لك .:abc_152:.. لك مني أجمل تحية .

رانيا حسن
25-05-2016, 07:44 PM
شكرا لك استاذ ثامر وهل ممكن تغيير لون التحديد بالtree الى لون آخر

ثامر أبو بلقيس
25-05-2016, 09:24 PM
شكرا لك استاذ ثامر وهل ممكن تغيير لون التحديد بالtree الى لون آخر


بهكذا معطيات أرى أن تغيير Skin المشروع سيكون له تأثير على لون التحديد
في القائمة الشجرية حسب لون Skin

التجربة كفيلة بإثبات أونفي ذلك موفقة " سؤال جيد " :abc_022:

رانيا حسن
26-05-2016, 08:58 AM
شكرا استاذ ثام لكن جربت ال skin ولم يتغير لون التحديد

رانيا حسن
26-05-2016, 01:10 PM
السلام عليكم استاذ ثامر اشكرك من صميم قلبي ع سعة صدرك
وسؤالي هل من الممكن عرض شجرة tree في داخل tree في نفس الصفحة مع الاعدادات السابقة:abc_052:

ثامر أبو بلقيس
26-05-2016, 01:24 PM
السلام عليكم استاذ ثامر اشكرك من صميم قلبي ع سعة صدرك
وسؤالي هل من الممكن عرض شجرة tree في داخل tree في نفس الصفحة مع الاعدادات السابقة:abc_052:


لماذا لا تختصري المجهود والوقت ؟

العوض أن تكون هناك قوائم شجرية متعددة خليها وحدة منظمة و بتفرعاتها

مثلا : لدي مجموعة من الكتب العلمية
مجموعة من الكتب الدينية
مجموعة من الكتب الأدبية ... الخ
أجعل كل نوع من الكتب في مجلد تحت مسمى نوعه ثم أضعهم كمجلدات داخل المجلد الرئيسي المسمى PDFs

فتظهر منظمة و مبوبة دون كتابة أكواد :abc_152:

احمد كبه
26-05-2016, 04:16 PM
شكرا لك استاذ ثامر ولكن هناك سؤال بسيط وهو كيف ان تتحد العناصر في الtree بمجرد كتابة اول حرف من الكلمة في الinput وليس كامل الكلمة

ثامر أبو بلقيس
26-05-2016, 06:43 PM
شكرا لك استاذ ثامر ولكن هناك سؤال بسيط وهو كيف ان تتحد العناصر في الtree بمجرد كتابة اول حرف من الكلمة في الinput وليس كامل الكلمة

تقصد المرحلة االثالثة من الحل تتغير للآتي
tbFound = Tree.FindAllNodesByText("Tree1", "0", Input.GetText("Input1"), false);
for i,v in pairs(tbFound) do
Tree.SetSelectedNode("Tree1", v); break
end


موفق:abc_065:

ثامر أبو بلقيس
27-05-2016, 06:45 PM
السلام عليكم استاذ ثامر اشكرك من صميم قلبي ع سعة صدرك
وسؤالي هل من الممكن عرض شجرة tree في داخل tree في نفس الصفحة مع الاعدادات السابقة:abc_052:


حملي هذا النموذج ثم سأقول لك ماذا تفعلي
موفقة :abc_152:

http://up.top4top.net/downloadf-147t5ra1-rar.html

ثامر أبو بلقيس
27-05-2016, 07:15 PM
بعد تحميل النموذج :
طريقة الاستعمال :
بعد تحميل الملف المعمول بفرضية أنه لدينا ثلاث صفحات
للمشروع و كل صفحة تمثل مكتبة فرعية
:abc_022:جيد ....
إذن نحتاج لثلاث مجلدات
هذه المجلدات من حيث الموقع تكون بجانب المجلد AutoPlay أي خارجه
وليست داخل مجلدات البرنامج :abc_088:
- قلنا ثلاث مجلدات تسميتها هي :
tamer1
لمجلد الكتب التي تريدينها أن تظهر في الصفحة1
tamer2
لمجلد الكتب التي تريدينها أن تظهر في الصفحة2
tamer3
لمجلد الكتب التي تريدينها أن تظهر في الصفحة3
---------------------------------
و أهم شي :
- تحتاجي أن يوضع في كل مجلد ملف txt شاغر فقط تسميته
تكون : 1
وضعيه في المجلد tamer1 مرة واحدة رفقة الكتب pdf
- ملف آخر txt شاغر اسمه : 2
وضعيه في المجلد tamer2 مرة واحدة رفقة الكتب pdf
- ملف آخر txt شاغر اسمه : 3
وضعيه في المجلد tamer3 مرة واحدة رفقة الكتب pdf

بعد إعداد المجلدات بهذه المعطيات
جربي المشروع :abc_152: موفقة :abc_152:

ثامر أبو بلقيس
27-05-2016, 08:26 PM
الأخطاء و التعديلات في الملف المفتوح بعد تجربته
:abc_085:يقوم بتكرار معيار البحث في القائمة الشجرية و المحافظة على معيار البحث الاول عند
الانتقال لصفحة أخرى :abc_085:

*** التصحيح ***
بعد فتح الملف المقتوح
في الصفحة الاولى و ليس الرئيسية

مسح الكود الموجود في حدث الصفحة on preload

أما في on show فيعوض المكتوب يمايلي :
nItemCount = Tree.GetChildCount("Tree1", "0");
for nCount=nItemCount, 1, -1 do
Tree.RemoveNode("Tree1", nCount);
end
----------------
sPDFRootFolder = _SourceFolder .. "\\tamer1";
Tree.FindAllNodesByText =
function (strTree, strNode, strText, bExactMatch)
local tblItems = {};
local tbTree = Tree.GetChildren(strTree, strNode);
if tbTree then
for i,v in pairs(tbTree) do
if bExactMatch == false then
if String.Find(tbTree[i]["Text"], strText, 1, false) ~= -1 then
bFound = true;
else bFound = false;
end
else
if tbTree[i]["Text"] == strText then
bFound = true;
else bFound = false;
end
end
if bFound then
Table.Insert(tblItems, Table.Count(tblItems) +1, tbTree[i]["NodeIndex"]);
end
if Tree.GetChildCount(strTree, tbTree[i]["NodeIndex"]) ~= -1 then
tbReturn = Tree.FindAllNodesByText(strTree, tbTree[i]["NodeIndex"], strText, bExactMatch);
if tbReturn then
for i,v in pairs(tbReturn) do
Table.Insert(tblItems, Table.Count(tblItems)+1, v);
end
end
end
end
return tblItems;
else
return nil;
end
end

File.Find(sPDFRootFolder, "*.pdf", true, false, nil, AddToTree);
PDF.LoadFile("PDF1", sFirstPDFToLoad);
----------------------------------------------------------------------
Input.SetText("Input1", ahmed);
Page.SetFocus("Input1");
Page.Redraw();

--------------------------------------------------------------------------

في الصفحة الثانية و ليس الرئيسية

مسح الكود الموجود في حدث الصفحة on preload

أما في on show فيعوض المكتوب يمايلي :
nItemCount = Tree.GetChildCount("Tree1", "0");
for nCount=nItemCount, 1, -1 do
Tree.RemoveNode("Tree1", nCount);
end
----------------
sPDFRootFolder = _SourceFolder .. "\\tamer2";
Tree.FindAllNodesByText =
function (strTree, strNode, strText, bExactMatch)
local tblItems = {};
local tbTree = Tree.GetChildren(strTree, strNode);
if tbTree then
for i,v in pairs(tbTree) do
if bExactMatch == false then
if String.Find(tbTree[i]["Text"], strText, 1, false) ~= -1 then
bFound = true;
else bFound = false;
end
else
if tbTree[i]["Text"] == strText then
bFound = true;
else bFound = false;
end
end
if bFound then
Table.Insert(tblItems, Table.Count(tblItems) +1, tbTree[i]["NodeIndex"]);
end
if Tree.GetChildCount(strTree, tbTree[i]["NodeIndex"]) ~= -1 then
tbReturn = Tree.FindAllNodesByText(strTree, tbTree[i]["NodeIndex"], strText, bExactMatch);
if tbReturn then
for i,v in pairs(tbReturn) do
Table.Insert(tblItems, Table.Count(tblItems)+1, v);
end
end
end
end
return tblItems;
else
return nil;
end
end

File.Find(sPDFRootFolder, "*.pdf", true, false, nil, AddToTree);
PDF.LoadFile("PDF1", sFirstPDFToLoad);
----------------------------------------------------------------------
Input.SetText("Input1", ahmed);
Page.SetFocus("Input1");
Page.Redraw();


----------------------------------------------------------------


في الصفحة الثالثة و ليس الرئيسية

مسح الكود الموجود في حدث الصفحة on preload

أما في on show فيعوض المكتوب يمايلي :
nItemCount = Tree.GetChildCount("Tree1", "0");
for nCount=nItemCount, 1, -1 do
Tree.RemoveNode("Tree1", nCount);
end
----------------
sPDFRootFolder = _SourceFolder .. "\\tamer3";
Tree.FindAllNodesByText =
function (strTree, strNode, strText, bExactMatch)
local tblItems = {};
local tbTree = Tree.GetChildren(strTree, strNode);
if tbTree then
for i,v in pairs(tbTree) do
if bExactMatch == false then
if String.Find(tbTree[i]["Text"], strText, 1, false) ~= -1 then
bFound = true;
else bFound = false;
end
else
if tbTree[i]["Text"] == strText then
bFound = true;
else bFound = false;
end
end
if bFound then
Table.Insert(tblItems, Table.Count(tblItems) +1, tbTree[i]["NodeIndex"]);
end
if Tree.GetChildCount(strTree, tbTree[i]["NodeIndex"]) ~= -1 then
tbReturn = Tree.FindAllNodesByText(strTree, tbTree[i]["NodeIndex"], strText, bExactMatch);
if tbReturn then
for i,v in pairs(tbReturn) do
Table.Insert(tblItems, Table.Count(tblItems)+1, v);
end
end
end
end
return tblItems;
else
return nil;
end
end

File.Find(sPDFRootFolder, "*.pdf", true, false, nil, AddToTree);
PDF.LoadFile("PDF1", sFirstPDFToLoad);
----------------------------------------------------------------------
Input.SetText("Input1", ahmed);
Page.SetFocus("Input1");
Page.Redraw();



انتهى :abc_023: و تهذيبا للاكواد حمل الملف مصحح ومختصر
http://up.top4top.net/downloadf-1474wrn1-rar.html
:abc_080: