my2alee โพสต์ 2020-5-27 11:27:39

[VB6] - กำหนดให้ MSFlexGrid อยู่ที่แถวแรกเสมอ

แก้ไขครั้งสุดท้ายโดย my2alee เมื่อ 2020-5-27 12:31

ผมมีตารางแสดงข้อมูลหลักตามรูป (MSFlexGrid1) และ ตารางแสดงข้อมูลย่อย(MSFlexGrid2)เมื่อคลิกข้อมูลจากตารางที่ 1 ก็จะเชื่อมไปดึงข้อมูลมาแสดงในตารางที่ 2 ครับ
ถ้าผมคลิกข้อมูลในตารางที่ 1 ต้องการให้แถบสีขึ้นมาที่แถวแรกของข้อมูลตารางย่อยทุกการคลิกของตารางหลัก

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

thongkorn โพสต์ 2020-5-29 13:28:03

ไปที่เหตุการณ์ Click ในตารางกริดตัวที่ 1 พอคลิ๊กแถวไหน ก็ให้โฟกัสไปกริดตัวที่ 2 เช่น Grid2.SetFocus หากอยากให้โฟกัสไปที่แถวแรก ก็ส่ง SendKey "^{HOME}" หรือส่งการกดปุ่ม Ctrl + Home ให้กับกริดตัวที่ 2 ครับ

my2alee โพสต์ 2020-6-2 16:00:36

thongkorn ตอบกลับเมื่อ 2020-5-29 13:28
ไปที่เหตุการณ์ Click ในตารางกริดตัวที่ 1 พอคลิ๊กแถวไหน...

ขอบคุณมากครับ อ.
เพิ่มเติมนะครับ
จากคำแนะนำของ อ. มันจะใช้ได้ครั้งแรกและกรณีที่เราไม่ได้ไปคลิกตาราง 2 ไปแถวอื่น
แต่ถ้าผมคลิกตาราง 2 ไปแถวอื่น สมมุติแถว 10/ พอมาคลิกตาราง 1 ตาราง 2 จะอยู่ที่แถว 10 ตลอด ไม่ว่าเราจะคลิกตาราง 1 ไปแถวอื่นๆก็ตาม (ไม่งงนะ 555)
สรุป ผมลองปรับไปเรื่อยจากแนวทางของ อ.
คือ ใน event คลิกของตารางแรก
    'Call Data
    Call SetupfgDataHis 'เซ็ตตาราง 2 ใหม่   <**** เพิ่มเติมจากของ อ.
    fgHistory.SetFocus 'เซ็ตโพกัสไปตาราง 2
    Call DisplayfgDataHis(lblHnSelect.Caption) 'ดึงข้อมูลมาแสดงที่ตาราง 2
    Sendkeys "{home}" 'ส่งคีย์

ขอบคุณ อ. ครับ สำหรับแนวทาง

หน้า: [1]
ดูในรูปแบบกติ: [VB6] - กำหนดให้ MSFlexGrid อยู่ที่แถวแรกเสมอ