vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Farbwert aus .ini für neue Form 
Autor: Manfred X
Datum: 17.11.17 06:04

Hallo!

Settings programmiert man nicht selbst (Anwendungs-Framework):
IDE: Eigenschaftenfenster -> Applicationsettings -> PropertyBinding ->
BackColor -> New

Ini-Variante:

Die API-Einbindung in VB:
    <System.Runtime.InteropServices.DllImport("kernel32.dll", _
        SetLastError:=True)> _
    Private Shared Function GetPrivateProfileString(ByVal lpAppName As String, _
                            ByVal lpKeyName As String, _
                            ByVal lpDefault As String, _
                            ByVal lpReturnedString As _
                            System.Text.StringBuilder, _
                            ByVal nSize As Integer, _
                            ByVal lpFileName As String) As Integer
    End Function
 
    <System.Runtime.InteropServices.DllImport("kernel32.dll", _
        SetLastError:=True)> _
    Private Shared Function WritePrivateProfileString(ByVal lpAppName As _
    String, _
                        ByVal lpKeyName As String, _
                        ByVal lpString As String, _
                        ByVal lpFileName As String) As Integer
    End Function
Einige Hilfsfunktionen für Farb-Schlüssel:
Public Function IniColorDialog(ByVal DefaultColor As Color, _
                                   ByRef UserColor As Color) As Boolean
 
        'Weitere Details: http://www.vbarchiv.net/tipps/details.php?id=2241
 
        Using colordia As New System.Windows.Forms.ColorDialog
            Dim dc As Integer
            With DefaultColor
                dc = Microsoft.VisualBasic.Information.RGB(.R, .G, .B)
            End With
 
            With colordia
                .CustomColors() = {dc}
                .Color = DefaultColor
                .SolidColorOnly = True
                If .ShowDialog = Windows.Forms.DialogResult.Cancel Then
                    UserColor = Nothing
                    Return False
                Else
                    UserColor = .Color
                    Return True
                End If
            End With
        End Using
    End Function
 
 
    Private Function CheckIniParams(ByVal IniFile As String, _
        section As String, Keyname As String) As Boolean
 
        If Not IO.File.Exists(IniFile) Then Return False
        If Not (IO.Path.GetExtension(IniFile).ToLower) = ".ini" Then Return _
          False
        If String.IsNullOrWhiteSpace(section) Then Return False
        If String.IsNullOrWhiteSpace(Keyname) Then Return False
        Return True
    End Function
 
 
    Private Function SetColorToIni(IniFile As String, _
                              Section As String, Keyname As String, _
                              ColorToSet As System.Drawing.Color) As Boolean
 
        If Not CheckIniParams(IniFile, Section, Keyname) Then Return False
 
        Dim keyvalue As String = ColorToSet.ToArgb.ToString()
 
        Dim result As Integer = WritePrivateProfileString _
            (Section, Keyname, keyvalue, IniFile)
 
        Return result > 0
    End Function
 
 
    Private Function GetColorFromIni(ByVal IniFile As String,
                        Section As String, Keyname As String,
                        ByRef ColorFromIni As System.Drawing.Color) As Boolean
 
        If Not CheckIniParams(IniFile, Section, Keyname) Then Return False
 
        Dim keyvalue As New System.Text.StringBuilder(100)
        Dim defaultcolor As String = Color.White.ToArgb.ToString
 
        Dim result As Integer = GetPrivateProfileString _
            (Section, Keyname, defaultcolor, keyvalue, keyvalue.Capacity, _
            IniFile)
 
        ColorFromIni = Color.FromArgb(CInt(keyvalue.ToString))
        Return True
    End Function
Anwendungsbeispiel:
'Angemessener Pfad der Ini-Datei
Dim IniFilename As String = _
IO.Path.Combine( _
My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, _
"Einstellungen.ini")
 
'Schlüssel für Ini
Dim section As String = "Farbeinstellungen"
Dim keyname As String = "Hintergrundfarbe"
 
'Ini-Datei ggf. erstellen und einrichten
If Not IO.File.Exists(IniFilename) Then
   Using sw As IO.StreamWriter = IO.File.CreateText(IniFilename)
      sw.WriteLine("[" & section & "]")
      sw.WriteLine(keyname & "=" & Me.BackColor.ToArgb.ToString)
   End Using
End If
 
Dim defaultcolor, usercolor, inicolor As Color
 
GetColorFromIni(IniFilename, section, keyname, defaultcolor)
 
If IniColorDialog(defaultcolor, usercolor) Then
 
   'Schlüsselwert (Farbe) eintragen
   If Not SetColorToIni(IniFilename, section, keyname, usercolor) Then
      MsgBox("Farbe kann nicht eingetragen werden")
   Else
 
      'Schlüsselwert (Farbe) lesen
      If Not GetColorFromIni(IniFilename, section, keyname, inicolor) Then
          MsgBox("Farbe kann nicht gelesen werden")
      Else
          Me.BackColor = inicolor
      End If
   End If
End If


Beitrag wurde zuletzt am 17.11.17 um 06:11:08 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Farbwert aus .ini für neue Form1.080Erwin116.11.17 22:29
Re: Farbwert aus .ini für neue Form584Franki17.11.17 00:33
Re: Farbwert aus .ini für neue Form611Manfred X17.11.17 06:04
Re: Farbwert aus .ini für neue Form572Erwin117.11.17 19:03
Re: Farbwert aus .ini für neue Form587Manfred X17.11.17 22:45
Re: Farbwert aus .ini für neue Form533Erwin118.11.17 16:30
Re: Farbwert aus .ini für neue Form571Manfred X19.11.17 06:48
Re: Farbwert aus .ini für neue Form645Erwin120.11.17 10:26

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-2024 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