home *** CD-ROM | disk | FTP | other *** search
- '============================================================
- ' Moduldatei : 3D_CTL.BAS
- ' Aufgabe : Verschiedene 3D-Effekte fⁿr VB-Standard-
- ' Controls wie Eingabefelder, Combo-Boxen,
- ' Rollbalken u.a. Auch VBX-Controls k÷nnnen
- ' mit 3D-Effekten versehen werden.
- ' Copyright : Arthur Burda
- ' Compiler : Visual Basic 3.0 fⁿr Windows
- ' erstellt am : 26.01.1995
- '============================================================
-
- Option Explicit
-
- '============================================================
- ' Routine : FrameControl
- '============================================================
- ' Aufgabe : Zeichnet einen Rahmen um ein Control herum.
- ' Eingabe : Ctl = Control
- ' Thickness = Rahmendicke in Pixel
- ' FrameColor = Rahmenfarbe
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub FrameControl (Ctl As Control, Thickness As Integer, FrameColor As Long)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If Thickness < 1 Then Thickness = 1
- If Thickness > 10 Then Thickness = 10
-
- For i = 1 To Thickness
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), FrameColor
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), FrameColor
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), FrameColor
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), FrameColor
-
- Next i
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : FrameControl_Fast
- '============================================================
- ' Aufgabe : Zeichnet einen Rahmen um ein Control herum (be-
- ' sonders schnell durch die Verwendung der BF-Option
- ' in der Line-Methode der Parent-Eigenschaft des
- ' Controls)
- ' Eingabe : Ctl = Control
- ' Thickness = Rahmendicke in Pixel
- ' FrameColor = Rahmenfarbe
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub FrameControl_Fast (Ctl As Control, Thickness As Integer, FrameColor As Long)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If Thickness < 1 Then Thickness = 1
- If Thickness > 10 Then Thickness = 10
-
- Ctl.Parent.Line (Ctl.Left - Thickness, Ctl.Top - Thickness)-(Ctl.Left + Ctl.Width + Thickness - 1, Ctl.Top + Ctl.Height + Thickness - 1), FrameColor, BF
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : InsetControl
- '============================================================
- ' Aufgabe : Stellt ein Control versunken dar, indem ein Rahmen
- ' um das Control gezeichnet wird.
- ' Eingabe : Ctl = Control
- ' Thickness = Rahmendicke in Pixel
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub InsetControl (Ctl As Control, Thickness As Integer)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If Thickness < 1 Then Thickness = 1
- If Thickness > 10 Then Thickness = 10
-
- For i = 1 To Thickness
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), &H808080
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), &H808080
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), &HFFFFFF
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), &HFFFFFF
-
- Next i
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : InsetRaisedControl
- '============================================================
- ' Aufgabe : Versieht ein Control mit einem effektvollen Rahmen
- ' (Kombination aus erhoben und versunken).
- ' Eingabe : Ctl = Control
- ' Thickness = Rahmendicke
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub InsetRaisedControl (Ctl As Control, Thickness As Integer)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If Thickness Mod 2 <> 0 Then Thickness = Thickness + 1
- If Thickness < 2 Then Thickness = 2
- If Thickness > 10 Then Thickness = 10
-
- ' Innenteil des Rahmens zeichnen (erhoben)
- For i = 1 To Thickness / 2
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), &HFFFFFF
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), &HFFFFFF
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), &H808080
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), &H808080
-
- Next i
-
- ' Au▀enteil des Rahmens zeichnen (versunken)
- For i = Thickness / 2 + 1 To Thickness
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), &H808080
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), &H808080
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), &HFFFFFF
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), &HFFFFFF
-
- Next i
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : RaisedControl
- '============================================================
- ' Aufgabe : Stellt ein Control erhoben dar, indem ein Rahmen
- ' um das Control gezeichnet wird.
- ' Eingabe : Ctl = Control
- ' Thickness = Rahmendicke in Pixel
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub RaisedControl (Ctl As Control, Thickness As Integer)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If Thickness < 1 Then Thickness = 1
- If Thickness > 10 Then Thickness = 10
-
- For i = 1 To Thickness
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), &HFFFFFF
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), &HFFFFFF
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), &H808080
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), &H808080
-
- Next i
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : RaisedInsetControl
- '============================================================
- ' Aufgabe : Versieht ein Control mit einem effektvollen Rahmen
- ' (Kombination aus versunken und erhoben).
- ' Eingabe : Ctl = Control
- ' Thickness = Rahmendicke
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub RaisedInsetControl (Ctl As Control, Thickness As Integer)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If Thickness Mod 2 <> 0 Then Thickness = Thickness + 1
- If Thickness < 2 Then Thickness = 2
- If Thickness > 10 Then Thickness = 10
-
- ' Innenteil des Rahmens zeichnen (versunken)
- For i = 1 To Thickness / 2
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), &H808080
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), &H808080
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), &HFFFFFF
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), &HFFFFFF
-
- Next i
-
- ' Au▀enteil des Rahmens zeichnen (erhoben)
- For i = Thickness / 2 + 1 To Thickness
-
- ' linken Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left - i, Ctl.Top + Ctl.Height + i), &HFFFFFF
- ' oberen Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top - i)-(Ctl.Left + Ctl.Width + i, Ctl.Top - i), &HFFFFFF
- ' unteren Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left - i, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i - 1), &H808080
- ' rechten Teil des Rahmens zeichnen
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top - i + 1)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + i), &H808080
-
- Next i
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : ShadowControl
- '============================================================
- ' Aufgabe : Versieht ein Control mit Schatten.
- ' Eingabe : Ctl = Control
- ' ShadowThickness = Schattendicke
- ' BlackShadow = True, wenn der Schatten schwarz
- ' gezeichnet werden soll
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub ShadowControl (Ctl As Control, ShadowThickness As Integer, BlackShadow As Integer)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If ShadowThickness < 1 Then ShadowThickness = 1
- If ShadowThickness > 10 Then ShadowThickness = 10
-
- For i = 1 To ShadowThickness
-
- If BlackShadow Then ' Schatten schwarz
- Ctl.Parent.Line (Ctl.Left + ShadowThickness, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + ShadowThickness, Ctl.Top + Ctl.Height + i - 1), &H0&
- Else
- Ctl.Parent.Line (Ctl.Left + ShadowThickness, Ctl.Top + Ctl.Height + i - 1)-(Ctl.Left + Ctl.Width + ShadowThickness, Ctl.Top + Ctl.Height + i - 1), &H808080
- End If
-
- If BlackShadow Then ' Schatten schwarz
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top + ShadowThickness)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + ShadowThickness), &H0&
- Else
- Ctl.Parent.Line (Ctl.Left + Ctl.Width + i - 1, Ctl.Top + ShadowThickness)-(Ctl.Left + Ctl.Width + i - 1, Ctl.Top + Ctl.Height + ShadowThickness), &H808080
- End If
-
- Next i
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
- '============================================================
- ' Routine : ShadowControl_Fast
- '============================================================
- ' Aufgabe : Versieht ein Control mit Schatten (besonders
- ' schnell durch die Verwendung der BF-Option in
- ' der Line-Methode der Parent-Eigenschaft des
- ' Controls)
- ' Eingabe : Ctl = Control
- ' ShadowThickness = Schattendicke
- ' BlackShadow = True, wenn der Schatten schwarz
- ' gezeichnet werden soll
- ' Ausgabe : keine
- '------------------------------------------------------------
- '
- Sub ShadowControl_Fast (Ctl As Control, ShadowThickness As Integer, BlackShadow As Integer)
-
- Dim OrigScaleMode
- Dim i
-
- ' Original-Skaliermodus in OrigScaleMode speichern
- OrigScaleMode = Ctl.Parent.ScaleMode
-
- ' Pixel-Skaliermodus setzen
- Ctl.Parent.ScaleMode = 3
-
- If ShadowThickness < 1 Then ShadowThickness = 1
- If ShadowThickness > 10 Then ShadowThickness = 10
-
- If BlackShadow Then ' Schatten schwarz
- Ctl.Parent.Line (Ctl.Left + ShadowThickness, Ctl.Top + ShadowThickness)-(Ctl.Left + Ctl.Width + ShadowThickness - 1, Ctl.Top + Ctl.Height + ShadowThickness - 1), &H0&, BF
- Else
- Ctl.Parent.Line (Ctl.Left + ShadowThickness, Ctl.Top + ShadowThickness)-(Ctl.Left + Ctl.Width + ShadowThickness - 1, Ctl.Top + Ctl.Height + ShadowThickness - 1), &H808080, BF
- End If
-
- ' Original-Skaliermodus wieder setzen
- Ctl.Parent.ScaleMode = OrigScaleMode
-
- End Sub
-
-