Đánh giá chủ đề:
  • 1 Votes - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Làm thế nào để nhãn đổi màu mỗi khi lựa chọn Option trong form
#1
Rainbow 
027 Chào các bạn!

Trong khi thiết kế form, mình đang gặp một trường hợp như sau:
  1. Một form có một khung (Frame) chứa nhiều lựa chọn dạng Option
  2. Vì có nhiều Option quá nên mình muốn khi chọn Option nào thì nhãn kèm theo Option đó sẽ đổi màu (Mình đã viết code cho Event Got Forcus đối với mỗi Option)
  3. Tuy nhiên, vì có quá nhiều Option nên mỗi khi thay đổi nhãn của một Option lựa chọn thì lại phải trả lại màu đen (0) cho tất cả các Option còn lại nên phần code phải liệt kê toàn bộ ra như vậy sẽ mất rất nhiều thời gian.
Bạn nào cho mình hỏi, có thể thiết kế một Function nào đó dạng:
Function Doimau(Option được lựa chọn).... để chỉ cần gán vào Event Got Forcus hiện tại thì cái đó đổi màu còn cái khác sẽ hoàn trả lại màu đen như cũ.
Mình có một số hình mẫu vào file Access 2007 đính kèm nhờ các bạn giúp đỡ.

Trân trọng cảm ơn!

[Hình: Option01.jpg]
[Hình: Option02.jpg]
[Hình: Option03.jpg]
[Hình: Option04.jpg]

http://www.mediafire.com/download/7n1yok...ions.accdb
Chữ ký của tiennd67 034
Chia sẻ kinh nghiệm chính là cách trao đổi, học tập nhanh nhất.
Reply
Những người đã cảm ơn
#2
Cần chi đến cái Function:

Dùng hàm Seclect Case

Mã PHP:
Select Case Tenkhungframe
Case 1
Me
.Tennhan1.Forecolor Mãmàu
Case 2
Me
.Tennhan2.Forecolor Mãmàu
Case 3
Me
.Tennhan3.Forecolor Mãmàu
.....................
Cứ tiếp tục đến 100 màu cũng được
End Select 
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
(31-03-15, 12:06 PM)maidinhdan Đã viết:
(31-03-15, 10:58 AM)tiennd67 Đã viết: Bạn nào cho mình hỏi, có thể thiết kế một Function nào đó dạng:
Function Doimau(Option được lựa chọn).... để chỉ cần gán vào Event Got Forcus hiện tại thì cái đó đổi màu còn cái khác sẽ hoàn trả lại màu đen như cũ.
Mình có một số hình mẫu vào file Access 2007 đính kèm nhờ các bạn giúp đỡ.
[Hình: Option01.jpg]
[Hình: Option02.jpg]
[Hình: Option03.jpg]
[Hình: Option04.jpg]

http://www.mediafire.com/download/7n1yok...ions.accdb

Cần chi đến cái Function:

Dùng hàm Seclect Case

Mã PHP:
Select Case Tenkhungframe
Case 1
Me
.Tennhan1.Forecolor Mãmàu
Case 2
Me
.Tennhan2.Forecolor Mãmàu
Case 3
Me
.Tennhan3.Forecolor Mãmàu
.....................
Cứ tiếp tục đến 100 màu cũng được
End Select 

Cảm ơn bạn rất nhiều đã trợ giúp. Cái này của bạn chỉ thay đổi màu mục chọn thôi. KHông trả lại màu cho mục chọn trước đó.040
Chữ ký của tiennd67 034
Chia sẻ kinh nghiệm chính là cách trao đổi, học tập nhanh nhất.
Reply
Những người đã cảm ơn
#4
undefined
Chữ ký của hieuvn Xin chào! Mình là hieuvn, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn
#5
(31-03-15, 02:47 PM)tiennd67 Đã viết: Cảm ơn bạn rất nhiều đã trợ giúp. Cái này của bạn chỉ thay đổi màu mục chọn thôi. KHông trả lại màu cho mục chọn trước đó.040

Bạn chèn code ở trước hàm Select Case như sau:

Mã PHP:
Private Sub Tenkhungframe_Click()
Me.Tennhan1.Forecolor 0
Me
.Tennhan2.Forecolor 0
Me
.Tennhan3.Forecolor 0
.............................'Tương ứng với số Case phía dưới
Select Case Tenkhungframe
Case 1
Me.Tennhan1.Forecolor = Mãmàu
Case 2
Me.Tennhan2.Forecolor = Mãmàu
Case 3
Me.Tennhan3.Forecolor = Mãmàu
.....................
Cứ tiếp tục đến 100 màu cũng được
End Select
End Sub 

Đã Test thành công.

Ghi chú: Nên chèn code vào sự kiện Click của Tenkhungframe.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
(31-03-15, 02:47 PM)tiennd67 Đã viết:
(31-03-15, 12:06 PM)maidinhdan Đã viết:
(31-03-15, 10:58 AM)tiennd67 Đã viết: Bạn nào cho mình hỏi, có thể thiết kế một Function nào đó dạng:
Function Doimau(Option được lựa chọn).... để chỉ cần gán vào Event Got Forcus hiện tại thì cái đó đổi màu còn cái khác sẽ hoàn trả lại màu đen như cũ.
Mình có một số hình mẫu vào file Access 2007 đính kèm nhờ các bạn giúp đỡ.
[Hình: Option01.jpg]
[Hình: Option02.jpg]
[Hình: Option03.jpg]
[Hình: Option04.jpg]

http://www.mediafire.com/download/7n1yok...ions.accdb

Cần chi đến cái Function:

Dùng hàm Seclect Case

Mã PHP:
Select Case Tenkhungframe
Case 1
Me
.Tennhan1.Forecolor Mãmàu
Case 2
Me
.Tennhan2.Forecolor Mãmàu
Case 3
Me
.Tennhan3.Forecolor Mãmàu
.....................
Cứ tiếp tục đến 100 màu cũng được
End Select 

Cảm ơn bạn rất nhiều đã trợ giúp. Cái này của bạn chỉ thay đổi màu mục chọn thôi. KHông trả lại màu cho mục chọn trước đó.040

Chịu khó đổi tên các label theo value nhé bạn: ví dụ value =1 -> label1...
Rồi dán cái lá bùa bên dưới vào coi thử nó fe không?

Mã PHP:
Private Sub Frame0_Click()
    For 
Each crt In Frame0.Controls
        
If TypeName(crt) = "Label" Then
            
If CInt(Right(crt.NameLen(crt.Name) - 5)) = Me.Frame0 Then
                crt
.ForeColor vbYellow
            
Else
                
crt.ForeColor vbRed
            End 
If
        
End If
    
Next crt
End Sub 
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tiennd67
#7
bạn thử xem file này:
https://drive.google.com/open?id=0B7q7kB...authuser=0
Chữ ký của hieuvn Xin chào! Mình là hieuvn, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn
#8
(01-04-15, 10:14 AM)hieuvn Đã viết: bạn thử xem file này:
https://drive.google.com/open?id=0B7q7kB...authuser=0

hic, cũng một vấn đề sao mà nó dài dòng, và khó hiểu quá vậy bạn,
Tại sao phải giới loop đến 20, lần sau làm lại phải vào sửa à????

Mã PHP:
Option Compare Database
Option Explicit

Public Function fHighlightOptGrpLbl(frmPassed As FormstrOptGrpName As String) As String
Dim CtrlOptGrpLbl 
As Control
Dim ctlToTest 
As Control
    
For Each CtrlOptGrpLbl In frmPassed.Controls
        
If CtrlOptGrpLbl.ControlType acLabel Then
            Set ctlToTest 
CtrlOptGrpLbl
            Dim X 
As Integer
            
For 1 To 20 'This will check to 20 levels
                If Not fIsaForm(ctlToTest.Parent.Name) Then   '
Is Parent a Form?
                    
'It's not a formit must still be a Control so carry on checking the "Control"
                    
Set ctlToTest ctlToTest.Parent
                    
If ctlToTest.ControlType acOptionButton And ctlToTest.Parent.Name strOptGrpName Then
                        
If ctlToTest.OptionValue ctlToTest.Parent.Value Then
                            fHighlightOptGrpLbl 
CtrlOptGrpLbl.Caption     'Extract the Label Caption
                            '
Setup Unselected Label Property's HERE
                            CtrlOptGrpLbl.ForeColor = 213699
                            
                        Else
                            '
Setup Selected Label Property's HERE
                            CtrlOptGrpLbl.ForeColor = 0
                        End If
                    End If
                End If
            Next X
        End If
    Next CtrlOptGrpLbl
End Function '
fHighlightOptGrpLbl

Public Function fIsaForm(strIsaForm As String) As Boolean
'From Access Help
fIsaForm = False
    Dim obj As AccessObject, dbs As Object
    Set dbs = Application.CurrentProject
        For Each obj In dbs.AllForms    '
Search for open AccessObject objects in AllForms collection.
            If 
obj.Name strIsaForm Then fIsaForm True
        Next obj
End 
Function      'fIsaForm 
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
Xin cảm ơn bạn thucgia va bạn hieuvn code của 2 bạn đư rất hay. Đó là một điều đáng học tập như tác giả nếu có thể đọc hiểu các đoạn code đó thì mình mừng cho tác giả.

Mình thì đơn giản thôi. Xin bổ sung lại bài phía trên

Mã PHP:
Private Sub Tenkhungframe_Click()
Me.Tennhan1.Forecolor 0
Me
.Tennhan2.Forecolor 0
Me
.Tennhan3.Forecolor 0
.............................'Tương ứng với số Case phía dưới
Select Case Tenkhungframe
Case 1
Me.Tennhan1.Forecolor = Mãmàu
Case 2
Me.Tennhan2.Forecolor = Mãmàu
Case 3
Me.Tennhan3.Forecolor = Mãmàu
.....................
Cứ tiếp tục đến 100 màu cũng được
End Select
End Sub 

Dùng những từ dưới đây để thay vào chỗ Mã màu
Mã PHP:
1.    vbBlack        
2.    vbBlue        
3.    vbCyan        
4.    vbGreen        
5.    vbMagenta        
6.    vbRed        
7.    vbWhite        
8.    vbYellow 

Đã test thành công.

Xem file đính kèm để rõ. demo.


File đính kèm
.zip   testmau.zip (Kích cỡ: 11.47 KB / Tải về: 22)
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#10
(01-04-15, 07:28 PM)thucgia Đã viết:
(01-04-15, 10:14 AM)hieuvn Đã viết: bạn thử xem file này:
https://drive.google.com/open?id=0B7q7kB...authuser=0

hic, cũng một vấn đề sao mà nó dài dòng, và khó hiểu quá vậy bạn,
Tại sao phải giới loop đến 20, lần sau làm lại phải vào sửa à????
hehe thì chủ top mong muốn làm function thì có function thôi, mà bạn thucgia nói đúng rồi không cần loop 20 lần đâu, gỡ mấy dòng lặp cho nó gọn code.
Chữ ký của hieuvn Xin chào! Mình là hieuvn, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Refresh Form và tiếp tục hoạt động Godspear 2 84 08-12-16, 12:48 PM
Bài mới nhất: Godspear
  [Hỏi] Cách thêm dữ liệu vào form Main_Sub NganNguyen 1 39 06-12-16, 02:23 AM
Bài mới nhất: maidinhdan
  Tự động hiện Form khi loading hết thời gian ChiMai 1 49 02-12-16, 08:59 PM
Bài mới nhất: ongke0711
Photo [Hỏi] Mở Form trên access 2007 báo lỗi jason 5 195 22-11-16, 09:23 AM
Bài mới nhất: jason
  Query hiện lên trên form? feeling 4 167 09-11-16, 09:49 PM
Bài mới nhất: toancvp

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ