دلفي: كيفية ضبط برمجيا ترتيب المرئيات للمكونات مع align = altop

StackOverflow https://stackoverflow.com/questions/1259849

  •  12-09-2019
  •  | 
  •  

سؤال

لدي نموذج مع عدد من الألواح، لكل منها محاذاة = AltoP، لذلك يكدسون بشكل جيد من أعلى النموذج.

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

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

المحلول

يمكنك بسهولة نقل لوحة محاذاة أعلى إلى الأعلى عن طريق إعدادها قمة الممتلكات إلى 0. وبعد قم بذلك في عكس النظام المطلوب (لوحة أسفل أولا) وأنت تم ذلك.

نصائح أخرى

حركهم بنفس الطريقة التي تنتقلها إليها في وقت التصميم باستخدام الماوس: اضبط اللوحة الحالية Top الممتلكات إلى واحد أقل من Top خاصية اللوحة التي تريد أن تكون أقل من اللوحة الحالية. سيعتني VCL بالباقي.

إذا كان لديك لنقل عدة لوحات، ابدأ BeginDeferWindowPos. وبعد اضبط جميع اللوحات على أي إحداثيات تريدها DeferWindowPos, ، ثم اجعلها جميعا تتحرك مرة واحدة EndDeferWindowPos.

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

من أجل تغيير النظام، حاول:

  1. إخفاء اللوحات
  2. إزالة الألواح من مراقبة الوالدين
  3. أضف لوحات إلى عنصر تحكم الوالدين في الطلب الجديد الذي ترغب فيه
  4. إظهار اللوحات

ماذا عن محاولة محاذاة أعلى TGridPanel مع عمود واحد و ن الصفوف بدلا من ذلك --- إعادة ترتيب لوحات محاذاة أعلى قليلا من الألم، حقا.

(ملحوظة: TGridPanel متوفر في دلفي 2007 وما فوق، إذا كنت أتذكر بشكل صحيح).

إذا قمت بتغيير الجزء العلوي من لوحة ترتيب تغيير لوحة بصريا.

جرب هذا (جميع الألواح محاذاة altop. و مع نفس الارتفاع):

لوحة 0.
لوحة 1.
لوحة 2
لوحة 3.
لوحة 4.

في عند النقر حدث من جميع اللوحات افعل هذا:

 TPanel(Sender).Top := TPanel(Sender).Top - TPanel(Sender).Height - 2;

إذا قمت بالنقر فوق لوحة، فإنه يتحرك موضع واحد.

هذه هي الفكرة. تغيير أعلى بكسل x.
في الأمر، إذا قمت بذلك:

   TPanel(Sender).Top := TPanel(Sender).Top - (TPanel(Sender).Height * 2)- 2; 

الفريق حتى 2 وظيفة.

وأضاف: إذا كنت تستخدم السحب والإفلات، فإن هذه الأحداث ترجع الموضع (x و y)؛ مع الموضع الأصلي ووضع النهاية، يمكنك حساب أعلى WEW ل Asign إلى اللوحة.

عذر شكل لغتي الإنجليزية الفقيرة. مع تحياتي

لقد استخدمت التعليمات البرمجية التالية:

procedure Show_Hide (Flag_Show : boolean);
begin
  if Flag_Show then
  begin
    with Panel_1 do begin Align := alTop; Visible := true; end;
    with Panel_2 do begin Align := alTop; Visible := true; end;
    with Panel_3 do begin Align := alTop; Visible := true; end;
    with Panel_4 do begin Align := alTop; Visible := true; end;
  end else
  begin
    with Panel_1 do begin Visible := false; Align := alNone; end;
    with Panel_2 do begin Visible := false; Align := alNone; end;
    with Panel_3 do begin Visible := false; Align := alNone; end;
    with Panel_4 do begin Visible := false; Align := alNone; end;
  end;
end;

وفقا لبلدي رغبتي PAN_1 PACK_2 PELECE_4

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

شكرا.

panel3.Visible  := True;
panel3.Top      := 0;

panel2.Visible  := True;
panel2.Top      := 0;

panel1.Visible  := True;
panel1.Top      := 0;

آخر سيكون الأول.

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