delphi4arab منتديات دلفي للعرب

نسخة كاملة : جعل TImage معربة RTL في الـ Runtime
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم,

إخواني لدي مشكلة في مكون الـ TImage عندما أقوم بعمل Load لصورة ما يكون الـ x و y الخاصة بالصورة تبدأ من جهة اليسار العليا.

أود العكس من اليمين العلوي.

قمت بالبحث في الانترنت لمدة يومين ولم أجد حلا مقنعا.

قبيل البحث راودتني فكرة تطبيق API function والتي تعرب المكونات لكن يظهر دلفي لي خطأ ويقول بأن image1 لا تمتلك عضوا من Handle

ها هو الكود:

كود :
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(Image1.Handle,GWL_EXSTYLE,
      GetWindowLong(Image1.Handle,GWL_EXSTYLE) or WS_EX_LAYOUTRTL);
end;

وكنت أيضا أود التعديل على وحدة الـ TImage لتعريب المكون لكن خفت بأن يصيب المكون عطب دائم

هل لديكم أية افكار لحل المشكل ؟
وعليكم السلام ورحمة الله وبركاتة

توجد طريقة .... بدون استعمال دوال API Function
وهي سهله للغاية :

كود :
procedure TForm1.btn1Click(Sender: TObject);
begin
  img1.Width := img1.Width - 1;
  img1.Left := img1.Left + 1;

  img1.Height := img1.Height - 1;
end;

اليس الامر سهل Smile
أخي المهند يبدو انني شرحت الامر بطريقة غير واضحة اعذرني على ذلك

شاهد هذه الصورة

[صورة: autumnriverwoodenbridge.jpg]

عندما تقوم بعمل Resize للصورة من الجهة السفلية اليمنى يضل مربط فرس الصورة في الزاوية العليا اليسرى ويتم إخفاء باقي تفاصيل الصورة في الجهة السفلية اليمنى.

تخيل أن لديك صورة لدفتر ذو سلك حديدي واعتبر ان سلك الدفتر موجود في الجهة اليمنى من الصورة

اذا قمت بتحميل الصورة وتم تكبير النافذة او تصغيرها فان السلك سيختفى لان مكون الصورة LTR وليس RTL

اتمنى ان تكون الفكرة قد وضحت :$
لقد وجدت الحل

الحل منطقي يال غبائي :confused:

قم بتكبير مكون TImage ليحتوي على جميع أطراف الصورة

ثم قم بتحريك المكون وضع زاوية الصورة اليمنى العلوية عند زاوية النافذه العلوية اليمنى

لا تقلق بشأن أطراف الصورة التي لم تحتويها النافذه وهي الجهة اليسرى

قم بضبط الـ Anchors لتكون AkRight & AkTop

قم بتشغيل البرنامج ثم كبر النافذة وصغرها واستمتعوا Wink
و كيف تريد أن يكون لل Image مقبض وهي منبثقة من TGraphicControl
PHP كود :
TImage = class(TGraphicControl
مستحيل .. أي كلاس أو مكون منبثق من ال TGraphicControl لا يحتوي على Handle مثل ال TLabel
------------------
هناك طريقة بديلة
أضف Panel الى المشروع ثم أضف Image الى البانل بحيث:
PHP كود :
Image1.Parent :=Panel1
ثم في FormCreate :
PHP كود :
SetWindowLong(Handle,GWL_EXSTYLE,
     
GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_LAYOUTRTL);
SetWindowLong(Panel1.Handle,GWL_EXSTYLE,
     
GetWindowLong(Panel1.Handle,GWL_EXSTYLE)  and not WS_EX_LAYOUTRTL);