vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Mit einer Public Funktion auf Formen zugreifen 
Autor: Lacoste
Datum: 14.12.05 18:05

Hi Leute,
ich bin gerade dabei einen Code für einen FormSkin so umzubauen, dass er über ein Modul aufgerufen werden kann.

Bisher habe ich jedesmal bei der Form diesen Code eingefügt:
' Allgemeine Deklaration
Private Type POINTAPI
  x As Long
  y As Long
End Type
 
Private Declare Function CreateRectRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, _
 ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreateRoundRectRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, _
 ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, _
 ByVal Y3 As Long) As Long
Private Declare Function CreatePolygonRgn Lib "gdi32" _
 (lpPoint As POINTAPI, ByVal nCount As Long, _
 ByVal nPolyFillMode As Long) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, _
 ByVal X2 As Long, ByVal Y2 As Long) As Long
 
Private Declare Function CombineRgn Lib "gdi32" _
 (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _
 ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
 
Private Declare Function SetWindowRgn Lib "user32" _
 (ByVal hWnd As Long, ByVal hRgn As Long, _
 ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib "gdi32" _
 (ByVal hObject As Long) As Long
 
' CombineRgn
Private Const RGN_AND = 1
Private Const RGN_OR = 2
Private Const RGN_XOR = 3
Private Const RGN_DIFF = 4
Private Const RGN_COPY = 5
 
Private Sub Form_Load()
Dim rgn&, pt(7) As POINTAPI
 
' Rechteckige Region mit Runden Ecken
rgn& = CreateRoundRectRgn(0, 0, Me.ScaleWidth, Me.ScaleHeight, 40, 40)
' Die letzten zwei Zahlen sind für die Schärfe der Abrundung
' Scale Mode muss auf 3-Pixel gestellt sein
 
' Region an ein Fenster verweisen. (dabei ist es egal welche
' Fensterklasse. d.H. auch Textboxen, Comboboxen...)
SetWindowRgn Me.hWnd, rgn, True
' Danach wird der Speicherberich der Region freigegeben
' ...und fertig
DeleteObject rgn
 
End Sub
Diesen Code wollte ich jetzt so umbauen, dass ich ihn direkt von einem Modul ausführen kann, dazu habe ich erstmal die allgemeine Deklaration geändert, indem ich alle Private Functionen in Public Functionen umgewandelt habe und dann selber noch ein Public Function erstellt habe, in der ich den Code in abgeänderter Weise vom Form_Load eingefügt habe.

Leider funktioniert dies aber bei mir nicht. Wahrscheinlich liegt der Fehler in der von mir erstellten Function MakeFormSkin.

Hier habe ich den veränderten Code gepostet, der in einem Modul stehen soll:
' Allgemeine Deklaration im Modul
Public Type POINTAPI
  x As Long
  y As Long
End Type
 
Public Declare Function CreateRectRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, _
 ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CreateRoundRectRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, _
 ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, _
 ByVal Y3 As Long) As Long
Public Declare Function CreatePolygonRgn Lib "gdi32" _
 (lpPoint As POINTAPI, ByVal nCount As Long, _
 ByVal nPolyFillMode As Long) As Long
Public Declare Function CreateEllipticRgn Lib "gdi32" _
 (ByVal X1 As Long, ByVal Y1 As Long, _
 ByVal X2 As Long, ByVal Y2 As Long) As Long
 
Public Declare Function CombineRgn Lib "gdi32" _
 (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, _
 ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
 
Public Declare Function SetWindowRgn Lib "user32" _
 
 (ByVal hWnd As Long, ByVal hRgn As Long, _
 ByVal bRedraw As Boolean) As Long
Public Declare Function DeleteObject Lib "gdi32" _
 (ByVal hObject As Long) As Long
 
' CombineRgn
Public Const RGN_AND = 1
Public Const RGN_OR = 2
Public Const RGN_XOR = 3
Public Const RGN_DIFF = 4
Public Const RGN_COPY = 5
 
' Dies ist jetzt meine selbergebaute Funktion die aus z. B. Form_Load einer 
' Form aufgerufen werden soll, dabei übergibt man der Variablen sFormname den
' Formnamen der Form, auf der der FormSkin angewendet werden soll.
Public Function MakeFormSkin(sFormname As Form)
Dim rgn&, pt(7) As POINTAPI
 
sFormname.ScaleMode = 3
 
' Rechteckige Region mit Runden Ecken
rgn& = CreateRoundRectRgn(0, 0, sFormname.ScaleWidth, sFormname.ScaleHeight, _
  40, 40)
 
' Die letzten zwei Zahlen sind für die Schärfe der Abrundung
' Scale Mode muss auf 3-Pixel gestellt sein
' Region an ein Fenster verweisen. (dabei ist es egal welche
' Fensterklasse. d.H. auch Textboxen, Comboboxen...)
SetWindowRgn sFormname.hWnd, rgn, True
' Danach wird der Speicherberich der Region freigegeben
' ...und fertig
DeleteObject rgn
 
End Function
Schon mal besten Dank für eure Hilfe!!!

Gruß Falk
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mit einer Public Funktion auf Formen zugreifen862Lacoste14.12.05 18:05
Re: Mit einer Public Funktion auf Formen zugreifen507OldMan14.12.05 21:58
Re: Mit einer Public Funktion auf Formen zugreifen493Lacoste15.12.05 21:25

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel