سؤال

ولدي مشكلة أنا غير قادر على حل على الرغم من أن أقضي وقتا طويلا في محاولة للقيام بذلك.

وعادة ما تستخدم GridPanels لمحاذاة عناصر التحكم في النماذج. كان لديه، ومع ذلك، علة مزعج. عندما وضع GridPanel محاذاة هو alClient وأنا تكبير النافذة الأم، وGridPanel يعدل الى الحجم الجديد من تلك النافذة، ومع ذلك، والضوابط ووضع على شبكة لا. فإنها تبقى في نفس الموقف الذي كانت عليه من قبل نافذة تغيير الحجم. يحدث فقط في تعظيم نافذة الأول. إذا تم تغيير حجم نافذة يدويا أولا، افيريتينج على ما يرام. أعتقد أن شبكة بضبط عناصر التحكم التابعة لها بعد وقوع الحدث بتغيير الثاني (؟؟).

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

وشكرا لمساعدتكم مقدما،

وماريوس.

هل كانت مفيدة؟

المحلول

وآه، لقد كان لي مشاكل مماثلة أيضا. قد تكون ذات صلة مشكلة تغيير حجم في VCL. قد ترغب في محاولة الإصلاح عن طريق اندرياس Hausladen . ويبدو أن العمل بالنسبة لي في معظم الحالات.

نصائح أخرى

ولقد وجدت خدعة واحدة.

وفي الحدث OnResize من الأم لgridpanel، عرض تغيير gridpanel بنسبة 1 بكسل.

وبعد ذلك gridPanel سيلاحظ حجم تغيرت، ثم إعادة ترتيب الضوابط الفرعية في gridpanel ..

والعينة أدناه ..

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.Width := GridPanel1.Width - 1;  // subtract 1
  GridPanel1.Width := GridPanel1.Width + 1;  // recover width by adding 1
end; 

وتغيير عرض / إبطال عنصر التحكم لا يعمل بالنسبة لي (شيء تغير مع الإصدارات الأخيرة من RAD ستوديو؟).

وعلى أي حال مماثلة، الحل بسيط على طول هذا الخط هو:

procedure TForm1.FormResize(Sender: TObject);
begin
  GridPanel1.ControlCollection.BeginUpdate;
  GridPanel1.ControlCollection.EndUpdate;
end; 

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

وعلى تغيير الحجم من GridPanel.Invalidate دعوة المالك. لم أكن اختباره. آمل أن يكون العمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top