مشاهدة النسخة كاملة : تحويل النص في اي عنصر الى عناصر Label
عبد الهادي بهاب
08-02-2016, 03:44 PM
السلام عليكم ورحمة الله وبركاته
في هذا الدرس السريع ...... نحول اي نص الى مجموعة من الكلمات
و المقصود هنا هو ان نحول نص موجود في عنصر ما مثلا
label....input.....paragraph......file.txt.....ric htext.......
تحويل النص الى مجموعة من ليبالات label منفصلة
ممكن استخدامها في برامج تعليمية مثلا قصد السحب و الافلات مثلا
او تفريقها لاعطاء البعض منها مما يحقق شرطا معينا لونا او حجما خاصا
( مثال ...... فيه جملة .....نريد الكلمات التي تنتمي لحروف الحر ان تكون كبيرة )
ضع انبوت و الذي ستكتب فيه ما تشاء
Input1
ثم في زر نضع الكود التالي
t = Input.GetText("Input1");
if t == "" then
Dialog.Message("طريق الاحتراف","انت لم تكتب شبئا");
else
----------------تحويل النص الى كلمات-----------
s={}; e=1;
for w in string.gmatch(t,"[^%s]+") do
Table.Insert(s,e,w);
e=e+1;
end
con = Table.Count(s);
------------------------converti en label ---------------
tLabelProperties = {};
tLabelProperties.FontName = "Arial";
tLabelProperties.FontScript = 1;
tLabelProperties.FontSize = 24;
----------------------------------------------
tLabelProperties.Y = 140;
tLabelProperties.X = 200;
tLabelProperties.Text = s[1];
Page.CreateObject(OBJECT_LABEL, "B1", tLabelProperties);
Label.SetProperties("B1", {ColorNormal = Math.HexColorToNumber("000000")});
-------
for r = 2 , con do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("B"..r-1).X + Label.GetSize("B"..r-1).Width + 5;
tLabelProperties.Y = 140;
Page.CreateObject(OBJECT_LABEL, "B"..r, tLabelProperties);
Label.SetProperties("B"..r, {ColorNormal = Math.HexColorToNumber("000000")});
end ;
---------------انتهى كود التحويل---------
end
من اجل المسح ...مع العلم اننا جعلناه يحفظ قيمة con وهي عدد الكلمات و الا فاجعلها عدد كبير
for i = 1,con do
Page.DeleteObject("B"..i);
end
طبعا الكود التالي خاص بترتيب الكلمات من اليسار الى اليمين
و للجمل البسيطة و ليست الطويلة
لانه سيضع كل الكلمات في سطر واحد
لذلك يحتاج الى تهذيب
.....فللجمل العربية يتطلب ان نجعل الكود يعيد ترتيب النص عكسيا----
------ و للجمل الطويلة نحتاج ان نجعله يحدد عدد الكلمات لكل سطر ثم يعود لوضع الباقي في سطر اخر و هكذا------
وهنا ياتي دوركم يا اخوة
تحياتي :abc_152::abc_152::abc_152:
عبد الهادي بهاب
08-02-2016, 03:56 PM
مثال من اجل نص طويل
----------النص في الكود بين "" ......يمكن استدعائه من ملق txt مثلا
في هذا الكود سنحول الى label في الاسطر
---------------نص افتراضي----------
t= "Je suis le miel, produit de la transformation du nectar des fleurs. Quelle Magie ! L’abeille récolte ce nectar sur les fleurs : elle collecte sur plus de mille fleurs jusqu’à 70 milligrammes, alors qu’elle pèse 80 milligrammes à vide ! ";
---------تجوله الى كلمات------------
s={}; e=1;
for w in string.gmatch(t,"[^%s]+") do
Table.Insert(s,e,w);
e=e+1;
end
con = Table.Count(s);
------------------------وضع اللمات في label ---------------
tLabelProperties = {};
tLabelProperties.FontName = "Arial";
tLabelProperties.FontSize = 15;
-----الكلمة الاولى في السطر الاول ---
tLabelProperties.Y = 50;
tLabelProperties.X = 20;
tLabelProperties.Text = s[1];
Page.CreateObject(OBJECT_LABEL, "A1", tLabelProperties);
------الطر الاول--------
for r = 2 , 12 do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("A"..r-1).X + Label.GetSize("A"..r-1).Width + 3;
tLabelProperties.Y = 50;
Page.CreateObject(OBJECT_LABEL, "A"..r, tLabelProperties);
end ;
------------ ----الكلمو ااولى في السطر الثاني ----------------
tLabelProperties.Y = 80;
tLabelProperties.X = 20;
tLabelProperties.Text = s[13];
Page.CreateObject(OBJECT_LABEL, "A13", tLabelProperties);
----------السطر الثاني-----------------
for r = 14 , 25 do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("A"..r-1).X + Label.GetSize("A"..r-1).Width + 5;
tLabelProperties.Y = 80;
Page.CreateObject(OBJECT_LABEL, "A"..r, tLabelProperties);
end
-------------الكلمة الاولى في السطر الثالث
tLabelProperties.Y = 110;
tLabelProperties.X = 20;
tLabelProperties.Text = s[26];
Page.CreateObject(OBJECT_LABEL, "A26", tLabelProperties);
---------الطر الثالث----
for r = 27 , 37 do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("A"..r-1).X + Label.GetSize("A"..r-1).Width + 5;
tLabelProperties.Y = 110;
Page.CreateObject(OBJECT_LABEL, "A"..r, tLabelProperties);
end
----------الكلمة 1 في السطر 4----
tLabelProperties.Y = 140;
tLabelProperties.X = 20;
tLabelProperties.Text = s[38];
Page.CreateObject(OBJECT_LABEL, "A38", tLabelProperties);
-----------السطر 4--
for r = 39 , 49 do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("A"..r-1).X + Label.GetSize("A"..r-1).Width + 5;
tLabelProperties.Y = 140;
Page.CreateObject(OBJECT_LABEL, "A"..r, tLabelProperties);
end
----------
بالتوفيق
ثامر أبو بلقيس
08-02-2016, 05:06 PM
بــــارك الله فيك ... :abc_138:
جيدة هاته النوعية من التلميحات فهي الأفيد :abc_139:
و الأجمل هو مزامنة الدرس مع الاستفسار عنه قبل طرحه
فهو أسلوب أراه جيد في التعلم او التعليم فلاستفزاز البرمجي دافع للانجاز :abc_152:
عبد الهادي بهاب
08-02-2016, 05:27 PM
بــــارك الله فيك ... :abc_138:
جيدة هاته النوعية من التلميحات فهي الأفيد :abc_139:
و الأجمل هو مزامنة الدرس مع الاستفسار عنه قبل طرحه
فهو أسلوب أراه جيد في التعلم او التعليم فلاستفزاز البرمجي دافع للانجاز :abc_152:
شكرا جزيلا اساتذ على المرور و الطرح .......نعمل به في قابل الايام
هل فيه لقطة لوضع النص مقلوبا ليسهل التعامل معه ..........هل فيه كرد يكتشف ان لغة النص هي العربية فيقلب ترتيب الكلمات او اجنبي فيتركها كما هي ؟
ياسرهتهت
08-02-2016, 07:53 PM
بسم الله الرحمن الرحيم
http://e.top4top.net/p_38lp8j1.gif
اخي المحترف بارك الله فيك
دائما تتحفنا بما هو مفيد
موفق بإذن الله ... لك مني أجمل تحية .
ثامر أبو بلقيس
08-02-2016, 08:29 PM
شكرا جزيلا اساتذ على المرور و الطرح .......نعمل به في قابل الايام
هل فيه لقطة لوضع النص مقلوبا ليسهل التعامل معه ..........هل فيه كرد يكتشف ان لغة النص هي العربية فيقلب ترتيب الكلمات او اجنبي فيتركها كما هي ؟
طلبت أخي لقطة هاهي وستجمع لك الكل جنبا الى جنب دون تشوهات في الوجه :
tLabelProperties.FontScript = DEFAULT_CHARSET
عبد الهادي بهاب
08-02-2016, 10:12 PM
طلبت أخي لقطة هاهي وستجمع لك الكل جنبا الى جنب دون تشوهات في الوجه :
tlabelproperties.fontscript = default_charset
بارك الله فيكم
غير ان اللقطة لم تفلح في قلب الجملة
اظنني سالجا الى الكود الطويل
عبد الهادي بهاب
08-02-2016, 10:44 PM
محاولة من اجل النصوص العربية
t = Input.GetText("Input1");
if t == "" then
Dialog.Message("طريق الاحتراف","انت لم تكتب شبئا");
else
----------------تحويل النص الى كلمات-----------
sr={}; e=1;
for w in string.gmatch(t,"[^%s]+") do
Table.Insert(sr,e,w);
e=e+1;
end
con = Table.Count(sr);------عدد الكلمات و التي نحتاجها لاحقا
[on = Table.Count(sr);------عدد الكلمات و الذي نستخدمه الان
s={}; ---------مصفوفة معكوسة------------
for i , n in pairs(sr) do
Table.Insert(s,i,sr[on]);-----------نسجل كلمات المصفوفة الاولى في المصفوفة الثانية بعكس الترتيب
on = on-1
end
------------------فنحصل على مصفوفة لكن بترتيب معكوس للكلمات
------------------------converti en label ---------------
tLabelProperties = {};
tLabelProperties.FontName = "Arial";
tLabelProperties.FontScript = DEFAULT_CHARSET
tLabelProperties.FontSize = 24;
----------------------------------------------
tLabelProperties.Y = 140;
tLabelProperties.X = 200;
tLabelProperties.Text = s[1];
Page.CreateObject(OBJECT_LABEL, "B1", tLabelProperties);
Label.SetProperties("B1", {ColorNormal = Math.HexColorToNumber("000000")});
-------
for r = 2 , con do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("B"..r-1).X + Label.GetSize("B"..r-1).Width + 5;
tLabelProperties.Y = 140;
Page.CreateObject(OBJECT_LABEL, "B"..r, tLabelProperties);
Label.SetProperties("B"..r, {ColorNormal = Math.HexColorToNumber("000000")});
end ;
---------------انتهى كود التحويل---------
end
ثامر أبو بلقيس
08-02-2016, 11:28 PM
بارك الله فيكم
غير ان اللقطة لم تفلح في قلب الجملة
اظنني سالجا الى الكود الطويل
أكتب الكود الذي لم يفلح و كيف وظفت ما كتبت لك
ثامر أبو بلقيس
08-02-2016, 11:29 PM
محاولة من اجل النصوص العربية
t = input.gettext("input1");
if t == "" then
dialog.message("طريق الاحتراف","انت لم تكتب شبئا");
else
----------------تحويل النص الى كلمات-----------
sr={}; e=1;
for w in string.gmatch(t,"[^%s]+") do
table.insert(sr,e,w);
e=e+1;
end
con = table.count(sr);------عدد الكلمات و التي نحتاجها لاحقا
on = table.count(sr);------عدد الكلمات و الذي نستخدمه الان
s={}; ---------مصفوفة معكوسة------------
for i , n in pairs(sr) do
table.insert(s,i,sr[on]);-----------نسجل كلمات المصفوفة الاولى في المصفوفة الثانية بعكس الترتيب
on = on-1
end
------------------فنحصل على مصفوفة لكن بترتيب معكوس للكلمات
------------------------converti en label ---------------
tlabelproperties = {};
tlabelproperties.fontname = "arial";
tlabelproperties.fontscript = default_charset
tlabelproperties.fontsize = 24;
----------------------------------------------
tlabelproperties.y = 140;
tlabelproperties.x = 200;
tlabelproperties.text = s[1];
page.createobject(object_label, "b1", tlabelproperties);
label.setproperties("b1", {colornormal = math.hexcolortonumber("000000")});
-------
for r = 2 , con do
tlabelproperties.text = s[r];
tlabelproperties.x = label.getpos("b"..r-1).x + label.getsize("b"..r-1).width + 5;
tlabelproperties.y = 140;
page.createobject(object_label, "b"..r, tlabelproperties);
label.setproperties("b"..r, {colornormal = math.hexcolortonumber("000000")});
end ;
---------------انتهى كود التحويل---------
end
لماذا الان تمت الكتابة بالعربية في رأيك ؟
ثامر أبو بلقيس
09-02-2016, 12:07 AM
شكرا جزيلا اساتذ على المرور و الطرح .......نعمل به في قابل الايام
هل فيه لقطة لوضع النص مقلوبا ليسهل التعامل معه
ما المقصود بالضبط حتى أفهم
عبد الهادي بهاب
09-02-2016, 12:14 AM
ما المقصود بالضبط حتى أفهم
الكود الاول يعمل في النصوص الاجنبية .......اقصد الترتيب من اليسار الى اليمين
فلو كانت الجملة
je suis très content
الكود يقسمها بنفس الترتيب
لكن اذا كانت الجملة بالعربي ..........مثال بسم الله الرحمن الرحيم
الكود يجعلها تظهر هكذا .............الرحيم الرحمن الله بسم
ذللك كان لزاما تغيير حفظ الكلمات في المصفوفة من الاخير الى الاول
عبد الهادي بهاب
09-02-2016, 12:15 AM
لماذا الان تمت الكتابة بالعربية في رأيك ؟
الشرح في الكود ............بعد حفظ الكلمات في المصفوفة الاولى
اعدت حفظها من جديد في المصفوفة الثانية بالمقلوب
عبد الهادي بهاب
09-02-2016, 12:17 AM
هذا توظيفي للكود
t = Input.GetText("Input1");
if t == "" then
Dialog.Message("طريق الاحتراف","انت لم تكتب شبئا");
else
----------------تحويل النص الى كلمات-----------
s={}; e=1;
for w in string.gmatch(t,"[^%s]+") do
Table.Insert(s,e,w);
e=e+1;
end
con = Table.Count(s);
------------------------converti en label ---------------
tLabelProperties = {};
tLabelProperties.FontName = "Arial";
tlabelproperties.fontscript = default_charset -----------------------------هنا وضعت الكود يا استاذ
tLabelProperties.FontSize = 24;
----------------------------------------------
tLabelProperties.Y = 140;
tLabelProperties.X = 200;
tLabelProperties.Text = s[1];
Page.CreateObject(OBJECT_LABEL, "B1", tLabelProperties);
Label.SetProperties("B1", {ColorNormal = Math.HexColorToNumber("000000")});
-------
for r = 2 , con do
tLabelProperties.Text = s[r];
tLabelProperties.X = Label.GetPos("B"..r-1).X + Label.GetSize("B"..r-1).Width + 5;
tLabelProperties.Y = 140;
Page.CreateObject(OBJECT_LABEL, "B"..r, tLabelProperties);
Label.SetProperties("B"..r, {ColorNormal = Math.HexColorToNumber("000000")});
end ;
---------------انتهى كود التحويل---------
end
ثامر أبو بلقيس
09-02-2016, 12:22 AM
أين هي المشاركة التي فيه الكود يعرض الجملة بالمقلوب
لقد كثرت الأكواد ..
عبد الهادي بهاب
09-02-2016, 02:22 PM
أين هي المشاركة التي فيه الكود يعرض الجملة بالمقلوب
لقد كثرت الأكواد ..
الكود في المشاركة الاولى ....اكتب جملة بالعربي سيعرضها بالمقلوب
مثلا .......... ان السماء صافية جدا .............سيعرضها هكذا .........جدا صافية السماء ان
ثامر أبو بلقيس
09-02-2016, 08:25 PM
الكود الاول يعمل في النصوص الاجنبية .......اقصد الترتيب من اليسار الى اليمين
فلو كانت الجملة
je suis très content
الكود يقسمها بنفس الترتيب
لكن اذا كانت الجملة بالعربي ..........مثال بسم الله الرحمن الرحيم
الكود يجعلها تظهر هكذا .............الرحيم الرحمن الله بسم
ذللك كان لزاما تغيير حفظ الكلمات في المصفوفة من الاخير الى الاول
عفوا فهمتك الان تقصد مثل ما حدث هنااااا
في المشاركة : سيدي هل أشارك و أرد و لاتغضب مني ؟
http://www.abc4web.net/vb/showpost.php?p=242574&postcount=7
عبد الهادي بهاب
10-02-2016, 09:57 AM
عفوا فهمتك الان تقصد مثل ما حدث هنااااا
في المشاركة : سيدي هل أشارك و أرد و لاتغضب مني ؟
http://www.abc4web.net/vb/showpost.php?p=242574&postcount=7
نعم من هذا القيبل .......
------------------------------------
السلام عليكم
هذا ملف انطوى على أحد الحلول
http://www.gulfup.com/?JThZ2q
ممكن طرح أسئلة ذات طابع بحثي ممكن الوصول لها مشكووور
--------------------
الخليج غائب و ارجو اعادة رفع الحل من جديد سيدي الكريم
ثامر أبو بلقيس
10-02-2016, 01:09 PM
مساء تجد الرابط محدث على نفس الموضوع الاصلي إن شاء الله
---------------------------------------------------
لكن الحل لا يعني أبدا التخلي عن التمرين المطروح في قسم الاستفسارات لموضوع
مشابه :abc_138: لسببين الاول اللغة الثاني حل 2013 لا يمكن أن يكون هو حل 2016 فالزمن يسير
بسرعة والحلول عليها أن تتطور هي الأخرى :abc_138:
تم تجديد الرابط :
http://www.abc4web.net/vb/showpost.php?p=298232&postcount=149
أبو يوسف
17-02-2016, 04:57 PM
أنتما كفرسي رهان :abc_050:
بارك الله فيكما :abc_152:
vBulletin® v3.8.11, Copyright ©2000-2024, abohmam