เหมาะสำหรับผู้เริ่มต้นใน Delphi ผู้ที่มีความรู้และประสบการณ์เชิงวัตถุในการเขียนโปรแกรม Java หรือ VC
เรามักจะเห็นรหัสเช่นนี้ในคลาส Delphi: คุณสมบัติคุณสมบัติคุณสมบัติประเภทคุณสมบัติการอ่านสตริง 1 เขียนสตริง 2
ชื่อของคุณลักษณะที่นี่อาจแตกต่างกัน ทั้งหมดอยู่ในรูปแบบนี้: คุณสมบัติคุณสมบัติการอ่านสตริง 1 เขียนสตริง 2
ฉันใช้คุณสมบัติทางซ้าย: จำนวนเต็มอ่าน Fleft Write Setleft; ซ้ายเป็นทรัพย์สินจำนวนเต็ม อ่านประกาศตัวแปรหรือวิธีการเข้าถึงตัวแปรและเขียนประกาศตัวแปรหรือวิธีการเข้าถึงเมื่อแก้ไขตัวแปร หมายเหตุ: มันอาจเป็นตัวแปรหรือวิธีการ นี่เป็นตัวแปรที่เรียกว่า Fleft สำหรับวัตถุประสงค์ของการห่อหุ้มเรามักจะใส่ตัวแปรดังกล่าวในช่วงกลางของส่วนตัว
Fleft: รหัสจำนวนเต็ม (สำหรับนิสัยการตั้งชื่อเราตั้งชื่อตัวแปรดังกล่าวเป็นทุน F ก่อนชื่อแอตทริบิวต์) ด้วยวิธีนี้เมื่อคุณอ่านทรัพย์สินคุณกำลังเข้าถึงมูลค่าของ Fleft ดังนั้นคุณสามารถเขียนวิธีการบางอย่างเพื่อแก้ไข FLEX และปรับเปลี่ยนค่าของซ้าย จากนั้นมาดู Setleft อีกครั้ง คำแถลง:
ขั้นตอน setleft (ค่า: จำนวนเต็ม);
และการใช้รหัสต่อไปนี้:
ขั้นตอน tcontrol.setleft (ค่า: จำนวนเต็ม);
เริ่ม
setbounds (ค่า, ftop, fwidth, fheight);
รวม (fscalingflags, sfleft);
จบ;
หากคุณเขียนโค้ดต่อไปนี้เพื่อเปลี่ยนไปทางซ้าย: การควบคุม 1.Left: = 23 ดังนั้นโปรแกรมเรียกใช้ฟังก์ชัน Setleft (23) การตั้งค่าเป็นฟังก์ชั่นที่เปลี่ยนแปลงภูมิภาคที่นี่คุณเข้าใจถึงประโยชน์ของการห่อหุ้ม ซ้ายมันจะเปลี่ยนขนาดของพื้นที่ตามซ้ายใหม่และฟังก์ชั่นนี้ยังเปลี่ยนขนาดของ Fleft
ขั้นตอน tcontrol.setbounds (Aleft, บนยอด, Awidth, Aheight: Integer);
เริ่ม
หาก CheckNewsize (Awidth, Aheight) และ
((Aleft <> Fleft) หรือ (บนยอด <> ftop) หรือ
(Awidth <> fwidth) หรือ (aheight <> fheight)) จากนั้น
เริ่ม
Invalidatecontrol (มองเห็นได้เท็จ);
Fleft: = Aleft;
ftop: = atop;
fwidth: = awidth;
fheight: = aheight;
updateAnChorrules;
เป็นโมฆะ;
ดำเนินการ (WM_WINDOWPOSCHANGED, 0, 0);
requestalign;
ถ้าไม่ (csloading ในส่วนประกอบ) ให้ปรับขนาด;
จบ;
จบ;
วิธีนี้ภายนอกดูเหมือนว่าค่าของแอตทริบิวต์จะถูกเปลี่ยนแปลงผ่านการดำเนินการที่ได้รับมอบหมายเท่านั้น การอ่านและเขียนอาจเป็นตัวแปรหรือฟังก์ชั่นขึ้นอยู่กับการออกแบบของคุณ แน่นอนคุณสามารถเขียนสิ่งนี้: คุณสมบัติคุณสมบัติคุณสมบัติประเภทคุณสมบัติการอ่านตัวแปร 1 เขียนตัวแปร 2 ตัวแปร 1 และตัวแปร 2 อาจเหมือนกัน คุณยังสามารถทำคุณสมบัติคุณสมบัติคุณสมบัติคุณสมบัติประเภทการอ่านวิธีการเขียน 1 วิธีการเขียน 2 ชุดค่าผสมใด ๆ สำหรับคุณ แต่มีสองสิ่งที่ควรทราบ:
1. กฎการตั้งชื่อนั้นดีที่สุดตามนิสัยและอ่านง่าย
2. หากเป็นตัวแปรประเภทจะต้องเหมือนกับประเภทของแอตทริบิวต์
เรามักจะใช้แอตทริบิวต์เหตุการณ์ของส่วนประกอบเช่นเหตุการณ์คลิก แต่มันยากสำหรับเราที่จะเห็นจากพื้นผิวว่ามันถูกเรียกว่าและวิธีการที่ถูกกระตุ้นอย่างไร ฉันจะตอบคุณด้านล่าง
ในผู้ตรวจสอบวัตถุของผู้จัดการอสังหาริมทรัพย์เราจะเห็นว่าชื่อของวิธีการนั้นสอดคล้องกับด้านขวาของหน้าเหตุการณ์ onclick ในความเป็นจริงเราสามารถให้เหตุการณ์ขององค์ประกอบที่สอดคล้องกับวิธีก่อนหน้า ใช้แบบฟอร์มเป็นตัวอย่าง Form1 โปรดทราบว่าพารามิเตอร์รายการของวิธีการมีความสำคัญเป็นพิเศษนี่คือ (ผู้ส่ง: tobject)
ลองใช้ TCONTROL เป็นตัวอย่างและเราพบรหัสนี้:
สถานที่ให้บริการ onmousedown: tmousevent อ่าน fonmousedown เขียน fonmousedown;
tMouseVent = ขั้นตอน (ผู้ส่ง: tobject; ปุ่ม: tmouseButton; shift: tshiftstate; x, y: จำนวนเต็ม) ของวัตถุ;
อย่างที่คุณเห็นมันเป็นฟังก์ชั่นจริง ๆ แต่ส่วนสีน้ำเงิน จำกัด พารามิเตอร์รายการ จากนั้นเรากำหนดรูปแบบ 1 จากนั้นเราเพียงแค่เขียนฟังก์ชั่นที่สกัดกั้นข้อความเมาส์และเรียก Fonmousedown โดยตรงหรือโดยอ้อมจากนั้นเราจะสอดคล้องกับข้อความและฟังก์ชั่นการประมวลผล ที่นี่มีหลายเลเยอร์ที่เรียกว่าทางอ้อมซึ่งใช้เวลานานและเกี่ยวข้องกับประเภทข้อความขอแนะนำให้คุณอ่านหนังสือของ Li Wei
ต่อไปนี้เป็นกระบวนการโทรทางอ้อม
โพรซีเดอร์ WMRBUTTONDBLCLK (ข้อความ VAR: TWMRBUTTONDBLCLK);
ขั้นตอน tcontrol.wmrbutondblclk (ข้อความ var: twmrbutondblclk);
เริ่ม
สืบทอด;
Domousedown (ข้อความ, mbright, [ssdouble]);
จบ;
โพรซีเดอร์ Domousedown (ข้อความ var: twmmouse; ปุ่ม: tmouseButton;
Shift: TSHIFTSTATE);
ขั้นตอน tcontrol.domousedown (ข้อความ var: twmmouse; ปุ่ม: tmouseButton;
Shift: TSHIFTSTATE);
เริ่ม
ถ้าไม่ใช่ (csnostdevents ใน controlstyle) แล้ว
ด้วยข้อความทำ
ถ้า (ความกว้าง> 32768) หรือ (ความสูง> 32768) แล้ว
ด้วย calccursorpos ทำ
Mousedown (ปุ่ม, keystoshiftstate (ปุ่ม) + Shift, x, y)
อื่น
mousedown (ปุ่ม, keystoshiftstate (ปุ่ม) + shift, message.xpos, message.ypos);
จบ;
ขั้นตอน mousedown (ปุ่ม: tmouseButton; shift: tshiftstate;
x, y: จำนวนเต็ม);
ขั้นตอน tcontrol.mousedown (ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
เริ่ม
ถ้าได้รับมอบหมาย (Fonmousedown) จากนั้น Fonmousedown (ตัวเอง, ปุ่ม, Shift, X, Y);
จบ;
หากคุณเขียนชั้นเรียนของคุณเองมากขึ้นคุณจะพบว่าการทำสิ่งนี้สะดวกสบายโดยไม่ต้องเขียน getleft, setleft เหมือน Java แล้ววางข้อความในแบบส่วนตัว ของพวกเขาเป็นเพียงการเรียก control1.text เพื่อเข้าถึง, control1.text: = 'สตริงที่แน่นอน' เพื่อแก้ไขค่าของมัน
ในแง่ของข้อความการประมวลผลคลาสฐานประกาศคุณสมบัติเช่น onclick และ onmousedown ตามที่ได้รับการคุ้มครอง ไม่สามารถเปิดเผยได้
การวิจัยของฉันไม่ลึกล้ำโปรดแก้ไขให้ฉันหากคุณมีความไม่เหมาะสม :) ยินดีต้อนรับสู่ [email protected]