กระทู้เก่าบอร์ด อ.Yeadram
3,639 9
URL.หัวข้อ /
URL
รบกวนถามเรื่องการทำปุ่ม add ภาพใน Access ครับ
ตอนนี้ใ้ช้ Code ตามตัวอย่างของ Microsoft ตาม Code ข้างล่างนี้ครับ แต่ตาม Code นี้สำหรับภาพเดียว ถ้าต้องการเพิ่ม Frame อีกจะต้องแก้ไข Code ยังไงบ้างครับ
ได้ลองแก้ Code โดยการเพิ่มไปอีกชุดนึงแล้วเ่ช่น
แต่ติดตรงที่ภาพด้านล่างนี้ไม่แน่ใจว่าแก้ไขยังไงครับ
หรือถ้าผิดทั้งหมดเลยรบกวนสอนหน่อยนะครับ
Private Sub AddPicture1_Click()
getFileName
End Sub
Private Sub Form_RecordExit(Cancel As Integer)
errormsg.Visible = False
End Sub
Private Sub RemovePicture1_Click()
Me![ImagePath1] = ""
hideImageFrame1
errormsg.Visible = True
End Sub
Private Sub Form_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
End Sub
Private Sub ImagePath1_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
End Sub
Private Sub Form_Current()
Dim res As Boolean
Dim fName As String
path = CurrentProject.path
On Error Resume Next
errormsg.Visible = False
If Not IsNull(Me!Photo1) Then
res = IsRelative(Me!Photo1)
fName = Me![ImagePath1]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame1].Picture = fName
showImageFrame1
Me.PaintPalette = Me![ImageFrame1].ObjectPalette
If (Me![ImageFrame1].Picture <> fName) Then
hideImageFrame1
errormsg.Caption = "Picture not found"
errormsg.Visible = True
End If
Else
hideImageFrame1
errormsg.Caption = "Click Add/Change to add picture"
errormsg.Visible = True
End If
End Sub
Sub getFileName()
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Employee Picture"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me![ImagePath1].Visible = True
Me![ImagePath1].SetFocus
Me![ImagePath1].Text = fileName
Me![cbCode].SetFocus
Me![ImagePath1].Visible = False
End If
End With
End Sub
Sub showErrorMessage()
If Not IsNull(Me!Photo1) Then
errormsg.Visible = False
Else
errormsg.Visible = True
End If
End Sub
Function IsRelative(fName As String) As Boolean
IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function
Sub hideImageFrame1()
Me![ImageFrame1].Visible = False
End Sub
Sub showImageFrame1()
Me![ImageFrame1].Visible = True
End Sub
ได้ลองแก้ Code โดยการเพิ่มไปอีกชุดนึงแล้วเ่ช่น
Private Sub AddPicture1_Click()
getFileName
End Sub
Private Sub AddPicture2_Click()
getFileName
End Sub
แต่ติดตรงที่ภาพด้านล่างนี้ไม่แน่ใจว่าแก้ไขยังไงครับ
Private Sub Form_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
หรือถ้าผิดทั้งหมดเลยรบกวนสอนหน่อยนะครับ
9 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05549
ถามเรื่องการใส่ End Sub ครับ
ในส่วนของ End Sub สีแดงต้องตัดออกหรือถูกแล้วครับ
Private Sub Form_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
End Sub
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
ในส่วนของ End Sub สีแดงต้องตัดออกหรือถูกแล้วครับ
3 @R05551
รบกวนอาจารย์ดูให้หน่อยครับว่าผิดพลาดยังไง
ตอนนี้มันฟ้องว่า debug พอกดเข้าไปดูจะเป็นแถบสีเหลือง แต่ว่าผมทำไม่เป็นเลยใช้เป็นตัวหนังสือสีแดงแทน
{CODE}Private Sub AddPicture1_Click()
getFileName "ImagePath1"
End Sub
Private Sub AddPicture2_Click()
getFileName "ImagePath2"
End Sub
Private Sub Command18_Click()
DoCmd.Close
End Sub
Private Sub RemovePicture1_Click()
Me![ImagePath1] = ""
hideImageFrame1
errormsg1.Visible = True
End Sub
Private Sub RemovePicture2_Click()
Me![ImagePath2] = ""
hideImageFrame2
errormsg2.Visible = True
End Sub
Private Sub Form_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
On Error Resume Next
showErrorMessage
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
Private Sub Form_Current()
Dim res As Boolean
Dim fName As String
path = CurrentProject.path
On Error Resume Next
errormsg1.Visible = False
If Not IsNull(Me!Photo1) Then
res = IsRelative(Me!Photo1)
fName = Me![ImagePath1]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame1].Picture = fName
showImageFrame1
Me.PaintPalette = Me![ImageFrame1].ObjectPalette
If (Me![ImageFrame1].Picture <> fName) Then
hideImageFrame1
errormsg1.Caption = "Picture not found"
errormsg1.Visible = True
End If
Else
hideImageFrame1
errormsg1.Caption = "Click Add/Change to add picture"
errormsg1.Visible = True
End If
On Error Resume Next
errormsg2.Visible = False
If Not IsNull(Me!Photo2) Then
res = IsRelative(Me!Photo2)
fName = Me![ImagePath2]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame2].Picture = fName
showImageFrame2
Me.PaintPalette = Me![ImageFrame2].ObjectPalette
If (Me![ImageFrame2].Picture <> fName) Then
hideImageFrame2
errormsg2.Caption = "Picture not found"
errormsg2.Visible = True
End If
Else
hideImageFrame2
errormsg2.Caption = "Click Add/Change to add picture"
errormsg2.Visible = True
End If
End Sub
Sub showErrorMessage()
If Not IsNull(Me!Photo1) Then
errormsg1.Visible = False
Else
errormsg1.Visible = True
End If
If Not IsNull(Me!Photo2) Then
errormsg2.Visible = False
Else
errormsg2.Visible = True
End If
End Sub
Function IsRelative(fName As String) As Boolean
IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function
Sub hideImageFrame1()
Me![ImageFrame1].Visible = False
End Sub
Sub showImageFrame1()
Me![ImageFrame1].Visible = True
End Sub
Sub hideImageFrame2()
Me![ImageFrame2].Visible = False
End Sub
Sub showImageFrame2()
Me![ImageFrame2].Visible = True
End Sub
Private Sub Form_RecordExit(Cancel As Integer)
errormsg1.Visible = False
errormsg2.Visible = False
End Sub
Private Sub ImagePath1_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
End Sub
Private Sub ImagePath2_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
Sub getFileName(ctl As String)
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Employee Picture"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me(ctl).Visible = True
Me(ctl).SetFocus
Me(ctl).Text = fileName
Me(ctl).SetFocus
Me(ctl).Visible = False
End If
End With
End Sub
ตอนนี้มันฟ้องว่า debug พอกดเข้าไปดูจะเป็นแถบสีเหลือง แต่ว่าผมทำไม่เป็นเลยใช้เป็นตัวหนังสือสีแดงแทน
{CODE}Private Sub AddPicture1_Click()
getFileName "ImagePath1"
End Sub
Private Sub AddPicture2_Click()
getFileName "ImagePath2"
End Sub
Private Sub Command18_Click()
DoCmd.Close
End Sub
Private Sub RemovePicture1_Click()
Me![ImagePath1] = ""
hideImageFrame1
errormsg1.Visible = True
End Sub
Private Sub RemovePicture2_Click()
Me![ImagePath2] = ""
hideImageFrame2
errormsg2.Visible = True
End Sub
Private Sub Form_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
On Error Resume Next
showErrorMessage
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
Private Sub Form_Current()
Dim res As Boolean
Dim fName As String
path = CurrentProject.path
On Error Resume Next
errormsg1.Visible = False
If Not IsNull(Me!Photo1) Then
res = IsRelative(Me!Photo1)
fName = Me![ImagePath1]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame1].Picture = fName
showImageFrame1
Me.PaintPalette = Me![ImageFrame1].ObjectPalette
If (Me![ImageFrame1].Picture <> fName) Then
hideImageFrame1
errormsg1.Caption = "Picture not found"
errormsg1.Visible = True
End If
Else
hideImageFrame1
errormsg1.Caption = "Click Add/Change to add picture"
errormsg1.Visible = True
End If
On Error Resume Next
errormsg2.Visible = False
If Not IsNull(Me!Photo2) Then
res = IsRelative(Me!Photo2)
fName = Me![ImagePath2]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame2].Picture = fName
showImageFrame2
Me.PaintPalette = Me![ImageFrame2].ObjectPalette
If (Me![ImageFrame2].Picture <> fName) Then
hideImageFrame2
errormsg2.Caption = "Picture not found"
errormsg2.Visible = True
End If
Else
hideImageFrame2
errormsg2.Caption = "Click Add/Change to add picture"
errormsg2.Visible = True
End If
End Sub
Sub showErrorMessage()
If Not IsNull(Me!Photo1) Then
errormsg1.Visible = False
Else
errormsg1.Visible = True
End If
If Not IsNull(Me!Photo2) Then
errormsg2.Visible = False
Else
errormsg2.Visible = True
End If
End Sub
Function IsRelative(fName As String) As Boolean
IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function
Sub hideImageFrame1()
Me![ImageFrame1].Visible = False
End Sub
Sub showImageFrame1()
Me![ImageFrame1].Visible = True
End Sub
Sub hideImageFrame2()
Me![ImageFrame2].Visible = False
End Sub
Sub showImageFrame2()
Me![ImageFrame2].Visible = True
End Sub
Private Sub Form_RecordExit(Cancel As Integer)
errormsg1.Visible = False
errormsg2.Visible = False
End Sub
Private Sub ImagePath1_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
End Sub
Private Sub ImagePath2_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
Sub getFileName(ctl As String)
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Employee Picture"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me(ctl).Visible = True
Me(ctl).SetFocus
Me(ctl).Text = fileName
Me(ctl).SetFocus
Me(ctl).Visible = False
End If
End With
End Sub
4 @R05552
ขอเพิ่มเติมครับมันขึ้น debug ฟ้องว่า "You can't hide a control that has the focus."
5 @R05556
คำถามแรก
End sub ใส่ตรงนั้นไม่ได้ครับ ต้องเอาออก เพราะมันซ้อนกันอยู่ ต้องให้เหลือตัวเดียวครับ
แนะนำ..................
จากบริเวณดังกล่าว
End If
End Sub
On Error Resume Next
showErrorMessage
showImageFrame1
ควรเขียนแค่นี้ครับ
End If
showImageFrame2
-------------------------------------------------------------------------------
คำถามที่สองเกี่ยวกับ Error
มันแจ้งมาตรงประเด็นแล้วครับ คอนโทรลใดๆ ที่กำลังถูกโฟกัสอยู่จะให้ซ่อนไม่ได้
ถ้าคุณต้องการโฟกัสมันต่อไป ก็อย่าไปสั่งให้มันซ่อน
ถ้าคุณต้องการให้มันซ่อน ก็อย่าไปโฟกัสมัน หรือสั่งย้ายให้ไปโฟกัสที่คอนโทรลอื่นก่อนแล้วค่อนสั่งให้ซ่อน
แนะนำ .......
เท่าที่ดูจากคำสั่ง (แบบคร่าวๆ) แล้ว เห็นว่าบรรทัดที่มันเกิด Error นั้นควรลบทิ้งไปเลยครับ ไม่ต้องสั่งมัน
End sub ใส่ตรงนั้นไม่ได้ครับ ต้องเอาออก เพราะมันซ้อนกันอยู่ ต้องให้เหลือตัวเดียวครับ
แนะนำ..................
จากบริเวณดังกล่าว
End If
End Sub
On Error Resume Next
showErrorMessage
showImageFrame1
ควรเขียนแค่นี้ครับ
End If
showImageFrame2
-------------------------------------------------------------------------------
คำถามที่สองเกี่ยวกับ Error
มันแจ้งมาตรงประเด็นแล้วครับ คอนโทรลใดๆ ที่กำลังถูกโฟกัสอยู่จะให้ซ่อนไม่ได้
ถ้าคุณต้องการโฟกัสมันต่อไป ก็อย่าไปสั่งให้มันซ่อน
ถ้าคุณต้องการให้มันซ่อน ก็อย่าไปโฟกัสมัน หรือสั่งย้ายให้ไปโฟกัสที่คอนโทรลอื่นก่อนแล้วค่อนสั่งให้ซ่อน
แนะนำ .......
เท่าที่ดูจากคำสั่ง (แบบคร่าวๆ) แล้ว เห็นว่าบรรทัดที่มันเกิด Error นั้นควรลบทิ้งไปเลยครับ ไม่ต้องสั่งมัน
6 @R05559
ตอนนี้ในแต่ละภาพจะมี label ชื่อว่า errormsg1 และ errormsg2 ถ้าหากว่าภาพใน imageframe ถูก add ขึ้นมาแล้ว errormsg ก็จะซ่อนตัว แต่ติดตรงทีตอนนี้หลังจาก add ภาพเสร็จ label errormsg มันจะไม่หายไปทันที ต้องปิดฟอร์มแล้วเปิดใหม่ถึงจะหาย
ตรงนี้ผมไม่ทราบว่าผมพลาดตรงไหนครับ เลยจะขอรบกวนอาจารย์ด้วยครับ
ตรงนี้ผมไม่ทราบว่าผมพลาดตรงไหนครับ เลยจะขอรบกวนอาจารย์ด้วยครับ
Private Sub AddPicture1_Click()
getFileName1
End Sub
Private Sub AddPicture2_Click()
getFileName2
End Sub
Private Sub Command18_Click()
DoCmd.Close
End Sub
Private Sub RemovePicture1_Click()
Me![ImagePath1] = ""
hideImageFrame1
errormsg1.Visible = True
End Sub
Private Sub RemovePicture2_Click()
Me![ImagePath2] = ""
hideImageFrame2
errormsg2.Visible = True
End Sub
Private Sub Form_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
On Error Resume Next
showErrorMessage
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
Private Sub Form_Current()
Dim res As Boolean
Dim fName As String
path = CurrentProject.path
On Error Resume Next
errormsg1.Visible = False
If Not IsNull(Me!Photo1) Then
res = IsRelative(Me!Photo1)
fName = Me![ImagePath1]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame1].Picture = fName
showImageFrame1
Me.PaintPalette = Me![ImageFrame1].ObjectPalette
If (Me![ImageFrame1].Picture <> fName) Then
hideImageFrame1
errormsg1.Caption = "Picture not found"
errormsg1.Visible = True
End If
Else
hideImageFrame1
errormsg1.Caption = "Click Add/Change to add picture"
errormsg1.Visible = True
End If
On Error Resume Next
errormsg2.Visible = False
If Not IsNull(Me!Photo2) Then
res = IsRelative(Me!Photo2)
fName = Me![ImagePath2]
If (res = True) Then
fName = path & "\" & fName
End If
Me![ImageFrame2].Picture = fName
showImageFrame2
Me.PaintPalette = Me![ImageFrame2].ObjectPalette
If (Me![ImageFrame2].Picture <> fName) Then
hideImageFrame2
errormsg2.Caption = "Picture not found"
errormsg2.Visible = True
End If
Else
hideImageFrame2
errormsg2.Caption = "Click Add/Change to add picture"
errormsg2.Visible = True
End If
End Sub
Sub showErrorMessage()
If Not IsNull(Me!Photo1) Then
errormsg1.Visible = False
Else
errormsg1.Visible = True
End If
If Not IsNull(Me!Photo2) Then
errormsg2.Visible = False
Else
errormsg2.Visible = True
End If
End Sub
Function IsRelative(fName As String) As Boolean
IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function
Sub hideImageFrame1()
Me![ImageFrame1].Visible = False
End Sub
Sub showImageFrame1()
Me![ImageFrame1].Visible = True
End Sub
Sub hideImageFrame2()
Me![ImageFrame2].Visible = False
End Sub
Sub showImageFrame2()
Me![ImageFrame2].Visible = True
End Sub
Private Sub Form_RecordExit(Cancel As Integer)
errormsg1.Visible = False
errormsg2.Visible = False
End Sub
Private Sub ImagePath1_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame1
If (IsRelative(Me!ImagePath1) = True) Then
Me![ImageFrame1].Picture = path & Me![ImagePath1]
Else
Me![ImageFrame1].Picture = Me![ImagePath1]
End If
End Sub
Private Sub ImagePath2_AfterUpdate()
On Error Resume Next
showErrorMessage
showImageFrame2
If (IsRelative(Me!ImagePath2) = True) Then
Me![ImageFrame2].Picture = path & Me![ImagePath2]
Else
Me![ImageFrame2].Picture = Me![ImagePath2]
End If
End Sub
Sub getFileName1()
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Employee Picture"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me![ImagePath1].Visible = True
Me![ImagePath1].SetFocus
Me![ImagePath1].Text = fileName
Me![cbCode].SetFocus
Me![ImagePath1].Visible = False
End If
End With
End Sub
Sub getFileName2()
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Employee Picture"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = CurrentProject.path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me![ImagePath2].Visible = True
Me![ImagePath2].SetFocus
Me![ImagePath2].Text = fileName
Me![cbCode].SetFocus
Me![ImagePath2].Visible = False
End If
End With
End Sub
7 @R05563
ใน Private Sub Form_Current()
ใต้คำสั่ง showImageFrame?
ให้เพิ่มคำสั่ง errormsg?.Visible = False
ให้เพิ่มทั้งจุดของหมายแลข 1 และจุดของหมายเลข 2
ใต้คำสั่ง showImageFrame?
ให้เพิ่มคำสั่ง errormsg?.Visible = False
ให้เพิ่มทั้งจุดของหมายแลข 1 และจุดของหมายเลข 2
8 @R05566
ต้องขอรบกวนอาจาร์อีกแล้ว ขอโทษจริงๆ ครับ ผมได้ทำตามที่อาจารย์แนะนำมาแล้วแต่ว่า...
-คือตอนที่เปิดฟอร์มมาขณะที่มีภาพค้างอยู่มันจะใช้งานได้ตามปกติ(กด remove errormsg ก็ขึ้นมา กด add มันก็หายไป)
-แต่ถ้าเปิดฟอร์มขณะที่ภาพนั้นว่างเปล่าอยู่ พอ add ภาพเข้าไป errormsg จะไม่ยอมซ่อนตัว ต้องปิดฟอร์มแล้วเปิดขึ้นมาใหม่ถึงจะใช้ได้ตามปกติ
-คือตอนที่เปิดฟอร์มมาขณะที่มีภาพค้างอยู่มันจะใช้งานได้ตามปกติ(กด remove errormsg ก็ขึ้นมา กด add มันก็หายไป)
-แต่ถ้าเปิดฟอร์มขณะที่ภาพนั้นว่างเปล่าอยู่ พอ add ภาพเข้าไป errormsg จะไม่ยอมซ่อนตัว ต้องปิดฟอร์มแล้วเปิดขึ้นมาใหม่ถึงจะใช้ได้ตามปกติ
9 @R05567
ก็คำสั่งมันมีแค่นั้นแหละครับ
errormsg?.Visible = False
คุณต้องไล่หาไปใส่ในแต่ละเหตุการณ์เอาเองครับ คุณเขียนโค้ดฝั้งเหตุการณ์อะไรบ้าง แต่ละเหตุการณ์ลำดับกันอย่างไร ขัดแย้งกันไหม คุณต้องไล่เลียงเอาเองครับ
ไม่ใช่ว่า
งานเดียวกัน (คือคลิ๊กเดียว) คุณให้มันทำงาน 4 เหตุการณ์
โดยให้เหตุการณ์ที่1 สั่ง visible=true
เหตุการณ์ที่ 2 สั่ง visible=false
ที่3 ให้ true
แล้วที่4 ให้ false
แค่คลิ๊กเดียว มี4เหตุการณ์ คุณสั่งกระทำกับคอนโทรลเดียวกัน ย้อนไปย้อนมาจนงง ไปเองหรือเปล่า ต้องไล่เลียงเอาเอง
คุณบอกว่า พอ Add เข้าไปแล้วไม่ซ่อนตัว
คำว่า "พอ Add" ของคุณมันคือเหตุการณ์อะไรล่ะ ก็ไปไล่ดูหาดูซิครับ ต้องรู้จักหา ต้องรู้จักโค้ดของเราเอง รู้ว่าลำดับงานมันอย่างไร
ต้องหาเองครับ (แค่นี้ก็ใบ้ให้เยอะแล้ว)
errormsg?.Visible = False
คุณต้องไล่หาไปใส่ในแต่ละเหตุการณ์เอาเองครับ คุณเขียนโค้ดฝั้งเหตุการณ์อะไรบ้าง แต่ละเหตุการณ์ลำดับกันอย่างไร ขัดแย้งกันไหม คุณต้องไล่เลียงเอาเองครับ
ไม่ใช่ว่า
งานเดียวกัน (คือคลิ๊กเดียว) คุณให้มันทำงาน 4 เหตุการณ์
โดยให้เหตุการณ์ที่1 สั่ง visible=true
เหตุการณ์ที่ 2 สั่ง visible=false
ที่3 ให้ true
แล้วที่4 ให้ false
แค่คลิ๊กเดียว มี4เหตุการณ์ คุณสั่งกระทำกับคอนโทรลเดียวกัน ย้อนไปย้อนมาจนงง ไปเองหรือเปล่า ต้องไล่เลียงเอาเอง
คุณบอกว่า พอ Add เข้าไปแล้วไม่ซ่อนตัว
คำว่า "พอ Add" ของคุณมันคือเหตุการณ์อะไรล่ะ ก็ไปไล่ดูหาดูซิครับ ต้องรู้จักหา ต้องรู้จักโค้ดของเราเอง รู้ว่าลำดับงานมันอย่างไร
ต้องหาเองครับ (แค่นี้ก็ใบ้ให้เยอะแล้ว)
Time: 0.4346s
Form_AfterUpdate()
คุณได้เขียนคำสั่งเรียกใช้โปรแกรมย่อย มีสองครั้งคือ
showImageFrame1
กับ
showImageFrame2
เท่าที่ดูโค้ดของคุณ ผมเห็นแล้วว่า มีโปรแกรมย่อย showImageFrame1 อยู่ดังนั้นคำสั่งแรกก็ไม่น่าจะมีปัญหา
แต่ว่าคำสั่งต่อมาล่ะ คุณได้เขียนโปรแกรมย่อยเอาไว้ให้มันหรือยัง
- ถ้ายังไม่ได้เขียนก็จะเรียกใช้ไม่ได้
- ถ้าเขียนไม่เป็น แนะนำให้คัดลอกของหมายเลข 1 มาแก้ไขตัวเลขเอาครับ
-ใน Form_Current() ผมเห็นคุณสั่งการแต่กับกลุ่มคอนโทรลหมายเลข 1 คุณยังไม่ได้สั่งอะไรกับคอนโทรลหมายเลข 2 ที่เพิ่งจะเพิ่มเข้ามาเลยครับ ต้องเพิ่มให้มันด้วย ถ้าไม่เป็นก็คัดลอกทุกคำสั่งที่กระทำกับหมายเลข1 ทั้งหมดมาเพิ่มแล้วเปลียนหมายเลขเป็น 2 เอาครับ
- ใน Private Sub AddPicture2_Click()
เห็นคุณเรียกใช้โปรแกรมย่อย getFileName แล้วพอตามเข้าไปดูโปรแกรมย่อยดังกล่าวก็เห็นว่ามันกระทำกับคอนโทรลหมายเลข1 ล้วนๆ เลยดังนั้นมันก็ไม่ถูกต้องแน่ๆ คุณมีทางเลือกสองทาง คือ
1 ต้องสร้างโปรแกรมย่อยตัวใหม่ที่กระทำกับคอนโทรลหมายเลข2 แล้วเปลี่ยนคำสั่งให้เรียกใช้โปรแกรมย่อยตัวใหม่ที่สร้างขึ้น
นี่เป็นวิธีที่ง่าย และซับซ้อนน้อยที่สุดแล้วครับ
หรือ
2 ไปดัดแปลงให้โปรแกรมย่อยตัวเดิมให้สามารถ กระทำกับคอนโทรลหมายเลข2 ได้ด้วย หรือ
3 ไปดัดแปลงให้โปรแกรมย่อย getFileName ให้สามารถรับค่าอากิวร์เมนต์ เพื่อรอรับว่า จะให้กระทำการกับกลุ่มคอนโทรลหมายเลขใด และเมื่อคุณเรียกใช้ ก็ส่ง อาร์กิวเมนต์เข้าไปให้มันด้วย เช่น
- เปลี่ยน Sub getFileName()
ให้เป็น Sub getFileName(ctl as string)
- คำสั่งต่างๆ ภายในโปรแกรมย่อยก็เปลี่ยนจากชื่อตรงๆ เป็นชื่อตัวแปรแทนในทุกๆ จุดเช่นเปลี่ยนจาก Me![ImagePath1].SetFocus เป็น me(ctl).setfocus
- เวลาเรียกใช้ก็ค่อยส่งอาร์กิวเมนต์เข้าไปให้มันด้วย เช่น
Private Sub AddPicture1_Click()
getFileName "ImagePath1"
End Sub
Private Sub AddPicture2_Click()
getFileName "ImagePath2"
End Sub