ثامر أبو بلقيس
24-10-2014, 02:25 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اليوم تريد استخلاص أسطر من عنصر RichText مكتوب فيه نص عربي
باستعمال عنصر ListBox التي سنكتب فيها في item data الخاصة بها أرقام الأسطر التي سنتوقف عندها
اذا كتبنا في الخلية الأولى 5 مثلا فإننا سنتخلص الأسطر 1 - 2 - 3 - 4 ونتوقف عند الخمسة لأنها ستكون استخلاص
جديد مع أخذ بعين الاعتبار السطر الفارغ بأنه سطر
-------------------------------------------------------------------------
فعل الاضافة Memory
ازرع في global functions
function EM_GETLINE(HWND, nLine)
Buffer = Memory.Allocate(1024);
Memory.PutLong(Buffer, 1024);
DLL.CallFunction("User32.dll", "SendMessageA", HWND..", 196, "..nLine..", "..Buffer, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)
sLine = Memory.GetString(Buffer, -1, "Ascii");
Memory.Free(Buffer);
return sLine
end
-----------------------------------------------
أدرج في مشروعك RichText أكتب فيه نص عربي
-----------------------------------------------------
أضف عنصر ListBox في item data رقم السطر الذي ترغب توقف الاستخلاص عنده
--------------------------------
في عنصر ListBox وفي الحدث on select
أكتب :
f = String.ToNumber(ListBox.GetSelected("ListBox1")[1]);
----
HWND = RichText.GetProperties("RichText1").WindowHandle;
---
f2 =""
for i =String.ToNumber( ListBox.GetItemData("ListBox1", f-1)),String.ToNumber(ListBox.GetItemData("ListBox1", f))-1 do
sLineText = EM_GETLINE(HWND, i-1)
f2=f2..sLineText.."\r\n"
end
result = Dialog.Message("Notice", f2);
-----------------------------------------------------------------------
وهذه طريقة أخرى لاستخلاص السطر بدون ااستعمال ListBox كوسيط
my_table = {};
result = String.Replace(RichText.GetText("RichText1", false), " ", "ثامر2014", true);
for token in string.gmatch(result, "[^%s]+") do
e = #token/#token
Table.Insert(my_table, e, token);
e=e+1
belkiss =1+#(my_table)
end
------------- الرقم 1 هو دال مباشرة على السطر الاول غيره برقم السطر الذي تريد ----
FF=my_table[belkiss-1]
X = String.Replace(FF, "ثامر2014", " ", true);
---------------------------------------------------------------------------------
Dialog.Message("Notice",X);
:abc_023:
السلام عليكم ورحمة الله وبركاته
اليوم تريد استخلاص أسطر من عنصر RichText مكتوب فيه نص عربي
باستعمال عنصر ListBox التي سنكتب فيها في item data الخاصة بها أرقام الأسطر التي سنتوقف عندها
اذا كتبنا في الخلية الأولى 5 مثلا فإننا سنتخلص الأسطر 1 - 2 - 3 - 4 ونتوقف عند الخمسة لأنها ستكون استخلاص
جديد مع أخذ بعين الاعتبار السطر الفارغ بأنه سطر
-------------------------------------------------------------------------
فعل الاضافة Memory
ازرع في global functions
function EM_GETLINE(HWND, nLine)
Buffer = Memory.Allocate(1024);
Memory.PutLong(Buffer, 1024);
DLL.CallFunction("User32.dll", "SendMessageA", HWND..", 196, "..nLine..", "..Buffer, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)
sLine = Memory.GetString(Buffer, -1, "Ascii");
Memory.Free(Buffer);
return sLine
end
-----------------------------------------------
أدرج في مشروعك RichText أكتب فيه نص عربي
-----------------------------------------------------
أضف عنصر ListBox في item data رقم السطر الذي ترغب توقف الاستخلاص عنده
--------------------------------
في عنصر ListBox وفي الحدث on select
أكتب :
f = String.ToNumber(ListBox.GetSelected("ListBox1")[1]);
----
HWND = RichText.GetProperties("RichText1").WindowHandle;
---
f2 =""
for i =String.ToNumber( ListBox.GetItemData("ListBox1", f-1)),String.ToNumber(ListBox.GetItemData("ListBox1", f))-1 do
sLineText = EM_GETLINE(HWND, i-1)
f2=f2..sLineText.."\r\n"
end
result = Dialog.Message("Notice", f2);
-----------------------------------------------------------------------
وهذه طريقة أخرى لاستخلاص السطر بدون ااستعمال ListBox كوسيط
my_table = {};
result = String.Replace(RichText.GetText("RichText1", false), " ", "ثامر2014", true);
for token in string.gmatch(result, "[^%s]+") do
e = #token/#token
Table.Insert(my_table, e, token);
e=e+1
belkiss =1+#(my_table)
end
------------- الرقم 1 هو دال مباشرة على السطر الاول غيره برقم السطر الذي تريد ----
FF=my_table[belkiss-1]
X = String.Replace(FF, "ثامر2014", " ", true);
---------------------------------------------------------------------------------
Dialog.Message("Notice",X);
:abc_023: