سؤال

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

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

أحد يعرف كيفية جعل TCheckListBox التمرير عموديا بدلا من أفقيا?

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

المحلول

تحتاج إلى تعيين Columns 0.

لجميع القيم الإيجابية VCL يرسل LB_SETCOLUMNWIDTH الرسالة الكامنة الأم تحكم مربع قائمة مع عرض المعلمة تعيين مربع القائمة العميل عرض مقسوما على عدد من الأعمدة.العناصر التي لا تناسب سوف تبدأ عمود جديد مع نفس عرض العمود حتى شريط التمرير الأفقي تصبح مرئية.

إذا Columns 0 ثم هناك عمود واحد يمتد على كامل العميل عرض مربع القائمة والعناصر التي لا تناسب جعل شريط التمرير العمودي مرئية ، و إخفاء شريط التمرير الأفقي.

تحرير:

يبدو أن هناك مصلحة حقيقية ما يحدث عندما يكون قيمة سالبة يستخدم Columns مكان الإقامة.

طريقة TCustomListBox.CreateParams() مجموعات LBS_MULTICOLUMN قائمة نمط مربع اعتمادا على Columns الممتلكات مختلفة من 0.عن القيم السلبية نمط العلم هو مجموعة, ولكن VCL لا يرسل LB_SETCOLUMNWIDTH الرسالة لذا الأصلية التحكم يستخدم الافتراضي عرض العمود.فمن موثقة أن تكون:

15 أضعاف متوسط حرف عرض الخط المستخدم من مربع القائمة.

(البحث عن "LBS_MULTICOLUMN النمط يحدد" إلى البحث ذات الصلة المقطع من النص.)

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