เนื่องจาก Delphi ใช้แนวทางเชิงวัตถุอย่างสมบูรณ์ คอมไพเลอร์ที่เร็วที่สุดในโลกในปัจจุบัน และเทคโนโลยีฐานข้อมูลชั้นนำ โดยเฉพาะอย่างยิ่งความเข้ากันได้อย่างสมบูรณ์กับ Windows API และความสามารถในการสร้างโค้ดอัตโนมัติที่ยอดเยี่ยม... ผู้คนต่างเห็นว่าในเวลาอันสั้น ในช่วงไม่กี่ปีที่ผ่านมา Delphi มีความโดดเด่นท่ามกลางเครื่องมือการพัฒนามากมาย! คุณสมบัติที่ยอดเยี่ยมหลายประการของ Delphi ที่ช่วยให้โปรแกรมเมอร์สามารถพัฒนาซอฟต์แวร์ประยุกต์ระดับมืออาชีพได้ในระยะเวลาอันสั้น ในขณะที่ทำงานน้อยมาก!
ดังคำกล่าวที่ว่า เรามาทำให้ดีขึ้นกันดีกว่า! เราจะใช้ประโยชน์จาก Delphi อย่างเต็มที่เพื่อออกแบบโปรแกรมให้เร็วขึ้นได้อย่างไร?
1. ใช้ประโยชน์จากการแบ่งปันรหัสอย่างสมบูรณ์ (Jubang):
จุดประสงค์นี้ไม่ใช่เพียงเพื่อ "ขี้เกียจ" เท่านั้น แต่ยังเป็นวิธีเพิ่มประสิทธิภาพโค้ดโปรแกรมอีกด้วย แน่นอนว่าสิ่งแรกที่ต้องพิจารณาคือสามารถแชร์ได้หรือไม่ (ง่ายมาก ดูว่าจะรวมอยู่ในคอลเลกชันแบบเลื่อนลงของงานหรือไม่) และสิ่งที่สองที่ต้องใส่ใจคือจะมีหรือไม่ " ปัญหา" หลังจากแชร์ เพราะความถูกต้องคือก้าวแรก จำเป็นต้องดำเนินการปรับให้เหมาะสมก็ต่อเมื่อรับประกันว่าถูกต้องเท่านั้น!
ตัวอย่างเช่น: เราจะส่งข้อความยืนยันก่อนที่ผู้ใช้จะลบข้อมูล:
PROcedure TForm1.Table1BeforeDelete (ชุดข้อมูล: TDataSet);
เริ่ม
//ยืนยันบันทึกการลบ
ถ้า MessageBox(handle,'คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกปัจจุบัน?','Confirm',MB_IconQuestion+MB_YesNo)=IDNO แล้ว
ยกเลิก;
จบ;
จากนั้น ตราบใดที่คุณยินยอมให้ผู้ใช้ยืนยันก่อนที่จะลบบันทึกข้อมูล คุณสามารถแชร์โค้ดนี้ได้อย่างสมบูรณ์ในเหตุการณ์ TDataSet.BeforeDelete (BeforeDelete of Table2, BeforeDelete of Table3...) โชคดีไม่ได้เกิดขึ้นทุกวัน บางครั้งมันก็ไม่ได้ตรงไปตรงมาและง่ายดายนัก...
คำว่า "As" ไม่เพียงแต่มีประโยชน์อย่างยิ่งในภาษาอังกฤษเท่านั้น แต่ยังมีประโยชน์ในภาษา Delphi ด้วย! สิ่งนี้จะเกิดขึ้นเมื่อเราต้องการแบ่งปันโค้ดสำหรับส่วนประกอบที่ "คล้ายกัน" หลายอย่าง: เราเพียงแต่ต้องเขียนโค้ดสำหรับหนึ่งในนั้นเท่านั้น
ตัวอย่างเช่น ถ้าเราต้องการให้สีพื้นหลังของกลุ่มกล่องแก้ไขข้อความเปลี่ยนเป็นสีน้ำตาลเมื่อได้รับอินพุตโฟกัส และเพื่อคืนค่าสีของระบบเมื่อสูญเสียโฟกัส เราสามารถแชร์โค้ดเช่นนี้ได้ (ให้เหตุการณ์ของแต่ละรายการ กล่องแก้ไขข้อความแชร์รหัสต่อไปนี้):
ขั้นตอน TForm1.Edit1Enter (ผู้ส่ง: TObject);
เริ่ม
(ผู้ส่งเป็น TEdit).color:=ClTeal; //รับอินพุตโฟกัส
จบ;
ขั้นตอน TForm1.Edit1Exit (ผู้ส่ง: TObject);
เริ่ม
(ผู้ส่งเป็น TEdit).color:=ClWindow; //สูญเสียโฟกัสอินพุต
จบ;
ตัวอย่างข้างต้นดูเจาะจงเกินไปหน่อย จะเป็นอย่างไรหากฉันให้ความสนใจเป็นพิเศษกับส่วนประกอบบางส่วนเท่านั้น ตามตัวอย่างข้างต้น มีสองช่องป้อนข้อความที่ต้องป้อนตัวเลข เพื่อดึงดูดความสนใจของผู้ใช้ สีจะเปลี่ยนเป็นสีน้ำเงินเมื่อได้รับโฟกัส แต่ฉันยังไม่ต้องการเขียน รหัสสำหรับแต่ละองค์ประกอบแยกกัน
เพื่อแก้ไขปัญหานี้ คุณสามารถใช้แอตทริบิวต์ Tag ของส่วนประกอบได้ ขั้นแรกให้กำหนดแท็กที่ไม่เป็นศูนย์และไม่เท่ากันให้กับส่วนประกอบที่จะประมวลผลเป็นพิเศษ (ต้องสังเกตว่า Delphi จะไม่ตรวจสอบว่าค่าแท็กเท่ากันหรือไม่ และคุณต้องควบคุมมันเองระหว่างการออกแบบ) จากนั้นเขียนโค้ดดังนี้ คุณยังสามารถแชร์ได้:
ขั้นตอน TForm1.Edit1Enter (ผู้ส่ง: TObject);
เริ่ม
case (ผู้ส่งเป็น TEdit).Tag of
10,20:(ส่งเป็น TEdit).Color:=clBlue //กล่องข้อความสำหรับป้อนตัวเลข
อื่น
(ผู้ส่งเป็น TEdit).Color:=clTeal; //กล่องข้อความอื่นๆ
จบ;
จบ;
(หมายเหตุต่อไปนี้จะถือว่าอยู่ภายใต้เงื่อนไขเริ่มต้นของ Delphi)
1. ใช้คำสำคัญตนเอง:
อาจจะมีคนคิดว่าฉันคิดผิด! อันที่จริงสิ่งที่ฉันอยากแนะนำให้คุณนี่คือ "เคล็ดลับ" อีกประการหนึ่งของ "ผู้กระทำความผิดเป็นนิสัย" ของผู้เขียน (เนื่องจากความจำไม่ดี) บางครั้งเราอาจจำชื่อส่วนประกอบได้ไม่แน่ชัด ณ ตอนนี้หากกลับมาที่แบบฟอร์มเพื่อยืนยันอีกครั้ง (เพื่อนผมส่วนใหญ่น่าจะเป็นแบบนี้) คงจะเสียใจไม่น้อยสำหรับ เวลาจะประหยัดแรงงานเป็นพิเศษหากคุณใช้ Self เนื่องจาก Self ใน Delphi หมายถึงแบบฟอร์มที่มีส่วนประกอบอยู่อย่างชัดเจน ดังนั้นเราจึงสามารถป้อน Self ตามด้วยเครื่องหมายจุลภาคเพื่อเปิดใช้งานรหัสของ Delphi เมื่อเสร็จสิ้น ระบบจะแสดงรายการแบบเลื่อนลงที่มีส่วนประกอบทั้งหมดของแบบฟอร์มและคุณสมบัติของแบบฟอร์มนั้นทันที ซึ่งคุณสามารถเลือกส่วนประกอบที่ต้องการได้ ด้วยวิธีนี้ หลีกเลี่ยงภาระงานในการสลับไปมาระหว่างแบบฟอร์มและตาราง
2. ใช้การเติมโค้ด (Code Completion):
เราไม่จำเป็นต้องจำรายละเอียดพารามิเตอร์มากเกินไปอีกต่อไป เนื่องจากฟังก์ชันการเติมโค้ดของ Delphi ก่อนที่ฉันจะอธิบายโดยละเอียด ฉันอยากจะใช้คำสักหน่อย ก่อนคีย์ลัดเริ่มต้นของ Code Completion ของ Delphi จะขัดแย้งกับคีย์ลัดบางคีย์ที่เราใช้ (เช่น Ctrl+Space ขัดแย้งกับคีย์ลัดสำหรับการเปิดและปิด วิธีการป้อนตัวอักษรจีน) ดังนั้นโปรดแก้ไขปัญหานี้ก่อน
แน่นอนว่า Code Completion มักจะถูกเปิดใช้งานโดยอัตโนมัติ แต่อย่าคิดว่าทุกอย่างจะเรียบร้อยดี ฉันคิดว่า Delphi ควรเรียนรู้จาก VB สำหรับเทคโนโลยีนี้ ตัวอย่างเช่น เมื่อคุณป้อน StrToint(edit1., Delphi จะไม่แสดงคุณสมบัติของ edit1 โดยอัตโนมัติ ในเวลานี้ คุณจะใช้ Ctrl+Space เพื่อเปิดใช้งาน Code Completion โดยเฉพาะอย่างยิ่งเมื่อการซ้อนอยู่ลึก Delphi ดูเหมือนจะสับสน .
3. ใช้พารามิเตอร์รหัส:
ปุ่มลัดการเปิดใช้งานคือ Ctrl+Shift+Space ฟังก์ชั่นนี้จะถูกนำไปใช้โดยอัตโนมัติโดย Delphi ดังที่ได้กล่าวไว้ข้างต้นเมื่อเราสลับไปมาหรือเลื่อนเคอร์เซอร์ฟังก์ชั่นนี้จะหายไปเมื่อเราต้องการยืนยันพารามิเตอร์เฉพาะของฟังก์ชั่นเราสามารถเปิดมันด้วยปุ่มลัดนี้ได้ .
4. ใช้เทมเพลตโค้ด:
เทคโนโลยีนี้สะท้อนถึงเทคโนโลยีที่ยอดเยี่ยมของวิศวกรของทีมพัฒนา Delphi ของ Inprise อีกครั้ง และคุณลักษณะทางศีลธรรมอันสูงส่งของพวกเขาที่คำนึงถึงผู้ใช้อยู่เสมอ! (ฉันแค่ไม่อยากได้ยินเกี่ยวกับบุคคลอื่นที่ถูก Microsoft แย่งชิง)
ปุ่มลัดการเปิดใช้งานคือ Ctrl+J กลไกการใช้งานของฟังก์ชันนี้คล้ายกับการกรอกโค้ด ยกเว้นว่าจะไม่อัตโนมัติ แน่นอนว่าสิ่งที่น่าตื่นเต้นที่สุดคือผู้ใช้สามารถกำหนดเทมเพลตของตนเองได้ ตัวอย่างเช่น เทมเพลตที่กำหนดโดยผู้เขียน: ทางลัด -> "msg"; code -> "MessageboxMessageBox(
handle,'|',',MB_Icon...+MB_...);" ทันทีที่ฉันป้อน msg แล้วกด Ctrl+J โค้ดทั้งหมดจะ "โดดเด่น" และเลื่อนเคอร์เซอร์ไปยังตำแหน่งที่ ฉันควรเพิ่มอินพุต มันเจ๋งมาก!
หมายเหตุ: หากคุณได้กำหนดเทมเพลตน่ารักๆ ไว้มากมายสำหรับตัวคุณเองและไม่เต็มใจที่จะทิ้งมันไป คุณอาจต้องสำรองไฟล์ Delphi32.dci ในไดเร็กทอรี Delphi4Bin และเขียนทับด้วยไฟล์นี้หลังจากติดตั้ง Delphi ใหม่
ไม่ควรเขียนหัวข้อนี้ที่นี่ แต่อดไม่ได้ที่จะ...
1. หากคุณสามารถใช้ Object Observer เพื่อตั้งค่าโดยตรงโดยไม่กระทบต่อการทำงานปกติของโปรแกรม ก็ไม่จำเป็นต้องเขียนโค้ด:
เนื่องจากหัวข้อนี้กว้างเกินไป นี่เป็นเพียงตัวอย่างหนึ่ง: ตัวอย่างเช่น คุณต้องการใช้พร้อมท์อัตโนมัติบนแถบสถานะใน Delphi4 โดยไม่ "รุนแรง" เกินไป
เงื่อนไข "คำแนะนำ" เราไม่จำเป็นต้องกำหนดกระบวนการ (ShowMyHint(...)) เหมือนเมื่อก่อนอีกต่อไป แล้วจึงเริ่มต้นกระบวนการที่โปรแกรม
กำหนดคุณค่าของเธอให้กับงาน OnHin ของ Tapplication เพราะเพิ่งตั้งค่าคุณสมบัติ AutoHint ของแถบสถานะเป็น True! แน่นอนว่าดูเหมือนว่าเธอจะทำได้เท่านั้น
แสดงในแผงแรก (นี่คือเมื่อไม่มีเงื่อนไขที่ "รุนแรง") เกินไป แน่นอน ต้องโทษฉันที่พูดมาก เพื่อนบางคนไม่รู้คำใบ้ของ Delphi
คุณสมบัติประกอบด้วยสองส่วน นี่ไม่ใช่ที่ที่จะพูดคุย หากคุณสนใจ โปรดไปที่หน้าแรกส่วนตัวของผู้เขียน www.zg169.net/~delphiok (เพิ่งเปิด)
จาง ยังมีอะไรไม่มาก)
2. บันทึกรหัส:
หากคุณเขียนโค้ดได้น้อยลง ก็ไม่จำเป็นต้องเขียนโค้ดเพิ่มเติม หากคุณสามารถปรับปรุงได้ ก็ไม่จำเป็นต้องซ้ำซ้อน:
ตัวอย่างเช่น โค้ดสองชิ้นต่อไปนี้ใช้ฟังก์ชันเดียวกันทุกประการ คุณชอบใช้โค้ดใด
ข้อมูลโค้ดหนึ่ง:
ถ้า ToolButton1.Down=true แล้ว
เริ่ม
Dbgrid1.show;
DelBtn.Enabled:=true;
จบ
อื่น
เริ่ม
Dbgrid1.ซ่อน;
DelBtn.Enabled:=false;
จบ;
ข้อมูลโค้ดที่สอง:
Dbgrid1.Visible:=ToolButton1.Down;
DelBtn.Enabled:=ToolButton1.Down;
ดังนั้นหลังจากที่เราเขียนโปรแกรมเสร็จแล้ว เราไม่ควรเพียงแค่ปรับโปรแกรมเท่านั้น แต่ยังต้องทอดโค้ดโปรแกรมด้วย
3. บันทึกตัวแปร:
โปรแกรมเมอร์บางคนกำหนดตัวแปรโดยที่ไม่จำเป็นและกำหนดตัวแปรซ้ำซ้อนเมื่อจำเป็นต้องใช้ตัวแปร โดยส่วนตัวแล้วฉันคิดว่าสิ่งนี้ไม่ดี
นิสัย โดยเฉพาะอย่างยิ่งนิสัยในการกำหนดตัวแปรทั่วโลกทุกครั้ง ยังเป็นที่น่าสงสัยอีกด้วย ผู้อ่านบางคนอาจคิดว่าฉันเป็นคนขี้เหนียว ความเร็วของโปรเซสเซอร์ในปัจจุบันคือ
นี่มันยุคไหนแล้ว... แต่ฉันจะแสดงโค้ดให้คุณดู แล้วคุณจะเข้าใจ:
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
วาร์ s1,s2:สตริง;
เริ่ม
s1:=Inputbox('data','Please enter the user name',');
ถ้า s1<>' แล้ว
เริ่ม
Btn_Name.Enabled:=จริง;
s2:=Inputbox('data','Please enter the user's address',');
ถ้า s2<>' แล้ว
Btn_Adress.Enabled:=จริง;
จบ;
จบ;