วิธีการพื้นฐานในการเขียนการควบคุมใน Delphi
ในฐานะโปรแกรมเมอร์ Delphi หากคุณต้องการปรับปรุงระดับการเขียนโปรแกรมของคุณเพิ่มเติม คุณต้องเชี่ยวชาญวิธีเขียนตัวควบคุม บทความนี้จะใช้ตัวอย่างง่ายๆ เพื่อแนะนำวิธีการพื้นฐานและรูปแบบการควบคุมการเขียนสำหรับผู้เริ่มต้น
ตัวควบคุมตัวอย่างนี้เรียกว่า TLeiLabel และจะเพิ่มฟังก์ชันที่ใช้งานจริงสองฟังก์ชันบนพื้นฐานของ TLabel: ฟังก์ชันแรกทำให้ข้อความมีรูปร่างสามมิติ และอีกฟังก์ชันหนึ่งคือการทำให้ข้อความมีแอตทริบิวต์ไฮเปอร์ลิงก์ ให้เราปรับใช้ฟังก์ชันเหล่านี้ทีละขั้นตอน
1. ทำให้ข้อความมีรูปร่างสามมิติ
ขั้นแรกให้กำหนดประเภท T3DEffect และคุณลักษณะ Style3D ดังนี้:
T3DEffect=(ปกติ, ยกขึ้น, ลดลง, อยู่ในเงา);
คุณสมบัติ Style3D:T3DEffect อ่าน FStyle3D เขียน SetStyle3D ค่าเริ่มต้น ปกติ;
จากนั้นกำหนดตัวแปรในแบบส่วนตัว: "FStyle3D:T3DEffect;" และตั้งค่าเมธอด SetStyle3D() ดังต่อไปนี้
ขั้นตอน TLeiLabel.SetStyle3D (ค่า: T3DEffect);
เริ่ม
ถ้าค่า FStyle3D <> ค่านั้น
เริ่ม
FStyle3D := ค่า;
ทำให้ใช้ไม่ได้; //แสดงว่าคอนโทรลจะถูกวาดใหม่
จบ;
จบ;
นอกจากนี้ สำหรับข้อความที่มีเงา ต้องกำหนดออฟเซ็ตของเงา ShadeXOffSet และ ShadeYOffSet:
คุณสมบัติ ShadowXOffSet: จำนวนเต็มอ่าน FXOffSet เขียน SetFXOffSet เริ่มต้น 5;
คุณสมบัติ ShadowYOffSet: จำนวนเต็มอ่าน FYOffSet เขียน SetFYOffSet เริ่มต้น -5;
วิธีการเขียน SetFXOffSet() และ SetFYOffSet() คล้ายกับ SetStyle3D() ข้างต้น
หากต้องการวาดตัวควบคุมใหม่ โดยทั่วไปคุณจะต้องโหลดวิธี Paint มากเกินไป ที่นี่เราแค่วาดข้อความใหม่เท่านั้น เราจำเป็นต้องโหลดวิธี DoDrawText มากเกินไปเท่านั้น
การประกาศของ DoDrawText ถูกวางไว้ใน Protected:
ขั้นตอน DoDrawText (var Rect: TRect; Flags: Longint);
ที่นี่ DoDrawText() วาดข้อความที่แตกต่างกันตามสี่ประเภท (ปกติ, ยกขึ้น, ปิดภาคเรียน และเงา)
2. ทำให้ข้อความมีแอตทริบิวต์ไฮเปอร์ลิงก์
กำหนด URL แอตทริบิวต์เพื่อแสดง URL หรือที่อยู่อีเมลที่จะเชื่อมโยง
URL คุณสมบัติ: สตริงอ่าน FURL เขียน SetURL;
เขียนวิธี SetURL ดังนี้:
ขั้นตอน TLeiLabel.SetURL (ค่า: สตริง);
เริ่ม
ถ้า FURL <> ค่าแล้ว FURL := ค่า ;
ถ้า FURL <> ' แล้ว
เคอร์เซอร์ := crHandPoint;
จบ;
เมื่อคลิกป้ายกำกับนี้ คุณจะต้องเปิดเบราว์เซอร์หรือเครื่องมือส่งและรับอีเมล ซึ่งต้องใช้วิธีการคลิกมากเกินไป
คลิกขั้นตอน;
ขั้นตอน TLeiLabel.Click;
var s: สตริง;
เริ่ม
คลิกที่รับมา;
ถ้า FURL = ' ให้ออก;
ถ้าตัวพิมพ์เล็ก(Copy(FURL,1,7)) = 'http://' แล้ว
s := FURL
อย่างอื่นถ้า Pos('@',FURL) <> 0 จากนั้น
s := 'mailto:' + FURL
อื่น
s := 'http://' + FURL;
ShellExecute (application.Handle, 'เปิด', PChar), NIL, NIL, SW_SHOWNORMAL);
จบ;
สำหรับไฮเปอร์ลิงก์ทั่วไป สีของข้อความจะเปลี่ยนเมื่อเลื่อนเมาส์เข้าไป ด้วยเหตุนี้ ให้เพิ่มแอตทริบิวต์ HoverColor ซึ่งระบุสีของข้อความเมื่อเลื่อนเมาส์เข้าไป
คุณสมบัติ HoverColor : TColor อ่าน FHoverColor เขียน SetHoverColor เริ่มต้น clRed;
กำหนดสองขั้นตอนที่ได้รับข้อความ Windows CM_MOUSEENTER และ CM_MOUSELEAVE (เมาส์เข้าและออก):
ขั้นตอน CMMouseEnter (ข้อความ var: TMessage); ข้อความ CM_MOUSEENTER;
ขั้นตอน CMMouseLeave (ข้อความ var: TMessage); ข้อความ CM_MOUSELEAVE;
ขั้นตอน TLeiLabel.CMMouseEnter (ข้อความ Var: TMessage);
เริ่ม
หากเปิดใช้งานและมองเห็นได้ และ getParentForm(Self) ใช้งานแล้ว
เริ่ม
FFontColor := Font.Color;
//บันทึกสีข้อความ
Font.Color := FHoverColor;
//เปลี่ยนสีข้อความ
จบ;
จบ;
ขั้นตอน TLeiLabel.CMMouseLeave (ข้อความ Var: TMessage);
เริ่ม
Font.Color:=FFontColor;
//คืนค่าสีเดิมของข้อความ
จบ;
ในการตั้งค่าเริ่มต้นของแอตทริบิวต์ เราจำเป็นต้องโอเวอร์โหลดตัวสร้าง Create() โปรดทราบว่าตัวสร้างคลาสบรรพบุรุษจะต้องถูกเรียกก่อนเมื่อตัวสร้างโอเวอร์โหลด โปรแกรมสำหรับการโอเวอร์โหลดโครงสร้าง Create() มีดังต่อไปนี้:
ตัวสร้าง TLeiLabel.Create (AOwner: TComponent);
เริ่ม
สืบทอดสร้าง (AOwner);
//ต้องเรียกตัวสร้างคลาสบรรพบุรุษก่อน
FStyle3D := ปกติ;
FXOffSet := 5;
ปีงบประมาณ := -5;
FHoverColor := clRed;
จบ;
สุดท้าย จะต้องเพิ่มไอคอนให้กับการควบคุมนี้ เราสามารถใช้ Image Editor ใน Delphi เพื่อสร้างบิตแมปบิตแมป 24 × 24 และบันทึกเป็นไฟล์ DCR ชื่อไฟล์จะต้องเหมือนกับชื่อไฟล์ Pas ของตัวควบคุม ชื่อและตัวพิมพ์ใหญ่ทั้งหมด