ongke0711 > 20-12-19, 03:31 PM
Private Sub cmdChinhSua_Click()
Static blnView As Boolean
Dim intID As Integer
blnView = Not blnView
If blnView Then
intID = 1 'Nút [Sua]
Else
intID = 4 'Nút [Bo qua]
End If
Me.cmdChinhSua.PictureData = DLookup("IconNutLenh", "tblNutLenhIcon", "ID = " & intID)
Me.cmdChinhSua.Caption = DLookup("TenNutLenh", "tblNutLenhIcon", "ID = " & intID)
End Sub
bvchauthanh > 21-12-19, 05:28 PM
ongke0711 > 21-12-19, 06:13 PM
(21-12-19, 05:28 PM)bvchauthanh Đã viết: P/s: đơn giản là mình muốn lưu cái logo công ty, trên các biểu mẫu in hiện luôn cái logo đó! Với cách làm như trên, mình đã lưu lại cái logo được rồi, còn việc hiện lên form mình chưa ngâm cứu ra, mong được giúp đỡ từ các tiền bối.
mrsiro > 21-12-19, 08:31 PM
bvchauthanh > 22-12-19, 01:27 PM
ongke0711 > 22-12-19, 02:29 PM
(22-12-19, 01:27 PM)bvchauthanh Đã viết: một lần nữa xin cám ơn bạn nhé! Mình làm được rồi, có điều khi in ra chất lượng ảnh ko được đẹp lắm, hjhj dù sao đi nữa mình cũng học được thứ mình cần, tks nhiều nhá!
yamakashi2003 > 05-05-20, 03:41 PM
(20-12-19, 03:31 PM)ongke0711 Đã viết: Chào các bạn,Em chào bác ạ,
Theo nhu cầu thực tế của một số bạn về việc đổi Tên + Icon của một Nút lệnh tuỳ theo hiện trạng xử lý của Form, nên tôi tạo riêng cái chủ đề này để các bạn tham khảo cách làm cũng như dễ dàng tìm kiếm chủ đề sau này.
ĐỔI TÊN (Caption) + ICON CỦA 1 NÚT LỆNH TUỲ THEO HIỆN TRẠNG XỬ LÝ FORM
(Một nút lênh 2 chức năng)
--------------------------------------------------------------------------------------------------------------------------------------------------------
Chú ý: chỉ áp dụng cho Access 2007 trở lên. Access 2003 trở về trước chỉ hỗ trợ Nút lệnh (Command button) có hình (icon) hoặc chữ (caption) chứ không hỗ trợ hiển thị vừa Icon vừa chữ trên một nút lênh như Access 2007 trở về sau.
Việc thay đổi Tên và Icon nút lênh cũng có nhiều cách như:
- Tạo thêm một nút khác để ẩn/ hiện khi click gọi tới.
- Tạo sẳn nút (hoặc Label) phụ khác chỉ để tham chiếu đến Caption của control này.
- Thay đổi Caption trực tiếp trong code VBA. Cách này gặp hạn chế với các tên tiếng Việt có dấu thanh mà VBA không hiểu như: Sửa, Lưu... Bên cạnh đó cũng không đổi được Icon. Nếu tham chiếu icon đến file ảnh bên ngoài thì lại phải đính kèm file icon khi phân phối ứng dụng, cũng phiền phức.
Để khắc phục mấy điểm bất tiện trên thì tôi dùng giải pháp là tạo riêng 1 table lưu thông tin "Tên" nút lệnh và Icon cho nó luôn. File icon (ảnh) sẽ được lưu trực tiếp luôn vào Table dưới dạng mã nhị phân (Binary) ở cột có dữ liệu kiểu OLE Object. Vì file iocn có kích thước nhỏ (khoảng 16px x 16px, chừng 500 bytes) nên việc lưu thẳng vào Table cũng không chiếm dung lượng bao nhiêu.
Để lưu ảnh vào table dưới dạng nhị phân vào Field dạng Long Binary Data, tôi dùng phương thức Field.AppendChunk.
Khi bấm nút lênh, muốn đổi Tên + Icon thì chỉ cần dùng hàm DLookup() để lấy Tên và hình ảnh đưa vào nút lênh.
Ví dụ: Khi bấm nút [Chỉnh sửa] lần thứ nhất thì nút này sẽ đổi tên thành [Bỏ qua] và đổi luôn Icon
Mã PHP:Private Sub cmdChinhSua_Click()
Static blnView As Boolean
Dim intID As Integer
blnView = Not blnView
If blnView Then
intID = 1 'Nút [Sua]
Else
intID = 4 'Nút [Bo qua]
End If
Me.cmdChinhSua.PictureData = DLookup("IconNutLenh", "tblNutLenhIcon", "ID = " & intID)
Me.cmdChinhSua.Caption = DLookup("TenNutLenh", "tblNutLenhIcon", "ID = " & intID)
End Sub
Bên cạnh đó tôi cũng demo cho các bạn cách tận dụng thuộc tính .Tag của các Control để tham chiếu tới trong code, phục vụ một công việc cụ thể nào đó. Trong demo này là dùng Tag để xác định nút lênh đang ở trạng thái nào? Thêm hay Lưu (cùng 1 nút).
Tag: nó như là đính thêm 1 cái thẻ tên cho một control cụ thể như textbox, command button...Khi code chạy sẽ lật cái thẻ này lên đọc và xác định nó là gì để thực thi code tương ứng vậy thôi.
Tôi mượn cái file dữ liệu của bạn longkd_bvct@yahoo.com.vn để làm demo nhé.
Link demo: http://www.mediafire.com/file/mdz05k0tmr...accdb/file
ongke0711 > 05-05-20, 04:39 PM
(05-05-20, 03:41 PM)yamakashi2003 Đã viết: Bác có thể chỉ rõ cách làm "Để lưu ảnh vào table dưới dạng nhị phân vào Field dạng Long Binary Data, dùng phương thức Field.AppendChunk."
giúp em đươc không ạ,
Trích dẫn:File icon (ảnh) sẽ được lưu trực tiếp luôn vào Table dưới dạng mã nhị phân (Binary) ở cột có dữ liệu kiểu OLE Object. Vì file iocn có kích thước nhỏ (khoảng 16px x 16px, chừng 500 bytes) nên việc lưu thẳng vào Table cũng không chiếm dung lượng bao nhiêu.
yamakashi2003 > 06-05-20, 11:31 AM
(05-05-20, 04:39 PM)ongke0711 Đã viết:Em cám ơn bác, Bác cho em hỏi trong đoan code(05-05-20, 03:41 PM)yamakashi2003 Đã viết: Bác có thể chỉ rõ cách làm "Để lưu ảnh vào table dưới dạng nhị phân vào Field dạng Long Binary Data, dùng phương thức Field.AppendChunk."
giúp em đươc không ạ,
Trong file demo ở trên đã có code dùng Append Chunk để lưu file ảnh (icon) vào table rồi đó bạn.
Trích dẫn:File icon (ảnh) sẽ được lưu trực tiếp luôn vào Table dưới dạng mã nhị phân (Binary) ở cột có dữ liệu kiểu OLE Object. Vì file iocn có kích thước nhỏ (khoảng 16px x 16px, chừng 500 bytes) nên việc lưu thẳng vào Table cũng không chiếm dung lượng bao nhiêu.
Để lưu ảnh thì field phải là kiểu OLE Object (có thể lưu bất kỳ file gì như Excel, chart, text, pdf v.v..). Bạn đọc lại cơ bản các kiểu dữ liệu trong Table nhé.
- File ảnh Bitmap thì Access sẽ lưu vào Table dưới dạng chuỗi nhị phân (Long Binarry).
- Trên Form Access, có một control là Image control mà các bạn hay dùng để hiển thị ảnh. Image control có thuộc tính ".PictureData" thì cái PictureData này chính là dữ liệu được chuyển sang Binary của bức ảnh.
- Tôi chỉ việc copy cái PictureData này lưu vào một Field OLE Object nào đó là coi như copy cái bức ảnh đó rồi.
- Để lưu dữ liệu dạng Binary thì trong thư viện DAO có phương thức AppendChunk, GetChunk lưu và lấy dữ liệu dạng binary. Do đó trong file tôi có câu lệnh:
rst.Fields("IconNutLenh").AppendChunk Me.imgIcon.PictureData -> lấy dữ liệu binary cái hình đang trong imgIcon lưu xuống Table.