- Tham gia
- 5/6/08
- Bài viết
- 30,703
- Được thích
- 53,952
Khi ta dùng code để lấy đường dẩn của 1 file hoặc 1 thư mục, có lúc đường dẩn này quá dài khiến ta không nhìn thấy được phần đuôi
Tôi xây dựng 1 hàm với mục đích "nén" đường dẩn sao cho nó nằm vừa khít theo chiều ngang của control
Code như sau:
cboFileName là 1 ComboBox
-------------------------
Code chạy cũng tạm được, nhưng vấn đề ở đây là cái đường dẩn kia sau khi được "nén" lại có vẽ chưa chính xác lắm theo chiều ngang của Control
Nhờ các cao thủ xem giúp
Kết quả hiển thị thế này:
Mà lý ra phải như vầy thì sẽ đẹp hơn
-------------------
Không biết có liên quan đến Font size của Control không nhỉ?
(Với VB6, làm mấy vụ này nó dễ ẹc... còn VBA sao mà khó khăn thế nhỉ?)
Tôi xây dựng 1 hàm với mục đích "nén" đường dẩn sao cho nó nằm vừa khít theo chiều ngang của control
Code như sau:
PHP:
Private Declare Function PathCompactPath Lib "shlwapi.dll" Alias "PathCompactPathA" _
(ByVal hDC As Long, ByVal pszPath As String, ByVal dx As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetDC Lib "user32" _
(ByVal hWnd As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hDC As Long, ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib "user32" _
(ByVal hWnd As Long, ByVal hDC As Long) As Long
Private Const LOGPIXELSX = 88
Private Const POINTS_PER_INCH As Long = 72
PHP:
Private Function CompactPath(ByVal sPath As String, ByVal sWidth As Double) As String
Dim PointsPerPixel As Double, hWnd As Long, hDC As Long
hWnd = FindWindow("ThunderDFrame", Me.Caption)
hDC = GetDC(hWnd)
PointsPerPixel = POINTS_PER_INCH / GetDeviceCaps(GetDC(0), LOGPIXELSX)
CompactPath = sPath
PathCompactPath hDC, sPath, sWidth / PointsPerPixel
If InStr(sPath, Chr$(0)) Then CompactPath = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
ReleaseDC 0, hDC
End Function
PHP:
Private Sub cboFileName_DropButtonClick()
Dim vFile
vFile = Application.GetOpenFilename("Excel Files, *.xls;*.xlsx;*.xlsm")
If TypeName(vFile) = "String" Then
With cboFileName
.Text = CompactPath(vFile, .Width)
End With
End If
cboFileName.Enabled = False
cboFileName.Enabled = True
End Sub
-------------------------
Code chạy cũng tạm được, nhưng vấn đề ở đây là cái đường dẩn kia sau khi được "nén" lại có vẽ chưa chính xác lắm theo chiều ngang của Control
Nhờ các cao thủ xem giúp
Kết quả hiển thị thế này:
Mà lý ra phải như vầy thì sẽ đẹp hơn
-------------------
Không biết có liên quan đến Font size của Control không nhỉ?
(Với VB6, làm mấy vụ này nó dễ ẹc... còn VBA sao mà khó khăn thế nhỉ?)
File đính kèm
Lần chỉnh sửa cuối: