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

كيف أعرف جميع النوافذ المفتوحة بالتطبيق؟

بدأه TopSec في 7 يونيو 2010 · 5 رد · 967 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي سؤالين.

هل هناك طريقة مباشرة لمعرفة ماهي ال Forms المفتوحة بالتطبيق في وقت التشغيل.

فكرت في تسجيل اسم الفورم عند الفتح وحذفه عند الغلق في (ملف تكست او قاعدة البيانات أو حتى في TStrings) فهل هناك طريقة أخرى؟

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

وشكرا

#2

EXAMBLE.zip

TopSec كتب:

السلام عليكم

لدي سؤالين.

هل هناك طريقة مباشرة لمعرفة ماهي ال Forms المفتوحة بالتطبيق في وقت التشغيل.

فكرت في تسجيل اسم الفورم عند الفتح وحذفه عند الغلق في (ملف تكست او قاعدة البيانات أو حتى في TStrings) فهل هناك طريقة أخرى؟

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

وشكرا

اخي topsec حياك الله

الموضوع حسب مافهمته بسيط الا اذا كنت تقصد شئ آخر

اما فهمته فهو

01 ترغب معرفة الفورمات المفتوحه في كل شاشه او لكل مشغل لنأخذ كل مشغل بمثالنا هذا

المرفق

ان كنت لبيت طلبك فهناك طرق بأستخدام الكوبري بدلا من الملف مباشرة اما الطلب الثاني

فأعتقد بانه عن طريق تغير واجة الملف ويمكن وضع مثال لك مستقبلا

اتمنى ان اكون تفاعلي معك في مكانه

تم تعديل هذه المشاركة بواسطة shalwan في 7 يونيو 2010 في 20:51

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#3
shalwan كتب:

EXAMBLE.zip

اخي topsec حياك الله

الموضوع حسب مافهمته بسيط الا اذا كنت تقصد شئ آخر

المرفق ويمكنك فتح الملف ومعرفة مافيه ويمكنك ايضا اضافة التاريج والشاشه وغيرها

اتمنى ان اكون تفاعلي معك في مكانه

EXAMBLE.zip

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#4

أخي shalwan شكرا لك على مداخلتك

مثالك أخي الكريم واضح وهو ما فكرت فيه وأعتذر إن لم يكن سؤالي واضحا حيث لم أسال عن طريقة التنفيذ ولكن أسال عن وجود أفكار أخرى أفضل من التي وضعتها في السؤال كأن تكون الفورمز المفتوحة يمكن معرفتها بدالة ما مباشرة من دون تسجيلها وحذفها.

أما بالنسبة للسؤال الثاني فقد وضعت دالة أستخدمها لقلب جميع مكونات الشاشة من اليمين لليسار وبالعكس.

وهذا مثال على اليمين لليسار

procedure RightLeft(F:TForm);
var
  i  : integer;
begin
     for i := 0 to F.ComponentCount-1 do
        begin
        if ( F.Components[ i ] is TCustomlabel ) then
            begin
                 (F.Components[ i ] as TCustomlabel).BiDiMode:= bdRightToLeft;
                 (F.Components[ i ] as TCustomlabel).Left:=F.Width-(F.Components[ i ] as TCustomlabel).Left-(F.Components[ i ] as TCustomlabel).Width;
            End
        Else if ( F.Components[ i ] is TMainMenu ) then
            begin
                 (F.Components[ i ] as TMainMenu).BiDiMode:=bdRightToLeft;
            End
        Else if  (F.Components[ i ] is TWinControl ) then
            begin
                 (F.Components[ i ] as TWinControl).BiDiMode:= bdRightToLeft;
                 (F.Components[ i ] as TWinControl).Left:=F.Width-(F.Components[ i ] as TWinControl).Left-(F.Components[ i ] as TWinControl).Width;
              if (F.Components[ i ] is TDBDateEdit ) then  // (F.Components[ i ] as TWinControl).BiDiMode:= bdLeftToRight;
            End;
        end;
end;

وكان سؤالي هو هل هناك طريقة أكثر مباشرة من إستخدام هذه الدالة

#5

السؤال الأول:

استخدم Screen.Forms

مثال توضيحي , عليك تغييره بما يناسب مشكلتك

add a button and a Memo

procedure TForm1.Button1Click(Sender: TObject);
var
I:integer;
begin
Memo1.Clear;
for  I := 0 to Screen.FormCount-1 do
  begin
    if(Screen.Forms.Visible)then
    Memo1.Lines.Add(Screen.Forms.Caption);
  end;
end;

السؤال الثاني:

أظن تم مناقشته من قبل في المنتدى ...

#6

اشكرك أخي ياسين فهذا تحديدا ما كنت أبحث عنه. Screen.Forms.Visible

لقد تركت برمجة الدلفي فترة طويلة لظروف العمل نسيت فيها أشياء كثيرة ، فشكرا على مساعدتك

بالنسبة للسؤال الثاني أرجو منك أن تدلني على المواضيع حيث أني إستخدمت البحث ولم أعثر على شئ كل ما أريده هو التأكد من أنه لاتوجد طريقة أخرى أفضل من الطريقة التي إستخدمتها

وشكرا

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…