|
AutoSize dla label, ale w pionie. |
|
|
|
Nadesłał marcin_an
|
|
czwartek, 10 sierpień 2006 |
Nie widzę nigdzie czegoś takiego, a może być przydatne. Funkcja, która ustawia wysokość etykiety (Label) w taki sposób, by zmieścił się cały wpisany tekst, a jednocześnie szerokość pozostała bez zmian. Coś jak AutoSize, tylko działające w pionie (AutoSize działa tylko w poziomie). Funkcja ma w tej chwili jedną niedoróbkę: jeżeli jest bardzo długi, niełamliwy ciąg znaków, to funkcja będzie naliczała zbyt dużo linii. Label po prostu nie łamie na siłę takiego ciągu, tylko powoduje jego "wypłynięcie" za obszar rysowania. Jednak przy małej ilości sytuacji, gdy taki ciąg powstanie oraz niewielkiej szkodliwości ewentualnych problemów związanych z nadmiarowymi liniami... można przyjąć, że działa dobrze ;-).
-------- BEGIN CODE -------- Option Explicit
''' ' Funkcja oblicza i ustawia wysokość etykiety tak, by przy obecnej ' szerokości zmieścił się w niej cały tekst. ' Argumenty: ' lblTarget Referencja do etykiety (Label), której dotyczy operacja ' setHeight Określa, czy funkcja ma ustawić wartość dla lblTarget.Height. ' TRUE (Domyślne) oznacza ustawienie wartości. ' FALSE oznacza, że wysokość nie zostanie ustawiona ' Zwraca: ' Wyliczoną wysokość w jednostkach zgodnych z ScaleMode kontenera etykiety. ' Function setLabelHeight(ByRef lblTarget As Label, Optional ByVal setHeight As Boolean = True) As Double Dim oContainer As Object Dim i As Long Dim t(255) As Double Dim c As Integer Dim p As Double Dim w As Double Dim n As Long n = 1 Set oContainer = lblTarget.Container With oContainer For i = 0 To 255 t(i) = .TextWidth(Chr$(i)) Next End With With lblTarget w = .Width For i = 1 To Len(.Caption) c = Asc(Mid$(.Caption, i, 1)) If c > 32 Then p = p + t(c) End If If p >= w Then p = 0 n = n + 1 End If Next If setHeight Then lblTarget.Height = n * oContainer.TextHeight("WMj^_") End If End With setLabelHeight = n * oContainer.TextHeight("WMj^_") End Function -------- END CODE --------
|
Dodane przez mikmas w dniu - 2006-10-04 08:07:35 Do tego jest w?aściwoś? WordWrap kontrolki  |
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. Powered by AkoComment 2.0! |