วันนี้ฉันเดินไปรอบ ๆ ฟอรัม CSDN และพบโพสต์ดังกล่าว "ฉันเพิ่งเห็นรหัสที่สวยงามสองสามบรรทัดจากอาจารย์ศิลปะการต่อสู้และฉันไม่สามารถคิดได้ฉันหวังว่าคุณจะให้คำแนะนำกับฉัน" ทัศนคติของการเรียนรู้จาก Masters ศิลปะการต่อสู้ทั้งหมดฉันเห็นหลังจากจบโพสต์ทั้งหมดฉันพบว่าเนื้อหานั้นคลาสสิกมาก
พิมพ์
tStringGridex = คลาส (tStringGrid);
ขั้นตอน tform1.button1click (ผู้ส่ง: tobject);
เริ่ม
ถ้า tStringGridex (StringGrid1) .RowCount> 5 แล้ว
TStringGridex (StringGrid1) .deleterow (5);
จบ;
------------------------------------------------------ --------
นี่คือรหัสเพื่อลบบรรทัดของรหัสใน StringGrid ฉันทำงานเกี่ยวกับปัญหานี้เป็นเวลา 2 ชั่วโมง แต่ไม่สามารถแก้ปัญหาได้ แต่ทำไม TSTRINGGRIDEX = คลาส (TSTRINGGRID); เห็นได้ชัดว่ามันยังเป็น tstringgrid ที่สืบทอดมาซึ่งเหมือนกับ tstringgrid? หัวของฉันใหญ่เกินไป! หวังว่าคุณจะให้คำแนะนำกับฉัน!
ข้างต้นเป็นเนื้อหาของคำถามของโปสเตอร์ Delphi
1. สมาชิกที่ได้รับการป้องกันของ TSTRINGGRIDEX สามารถเข้าถึงได้ใน TFORM เนื่องจากถูกกำหนดไว้ในหน่วยเดียวกัน
2. สมาชิกที่ได้รับการป้องกันของ TStringGrid ไม่สามารถเข้าถึงได้ใน TFOR เนื่องจากไม่ได้กำหนดไว้ในหน่วยเดียวกัน
3. เนื่องจาก tStringGridex = คลาส (tStringGrid) การเข้าถึงสมาชิกที่ได้รับการป้องกันของ TStringGridex ที่นี่เทียบเท่ากับการเข้าถึงสมาชิกที่ได้รับการป้องกันของ TStringGrid
4. TSTRINGGRIDEX เป็นเพียงตัวกลางและฟังก์ชั่นของมันไม่ขยาย แต่มันแนะนำขอบเขตของ TSTRINGGRID ในหน่วยนี้ดังนั้น TFORM สามารถเข้าถึงสมาชิกที่ได้รับการป้องกันของ TSTRINGGRID
มุมมองของ Zhangmenyi คือสมาชิกที่ได้รับการปกป้องและเป็นส่วนตัวของ Delphi สามารถมองเห็นได้ในชั้นเรียนและวัตถุต่าง ๆ ในหน่วยเดียวกันและสมาชิกที่ได้รับการป้องกันสามารถมองเห็นได้ในหน่วยย่อยของสมาชิก . การดัดแปลงใด ๆ สามารถทำให้สมาชิกที่ได้รับการป้องกันใน tstringgrid มองเห็นได้ เปิดออก นอกจากนี้เรายังสามารถมองเห็นลักษณะเชิงวัตถุของ Delphi ได้จากสิ่งนี้
แม้ว่าจะสะดวกสำหรับการพัฒนา แต่ก็สามารถสร้างความสับสนให้กับผู้เริ่มต้น
ไม่เข้มงวดพอ
แต่อย่างไรก็ตาม Delphi ไม่ได้อยู่ในความรุ่งโรจน์อีกต่อไปลองใช้มัน
ความคิดเห็นของ Zhang Men San: ไม่มีสิ่งที่สมบูรณ์แบบ! มีเพียงสิ่งที่เหมาะสม!
ความคิดเห็นของ Zhangmen 4: วิธีการป้องกันโดยทั่วไปจะถูกซ่อนไว้ดังนั้นจึงเป็นไปไม่ได้ที่จะสร้างอินสแตนซ์ของคลาสโดยตรง แต่ใน Delphi คลาสที่อยู่ในหน่วยเดียวกันนั้นถือว่าเป็นคลาสเพื่อนโดยอัตโนมัติและสามารถเข้าถึงวิธีการที่ได้รับการป้องกัน ดังนั้นคุณสามารถเห็นวิธีการป้องกันโดยการเขียนการใช้งาน subclass ในหน่วยที่เกี่ยวข้อง