Icons auf Forms

27/03/2015 - 19:37 von Lothar Geyer | Report spam
Ich versuche auf den Forms immer ein Icon anzubringen. Bei knapp 500
Forms in einer Anwendung ist das natürlich ein Problem. Die Anwendung
wird als Basis-Programm mit mehreren Modulen angeboten. Und da bietet es
sich an, für die Icons der Forms ein Modul-spezifisches Icon zu
verwenden. Das sind natürlich wesentlich weniger.

Das Problem: Wenn sich die Icons àndern (neuer Designstil), müssen
manuell (fast) alle Forms angefasst werden, da die Icons ja in der .frx
gespeichert werden. Und das kostet ganz schön Zeit.

Die Frage: Gibt es eine Abhilfe? Eventuell auch mit einem (free source)
Zusatztool?

Lothar Geyer
 

Lesen sie die antworten

#1 Ulrich Möller
27/03/2015 - 20:45 | Warnen spam
Am 27.03.2015 um 19:37 schrieb Lothar Geyer:
Ich versuche auf den Forms immer ein Icon anzubringen. Bei knapp 500
Forms in einer Anwendung ist das natürlich ein Problem. Die Anwendung
wird als Basis-Programm mit mehreren Modulen angeboten. Und da bietet
es sich an, für die Icons der Forms ein Modul-spezifisches Icon zu
verwenden. Das sind natürlich wesentlich weniger.

Das Problem: Wenn sich die Icons àndern (neuer Designstil), müssen
manuell (fast) alle Forms angefasst werden, da die Icons ja in der
.frx gespeichert werden. Und das kostet ganz schön Zeit.

Die Frage: Gibt es eine Abhilfe? Eventuell auch mit einem (free
source) Zusatztool?

Lothar Geyer



Hallo Lothar,

einfach beim Laden der Form mit SetFormIcon setzen.

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Private Const WM_SETICON = &H80
Private Const IMAGE_ICON = 1
Private Const LR_LOADFROMFILE = &H10
Private Const SM_CXSMICON As Long = 49
Private Const SM_CYSMICON As Long = 50

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA"
(ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1
As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, LParam As
Any) As Long

Public Function SetFormIcon(hWnd As Long, strIconPath As String) As Boolean
Dim lIcon As Long
Dim lResult As Long
Dim X As Long, Y As Long

X = GetSystemMetrics(SM_CXSMICON)
Y = GetSystemMetrics(SM_CYSMICON)
lIcon = LoadImage(0, strIconPath, 1, X, Y, LR_LOADFROMFILE)
lResult = SendMessage(hWnd, WM_SETICON, 0, ByVal lIcon)

End Function

Alternativ könnte man auch von einer Ressource das Icon laden und zuweisen.

Ulrich

Ähnliche fragen