Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0650: Schriftarteneinstellungen sichern und wiederherstellen

 von 

Beschreibung 

Normalerweise ist es mit VB nicht möglich, die Font-Einstellungen eines Objektes zu sichern oder auf andere Objekte zu übertragen. Da jedes Font-Objekt ein eindeutiges Handle hat, wären die betreffenden Font-Objekte identisch. Jede Änderung, die man nun an einem der Font-Objekte vornimmt, wirkt sich damit vollautomatisch auch auf alle anderen Font-Objekte mit demselben Handle aus.

Abhilfe schafft hier das IFont-Interface, das unter anderem eine Clone-Methode zur Verfügung stellt. Mit dieser Clone-Methode kann man die Eigenschaften eines Font-Objektes auf ein anderes übertragen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,63 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "cmdRestoreFont"
' Steuerelement: Schaltfläche "cmdSaveFont"
' Steuerelement: Textfeld "txtTest"
Option Explicit

Private Sub cmdSaveFont_Click()
    ' alten Font sichern
    FontSave txtTest.Font
    
    ' und einen beliebigen neuen setzen
    txtTest.FontSize = 10
    txtTest.FontBold = True
    txtTest.FontItalic = True
    txtTest.FontUnderline = True
End Sub

Private Sub cmdRestoreFont_Click()
    On Error Goto ErrHandler
    
    ' alten Font wiederherstellen
    Set txtTest.Font = FontRestore
    Exit Sub
    
ErrHandler:
    ' das Wiederherstellen ist fehlgeschlagen, weil FontRestore keinen Font zurückgeben konnte
End Sub

Private Sub Form_Load()
    txtTest.FontSize = 12
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'--------- Anfang Modul "Module1" alias Module1.bas ---------
Option Explicit

Private m_objOldFont As StdFont

' Hinweis: Ein einmal gesicherter Font kann /nicht/ mehrmals verwendet werden!
'          Jeder gesicherte Font kann damit wirklich nur einmal vergeben werden.

' einen Font sichern
Public Sub FontSave(Expression As StdFont)
    Dim objIFont As IFont
    
    ' falls noch ein Font gesichert ist, wird dieser zuerst gelöscht
    If Not (m_objOldFont Is Nothing) Then
        Set m_objOldFont = Nothing
    End If
    
    ' den übergebenen Font in ein IFont übertragen
    Set objIFont = Expression
    
    ' das IFont klonen
    Set m_objOldFont = New StdFont
    objIFont.Clone m_objOldFont
    
    ' das IFont wieder freigeben
    Set objIFont = Nothing
End Sub

' einen Font wiederherstellen
Public Function FontRestore() As StdFont

      If m_objOldFont Is Nothing Then
         MsgBox "Kein Font zum Wiederherstellen vorhanden!", vbExclamation, "FontRestore"
         Exit Function
      End If
      
      Set FontRestore = m_objOldFont
      Set m_objOldFont = Nothing
End Function


'---------- Ende Modul "Module1" alias Module1.bas ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.