سؤال

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

وأود أن تكرار هذه bahaviour في سليل TCustomControl حيث I نفذت شريط التمرير الأفقي. حتى أضفت WS_HSCROLL إلى أسلوبي نافذة (في CreateParams) ونفذت معالج WM_HSCROLL. على طول الطريق، وأنا استخدم SetScrollRange وSetScrollPos لإدارة مجموعة وموقف المسار الإبهام - ولكن لا يزال فتى ساحة صغيرة شبه مثالية

.

ما أنا في عداد المفقودين؟

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

المحلول

وثائق توصي باستخدام <لأ href = "HTTP: //msdn.microsoft.com/en-us/library/bb787595.aspx "يختلط =" نوفولو noreferrer "> SetScrollInfo بدلا من SetScrollRange وSetScrollPos.

الجواب فوتر في يشير إلى تحتاج أيضا إلى ضبط حجم الصفحة. موقف ومجموعة قول OS حيث ينتمي وسط الإبهام، ولكن حجم الصفحة يقول أنه كم من مجموعة غير مرئية، و<م> هذا ما يحدد حجم الإبهام. لديك لاستخدام SetScrollInfo لذلك؛ على سبيل المكافأة، فإنه يتيح لك تحديد موقف ومدى وحجم الصفحة في كل مرة.


وTCustomControl يختلف عن TWinControl في اتجاه واحد فقط: من لديه قماش. يختلف TScrollingWinControl في اتجاه واحد فقط، أيضا: من لديه أشرطة التمرير. يجب إضافة قماش لسليل TScrollingWinControl يكون أسهل بكثير من إضافة أشرطة التمرير إلى سليل TCustomControl - انها أقل رمز لنسخ ولصق من شفرة المصدر VCL. تغيير الفئة الأساسية التحكم الخاصة بك ومن ثم نرى أين أنت.

وحتى لو كان هذا ليس خيارا، كنت لا تزال تفعل جيدا للنظر في كيفية TScrollingWinControl وTControlScrollBar العمل معا.

نصائح أخرى

ويمكنك استخدام خاصية PageSize للتأثير على حجم الإبهام.

مثال:

ScrollBar1.Min      := 0;
ScrollBar1.Max      := 100;
ScrollBar1.Position := 70;
ScrollBar1.PageSize := 50;

هل تبدو مثل:

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