ลากและวางเทคโนโลยี ลากและวาง: วิธีจัดการองค์ประกอบส่วนต่อประสานกับผู้ใช้ รหัส mousemove แบบเต็ม

การใช้เทคโนโลยี ลากและวาง (ลากและวาง) อนุญาตให้ผู้ใช้ย้ายอ็อบเจ็กต์ต่างๆ จากที่หนึ่งไปยังอีกที่หนึ่ง เช่น องค์ประกอบของรายการหนึ่งไปยังอีกรายการหนึ่ง ในการดำเนินการนี้ คุณจะต้องใช้ตัวควบคุม 2 ตัว ได้แก่ sink และ Source ผู้รับคือวัตถุที่จะได้รับวัตถุต้นทาง (วัตถุที่ถูกย้าย)

เหตุการณ์ที่เกิดขึ้นระหว่างการเคลื่อนที่ของวัตถุจะแสดงรายการด้านล่างตามลำดับที่เกิดขึ้น

OnStartDrag(พิมพ์ TStartDragEvent) - ที่จุดเริ่มต้นของการดำเนินการ สร้างโดยออบเจ็กต์ต้นทาง พารามิเตอร์ที่ส่งผ่านไปยังตัวจัดการเหตุการณ์: วัตถุตัวรับ DragObject (ประเภท TDragObject), วัตถุต้นทาง (ประเภท TObject)

OnDragOver(พิมพ์ TDragOverEvent) - สร้างวัตถุตัวรับเมื่อวัตถุที่ถูกลากอยู่เหนือวัตถุนั้น พารามิเตอร์ที่ส่งผ่านไปยังตัวจัดการเหตุการณ์: ผู้รับวัตถุ ผู้ส่ง (ประเภท TObject), แหล่งที่มาของวัตถุ (ประเภท TObject), สถานะการเคลื่อนไหว สถานะ (ประเภท TDragState), X และ Y (ประเภทจำนวนเต็ม) - พิกัดปัจจุบันของตัวชี้เมาส์ ยอมรับ ( พิมพ์ boolean ) เครื่องหมายยืนยันการดำเนินการย้าย สถานะการเคลื่อนไหวทำให้ชัดเจนว่าวัตถุที่กำลังเคลื่อนที่อยู่ในพื้นที่รับสัญญาณ กำลังเคลื่อนที่อยู่ในนั้น หรือออกไปแล้ว พารามิเตอร์ที่ส่งผ่านทำให้วัตถุปลายทางยอมรับหรือปฏิเสธวัตถุต้นทาง พารามิเตอร์ Accept ถูกตั้งค่าเป็น Trye หากการดำเนินการย้ายได้รับการยอมรับ มิฉะนั้นจะถูกตั้งค่าเป็น False

onDragDrop (ประเภท TDragDropEvent) - สร้างโดยวัตถุตัวรับเมื่อวัตถุที่ถูกลากหล่นลงไป ตัวจัดการเหตุการณ์จะถูกส่งผ่านพิกัดปัจจุบันของตัวชี้เมาส์ วัตถุตัวรับผู้ส่ง (ประเภท TObject) และแหล่งที่มาของวัตถุการเคลื่อนไหวดั้งเดิม (ประเภท TObject)

onEndDrag (ประเภท EndDragEvent) - เกิดขึ้นเมื่อการลากเสร็จสิ้น พิกัด X และ Y ของจุดที่วัตถุผู้ส่งต้นทางและวัตถุเป้าหมายผู้รับถูกส่งไปยังตัวจัดการเหตุการณ์

หากต้องการสร้างการลากและวาง ก็เพียงพอที่จะใช้งานสองเหตุการณ์: OnDragDrop และ OnDragOver โดยตั้งค่าคุณสมบัติ DragMode เป็น dmAutomatic มิฉะนั้นโปรแกรมเมอร์จะต้องเขียนโค้ดจุดเริ่มต้นของการดำเนินการลากซึ่งเป็นวิธี BeginDrag

เพื่อรวมวัสดุ เราจะสร้างแอปพลิเคชันต่อไปนี้ วางส่วนประกอบแผงบนแบบฟอร์ม ตั้งค่าคุณสมบัติ DragMode ของ Object Inspector เป็น dmAutomatic มาเลือกวัตถุแบบฟอร์มและใช้ Object Inspector เพื่อสร้างเหตุการณ์ต่อไปนี้:

ขั้นตอน TForm1.FormDragOver (ผู้ส่ง ที่มา: TObject; X, Y: จำนวนเต็ม; สถานะ: TDragState; var ยอมรับ: บูลีน); เริ่มต้นถ้า Source = Panel1 แล้วยอมรับ:= True อย่างอื่นยอมรับ:= False; จบ; ขั้นตอน TForm1.FormDragDrop (ผู้ส่ง, แหล่งที่มา: TObject; X, Y: จำนวนเต็ม); เริ่มต้น Panel1.Left:= X;

แผง1.ด้านบน:= Y; จบ;

ตอนนี้ด้วยการเปิดตัวแอปพลิเคชันและคลิกปุ่มเมาส์เหนือแผง เราสามารถย้ายวัตถุแผงทั่วทั้งแบบฟอร์มได้ ลากและวางประเด็นสำคัญ: เราคุ้นเคยกับเทคโนโลยีนี้แล้ว

(ลากและวาง) และนำไปใช้ในทางปฏิบัติ

หยิบอะไรมาวางง่ายกว่าการเขียนว่าต้องเอาอะไรไปและวางไว้ที่ไหน แน่นอนว่าหากไม่มีเมาส์หรืออุปกรณ์ที่คล้ายกัน คุณจะไม่สามารถเลือกอะไรหรือระบุอะไรได้เลย แต่ถึงแม้จะอยู่ในสถานะปัจจุบัน การใช้แนวคิด "ลากแล้ววาง" ก็เป็นธรรมชาติและสะดวกสบายมาก ขอบเขตของแนวคิดไม่ได้มีเพียงร้านค้าออนไลน์เท่านั้นห้องสมุดดิจิทัล , ค้นหาหรือระบบสารสนเทศ

และทรงกลมที่ประยุกต์ด้วย แนวคิดนี้นำไปใช้ได้อย่างมากในการพัฒนาเว็บไซต์และองค์ประกอบต่างๆ ที่สร้างขึ้นและบำรุงรักษาแบบโต้ตอบโดยไม่ต้องมีส่วนร่วมของโปรแกรมเมอร์

คำอธิบายของแนวคิด

เลือก ย้าย และวาง - แนวคิดนี้เป็นธรรมชาติและสะดวกสบาย น่าแปลกใจที่เมาส์ไม่ได้เกิดมาเมื่อกลายเป็นอุปกรณ์คอมพิวเตอร์ที่ขาดไม่ได้

ตัวอย่างที่ชัดเจนที่สุดคือการเลือกสินค้าในร้านค้าออนไลน์ การนำผลิตภัณฑ์ที่ต้องการด้วยเมาส์แล้วลากลงในตะกร้าสินค้านั้นง่ายดาย เป็นธรรมชาติ และสะดวก การอัปโหลดไฟล์: การนำเอกสารออกไปนอกหน้าต่างเบราว์เซอร์และวางไว้บนองค์ประกอบของหน้า ซึ่งจะทำให้เอกสารถูกถ่ายโอนไปยังเซิร์ฟเวอร์ ก็เป็นแนวคิดที่ใช้ได้จริงเช่นกัน

สำหรับนักพัฒนา แนวคิดของการ "ลากและวาง" คือการจัดการองค์ประกอบของหน้าโดยไม่ต้องคำนวณพิกัดและขนาดของแท็กใหม่ด้วยตนเอง ความสามารถในการเลือกหลายองค์ประกอบและจัดตำแหน่งองค์ประกอบเหล่านั้น รวมถึงย้ายด้านข้างของแท็กบล็อก

HTML และ CSS เป็นภาษาที่ดีเยี่ยมในการอธิบายแท็กและจัดรูปแบบแท็ก แต่เมื่อนักพัฒนามีความสามารถในการจัดการองค์ประกอบของหน้าแบบโต้ตอบโดยไม่ต้องคำนวณพิกัดและขนาดใหม่ด้วยตนเอง สิ่งนี้จะทำให้การทำงานสะดวกสบายและมีประสิทธิภาพมากขึ้น

ถ่ายโอนไฟล์ได้ง่าย

เป็นเรื่องง่ายมากที่จะใช้การถ่ายโอนไฟล์บนเพจไปยังเพจ ไปยังเซิร์ฟเวอร์ หรือเพื่อการใช้งานอื่น

ใน ในตัวอย่างนี้เมาส์เลือกไฟล์หลายไฟล์บนเดสก์ท็อป (ภาพซ้าย) ในการเลือก จะมีการกดปุ่มซ้ายของเมาส์ และสิ่งที่เลือก "ไป" ไปที่ตะกร้า เบราว์เซอร์แสดงให้เห็นว่าสิ่งนี้เกิดขึ้นได้อย่างไร เขียนคำใบ้ว่า "กำลังคัดลอก" และสร้างโครงร่างของไฟล์ที่ถูกย้ายรอบๆ

เมื่อหนูอยู่เหนือตะกร้า ผู้มาเยือนก็ปล่อยมือไป ปุ่มซ้ายเมาส์ เหตุการณ์ "ลากและวาง" เกิดขึ้นและบนหน้าไซต์ (ภาพด้านล่าง) โค้ด JavaScript สามารถรับและประมวลผลไฟล์ทั้งหมดที่ผู้เยี่ยมชมระบุให้กับหน้า (ไซต์)

คำอธิบายการดำเนินงาน

รหัสที่ดำเนินการตามขั้นตอนนี้ง่ายมาก แม้แต่นักพัฒนามือใหม่ก็สามารถทำซ้ำได้ในทุกกรณีการใช้งาน

ที่นี่อินเทอร์เฟซผู้ใช้จะแสดงด้วยแท็กสองแท็ก: scPlaceFile (นี่คือตะกร้าที่คุณต้องการใส่ไฟล์) และ scPlaceFiles (นี่คือผลลัพธ์ของการประมวลผลไฟล์ ซึ่งในกรณีนี้คือรายการของไฟล์เหล่านั้น)

ตรรกะของเพจมีดังนี้ เมื่อโหลดเพจในเบราว์เซอร์ ตัวจัดการเหตุการณ์ "ondrop" จะถูกกำหนดให้กับตะกร้า - ใส่ กิจกรรมอื่น ๆ จะถูกบล็อกและไม่ได้ใช้

หน้าเว็บทำงานได้ตามปกติ แต่ทันทีที่ผู้เยี่ยมชมเลือกไฟล์ (ไฟล์) และลากไปยังรูปภาพรถเข็น ซึ่งก็คือแท็ก scPlaceFile การประมวลผลเหตุการณ์ "ไฟล์มาถึงแล้ว" จะถูกทริกเกอร์

ตัวจัดการนี้เพียงแสดงรายการไฟล์ หมายเลขอยู่ใน event.dataTransfer.files.length และข้อมูลเกี่ยวกับแต่ละไฟล์อยู่ใน event.dataTransfer.files[i].name นักพัฒนาจะกำหนดว่าจะทำอย่างไรกับข้อมูลที่ได้รับ ในกรณีนี้ รายการไฟล์ที่ได้รับจะถูกสร้างขึ้น

หลังจากประมวลผลแล้ว เหตุการณ์จะถูกบล็อกและไม่เผยแพร่ นี่เป็นสิ่งจำเป็นเพื่อให้เบราว์เซอร์ไม่มีส่วนร่วมในกิจกรรมมือสมัครเล่นและไม่รบกวนการประมวลผลข้อมูลที่ได้รับ

DnD และข้อมูลภายนอก

การอัปโหลดรูปภาพไปยังเซิร์ฟเวอร์โดยใช้การลากและวางถือเป็นแนวทางปฏิบัติทั่วไปในการใช้เทคโนโลยีนี้ โดยทั่วไปแล้ว นักพัฒนาจะสร้างแบบฟอร์มการอัปโหลดไฟล์ (1) ซึ่งทำงานได้ตามปกติ (2) ผู้เยี่ยมชมสามารถเลือกไฟล์และดาวน์โหลดไฟล์ได้ตามปกติ

อย่างไรก็ตาม หากผู้เยี่ยมชมทำการ "ลากและวาง" ที่จุดใดจุดหนึ่งในแบบฟอร์ม ช่องชื่อไฟล์ (ไฟล์) จะถูกกรอกโดยอัตโนมัติ

นี้ การตัดสินใจที่ดี- แน่นอนว่าเป็นเรื่องยากมากที่จะยอมรับว่าไม่มีเมาส์บนคอมพิวเตอร์ แต่จะเป็นการดีกว่าถ้าพัฒนาส่วนต่อประสานกับผู้ใช้ในเวอร์ชันปกติและในการใช้งาน DnD

DnD และข้อมูลภายใน

การดูแลผลประโยชน์ของผู้เยี่ยมชมเป็นสิ่งสำคัญเสมอ แต่ข้อกังวลของนักพัฒนาก็มีความสำคัญเช่นกัน คุณสามารถใช้ "ลากและวาง" ไม่เพียงเท่านั้น วิธีการมาตรฐานแต่ยังรวมถึงการประมวลผลเหตุการณ์เมาส์บนองค์ประกอบของหน้าด้วย

งานคำนวณค่าพิกัดแท็กและขนาดเกิดขึ้นอย่างต่อเนื่อง การคำนวณด้วยตนเองเป็นแนวทางปฏิบัติที่ดี แต่ตัวเลือกแบบโต้ตอบจะสะดวกกว่า แท็กทั้งหมดจะมีรูปทรงสี่เหลี่ยมผืนผ้าเสมอ และด้วยการติดตามเหตุการณ์ "เมาส์" ที่ด้านข้างขององค์ประกอบ คุณจะสามารถสร้างความสามารถในการย้ายองค์ประกอบไปยังตำแหน่งที่ถูกต้องบนหน้าเว็บโดยอัตโนมัติ หรือเปลี่ยนแปลงได้

การจัดการเหตุการณ์การคลิกเมาส์ - จดจำพิกัดของตำแหน่งการคลิก เช่น ด้านใดด้านหนึ่งขององค์ประกอบ การเลื่อนเมาส์ - ด้านข้างเคลื่อนที่ไปในทิศทางที่ต้องการ ปล่อยปุ่มเมาส์ - ด้านข้างหยุดและพิกัดเปลี่ยนไป ด้วยวิธีนี้ คุณจะสามารถเปลี่ยนตำแหน่งขององค์ประกอบหรือขนาดขององค์ประกอบได้

อย่างเป็นทางการนี่ไม่ใช่ "การลากและวาง" แต่เอฟเฟกต์จะคล้ายกันและใช้งานได้จริง ด้วยการสร้างตัวจัดการสากลสำหรับองค์ประกอบของหน้าใด ๆ คุณจะได้รับผลลัพธ์เชิงโต้ตอบที่ดี เร่งการพัฒนา และลดความซับซ้อนของโค้ด

การเขียนโปรแกรมด้วยภาพและด้วยตนเอง

เมาส์บนคอมพิวเตอร์และนิ้วบนสมาร์ทโฟนเป็นแนวทางที่แตกต่างอย่างสิ้นเชิงในการใช้ส่วนต่อประสานกับผู้ใช้ (ผู้เยี่ยมชมนักพัฒนา) ข้อกำหนดสำหรับความเข้ากันได้ข้ามเบราว์เซอร์นั้นค่อนข้างเป็นธรรมชาติและทันสมัย

ทั้งหมดนี้ทำให้การสร้างเพจยากขึ้น แต่ด้วยการใช้แนวคิด "ลากและวาง" ในรูปแบบมาตรฐาน โดยใช้เหตุการณ์ การรวมแนวคิดนี้เข้ากับเหตุการณ์ธรรมดาในองค์ประกอบต่างๆ จึงเป็นไปได้ที่จะนำกลไกไปใช้ ซึ่งการสร้างเพจจะเกิดขึ้นทางสายตา

ตอนนี้เรามาดูการเลือกองค์ประกอบหรือองค์ประกอบกัน ข้อเท็จจริงของการเลือกคือลักษณะที่ปรากฏของเมนูบริบท ตัวอย่างเช่น เป้าหมายคือการจัดตำแหน่งที่เลือก (ซ้าย ขวา กึ่งกลาง) หรือกระจายองค์ประกอบในแนวตั้งหรือแนวนอนด้วยขั้นตอนเดียวกัน หรือเปลี่ยนขนาด (ขั้นต่ำ สูงสุด) .

การคำนวณพิกัดและมิติใหม่โดยอัตโนมัติจะดีกว่าการคำนวณใหม่ด้วยตนเอง ข้อผิดพลาดน้อยลงหมายถึงบรรลุเป้าหมายเร็วขึ้น นอกจากนี้ คุณสามารถสร้างเพจในเบราว์เซอร์เดียว โดยบันทึกตำแหน่งและขนาดขององค์ประกอบ เมื่อเปิดหน้านี้บนสมาร์ทโฟน คุณสามารถแก้ไขพิกัดและขนาดและจดจำข้อมูลเหล่านั้นได้ รุ่นเฉพาะเวอร์ชันสมาร์ทโฟนหรือเบราว์เซอร์

ดังนั้นหน้าเดียวกันที่ไม่ปฏิบัติตามข้อกำหนดข้ามเบราว์เซอร์ด้วยตนเองจะมีข้อมูลที่แตกต่างกันแสดงอยู่ อุปกรณ์ต่างๆและในเบราว์เซอร์ต่างๆ

ด้วยการอนุญาตให้ผู้เยี่ยมชมดำเนินการตามขั้นตอนเหล่านี้ได้อย่างอิสระ และยังสามารถเลือกองค์ประกอบของหน้าที่จำเป็นจากที่ผู้พัฒนาให้มาได้ จึงเป็นไปได้ที่จะรับประกันความเข้ากันได้ข้ามเบราว์เซอร์และฟังก์ชันการทำงานที่จำเป็นของหน้า โดยคำนึงถึงความคิดเห็นของผู้ใช้

โดยที่องค์ประกอบ GUI ถูกนำไปใช้โดยใช้ pseudographics) โดยใช้เมาส์หรือหน้าจอสัมผัส

วิธีการนี้ดำเนินการโดย "การจับ" (โดยการกดปุ่มหลัก ( อันดับแรกโดยปกติจะเป็นปุ่มซ้ายของเมาส์) ของวัตถุที่แสดงบนหน้าจอคอมพิวเตอร์ โดยทางโปรแกรมสามารถใช้งานได้สำหรับการดำเนินการดังกล่าว และย้ายไปยังที่อื่น (เพื่อเปลี่ยนตำแหน่ง) หรือ "โยน" วัตถุนั้นไปยังองค์ประกอบอื่น (เพื่อเรียกการดำเนินการที่เกี่ยวข้องที่ให้ไว้ โดยโปรแกรม) ในส่วนที่เกี่ยวข้องกับหน้าต่าง (สามารถเคลื่อนที่ในลักษณะเดียวกันได้) มักจะไม่ใช้คำนี้

การกระทำพื้นฐานและตัวอย่างที่ง่ายที่สุดของการลากและวางคือ: การย้ายวัตถุ การย้ายวัตถุจากแผงหนึ่งไปอีกแผงหนึ่ง แม้ว่าในสมัยใหม่ ระบบปฏิบัติการการลากและวางถูกนำมาใช้กันอย่างแพร่หลาย และเป็นหนึ่งในวิธีหลักในการโต้ตอบกับคอมพิวเตอร์ในส่วนติดต่อผู้ใช้แบบกราฟิก

วัตถุที่จะย้ายอาจเป็นองค์ประกอบอินเทอร์เฟซต่อไปนี้: ไอคอนเดสก์ท็อป แถบเครื่องมือแบบลอย ทางลัดของโปรแกรมในแถบงาน (เริ่มต้นด้วย Win XP) องค์ประกอบ TreeView สตริงข้อความ เซลล์ DataGridView รวมถึงองค์ประกอบ OLE วัตถุสามารถเคลื่อนที่ได้ทั้งภายในพื้นที่ที่กำหนด ภายในหน้าต่างเดียว ระหว่างแผงของหน้าต่างเดียว และระหว่างหน้าต่างที่แตกต่างกัน

เหตุการณ์การลากจะต้องถูกกระตุ้นโดยการกระทำบางอย่างของผู้ใช้ โดยส่วนใหญ่ การดำเนินการนี้คือการกดปุ่มซ้ายของเมาส์บนองค์ประกอบ (เหตุการณ์นี้เรียกว่า MouseDown) ซึ่งสามารถย้ายในคอนเทนเนอร์ได้ ส่วนประกอบบางอย่างมีเหตุการณ์เริ่มต้นแบบลากและวางของตัวเอง ตัวอย่างเช่น TreeView มีเหตุการณ์ ItemDrag


มูลนิธิวิกิมีเดีย

2010.

    ดูว่า "ลากและวาง" ในพจนานุกรมอื่นๆ คืออะไร:ลากและวาง

    - 〈[ dræg ənd drɔ̣p] n.; - ไม่.; EDV〉 das Anklicken eines Objektes, das auf dem Computerbildschirm (in eine andere Datei bzw. an eine andere Stelle) ในทางกลับกัน u. ดอร์ท วีเดอร์ ลอสเจลลาสเซ่น วิร์ด [อังกฤษ] ลาก "ziehen" + และ "und" + วาง "ล้ม" … Universal-Lexikon รูปแบบการดำเนินการใดๆ ในอินเทอร์เฟซแบบกราฟิก ผู้ใช้หมายถึงการใช้งาน- แปลจากภาษาอังกฤษแปลว่า: ลากแล้วโยน การดำเนินการทำได้โดยการทำงานที่มองเห็นได้บนหน้าจอ... ... พจนานุกรมคำศัพท์ทางธุรกิจ

    ลากและวาง- (คำนวณ) เพื่อย้ายไอคอน ไฟล์ ฯลฯ ผ่านหน้าจอโดยใช้เมาส์แล้วปล่อยในตำแหน่งอื่น (คำคุณศัพท์ลากแล้ววาง) รายการหลัก: ลาก … พจนานุกรมภาษาอังกฤษที่มีประโยชน์

    ลากและวาง- ไอทีเพื่อย้ายบางสิ่งจากพื้นที่หนึ่งของหน้าจอคอมพิวเตอร์ไปยังอีกพื้นที่หนึ่งโดยใช้เมาส์: »ซอฟต์แวร์ช่วยให้คุณสามารถลากและวางองค์ประกอบสำหรับรูปภาพหน้าข้อความ ฯลฯ ทุกที่ที่คุณต้องการ รายการหลัก: ลาก…เงื่อนไขทางการเงินและธุรกิจ

    ลากและวาง- กริยาสหราชอาณาจักรของสหรัฐอเมริกา n.; พล.: ; Pl.: unz.; EDV〉 das Anklicken eines Objektes, das auf dem Computerbildschirm (in eine andere Datei bzw. an eine andere Stelle) ในทางกลับกัน u. ดอร์ท วีเดอร์ ลอสเกลาสเซ่น วิร์ด)