الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أصل إلى المكونات أثناء التفيذ

مغلق
بدأه __الهاوي__ في 30 يوليو 2005 · 3 رد · 562 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أولا أشكر كل النشيطين في هذا المنتدى وأدعو لهم الله بخير الجزاء نتيجة ما يعملوه لمعاونة إخوانهم

أظن أنني لن أخيب في طرح سؤالي هنا، والذي لم أجد له حلا:

أنا حاليا بصدد إنجاز برنامج لتسيير قاعدة بيانات لمكتبة جامعية، الجدول يحوي كتبا عربية وفرنسية، وأنا مطالب بأن تكون الواجهة عربية وفرنسية، بدلا من أن أصنع برنامجين مختلفين أود أن يكون ذلك بتغيير خاصية Caption أثناء التنفيذ، لكن ليس عدلا أن أكتب كل المكونات بإحتمالاتها، فرتأيت إلى هذا الحل

قمت بإنشاء جدول للغة، أود أن يرسل البرنامج أثناء التنفيذ القيمة المناسبة إعتمادا على هذا النموذج

langue.jpg

يعني مثلا:

ButtonClick(....);
var
     CommonObj:TObject;
begin
     While Not (Table1.EOF) do
     begin
          CommonObj.Name:=Table.Field(1).Value;
          CommonObj.Caption:=Table.Field(2).Value Or Table.Field(3).Value;
     end;
end;

هل يمكنني تحقيق ذلك

إذا لم ينفع مع الجدول فهي يمكنني استعمال ملف خارجي

ملاحظة: هذا الأسلوب يسمح لي بإدراج لغات كثيرة

أرجو أن أجد الجواب معكم

رافقتكم السلامة

#2

سيكون على الغالب شبيه بالكود التالي ..

فقط قم ببعض التعديلات , وإن شاء الله يعمل ..

ملاحظة كتبته الآن دون تجربة , لذلك في حال وجدت أخطاء ما حاول إصلاحها مباشرة أو ضعها هنا للنظر فيها :

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
  Comp: TComponent;
begin
  Table1.First;
  while not (Table1.EOF) do
  begin
    comp := FindComponent(Table1.FieldValues['NomDuComposant'].Value)

    if Comp is TButton then
      (Comp as TButton).Caption := FieldValues['CaptionArabe'].Value
else
  if Comp is TLabel then
    (Comp as TLabel).Caption := Table.Field(2).FieldValues['CaptionFrancais'].Value
;

  Table1.Next;
end;

end;

لاحظ , في حال لزمك عناصر أخرى غير label و button أضفها بنفس الطريقة

تم تعديل هذه المشاركة بواسطة ORWA في 30 يوليو 2005 في 23:40

#3

ولكي تريح نفسك من بناء الجددول والإضافة عليه يمكن أن تقوم بذلك بعملية بسيطة ..

أيضا ستكون شبيهه بالتالي :

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
  Comp: TComponent;
begin
for i:=0 to form1.ComponentCount-1 do
begin
comp := Form1.Components;
if (comp is TButton ) or (comp is TLabel) then

Table1.Insert;

Table1.FieldByName('NomDuComposant').Value:=comp.Name;

if (comp is TButton )then
Table1.FieldByName('CaptionArabe').Value:=(Comp as TButton).Caption;
if (comp is TLabel) then
Table1.FieldByName('CaptionArabe').Value:=(Comp as TLabel).Caption;

Table1.Post

end;

end;

وهي تقوم بالإضافة تلقائيا لقاعدة البيانات كل المكونات من النوع Button أو Label , وتضع إسمها وتضبط حقل إلحدى اللغات , وباقي اللغات عليك

#4

السلام عليكم

أولا المعذرة عن هذا التأخر، لقد تخرب عندي الحاسب وكلفني مصاريف لإصلاحه.

شكرا لك أخي العزيز ORWA على توجيهاتك الطيبة، وعلى الأكواد الرائعة التي كتبتها.

بعد مسح للمشكلة، ارتأيت إلى أن أنجز نسختين منفصلتين (فرنسية/ عربية) بدل نسخة واحدة لكثرة الرسائل، البيانات والواجهات، مما سيطرح كودا برمجيا معقدا لفعل ذلك.

على كل شكرا لك، لأن هذه الأكواد أحتاجها كثيرا في برامجي.

رافقتكم السلامة

هذا الموضوع مغلق.

مواضيع مشابهة