vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 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
Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 15.04.14 13:22

Hallo,
habe noch einige Verständnisfragen zum Thema "My.Settings"

Wenn man unter Einstellungen einen Eintrag aufnimmt, so besteht dieser aus folgenden Angaben:
- Name
- Typ
- Bereich (bei mir in der Regel Benutzer)
- Wert

Nun ist mit folgendes aufgefallen:

1.
Wenn der Typ "String" ist, kann man einen Wert vorgeben, der auch direkt ausgelesen werden kann.
Veränderungen durch Zuweisungen werden jedoch unter Einstellungen nicht angezeigt, jedoch gespeichert.

Beim Typ Integer, System.Drawing.Point bzw. System.Drawing.Size kann man auch Werte vorgeben,
diese können jedoch nicht ausgelesen werden. Veränderungen an diesen Werten
werden auch nicht angezeigt, aber auch gespeichert.

Kann mir jemand diese Umstände erklären. Ich verstehe dieses Verhalten nicht.

2.
Ich möchte über eine Windows-Form Veränderungen an den Einstellungen vornehmen!
Dazu habe ich die Felder gebunden.

Beispiele:
txbFeld.DataBindings.Add("Text", My.Settings, "Feld")
chbFeld2.DataBindings.Add("Checked", My.Settings, "Feld2")

Über einen Button "OK" könnte ich dann die neuen Einstellungen sichern mit:
My.Settings.Save() oder automatisch beim Herunterfahren.
Was mache ich aber, wenn ich Änderungen durchgeführt habe und ich möchte diese Änderungen zurücksetzen
Gibt es ein Reset()??
Wie würdet ihr so etwas lösen?

3.
Ich möchte mit meiner Entwicklungsumgebung umziehen auf einen anderen Rechner.
Was muss ich zum Thema "My.Settings" beachten?

4.
Wenn ich das fertige Programm weitergeben will, was muss ich berücksichtigen
Wie ist der Ablauf. Was ist zu tun?

Wenn ich gespeicherte Werte z.B. für Size und Location in den Einstellungen hinterlegt habe
und dies Werte weitergebe.
Was passiert beim Anwender, wenn die Grafikeinstellungen anders sind?

Ihr seht: Fragen über Fragen
Gibts es zum Thema "Einstellungen" Literatur oder Internetseiten

Ich würde mich über eine rege Beteiligung freuen, zumal es in meinen Augen ein wichtiges Thema ist!

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 15.04.14 14:00

zu 1.)

Wo willst Du wann welche Werte speichern/abfragen?
IDE? Designer? Code?
Selbstverständlich können alle Werte, die sich auf
den entsprechenden Datentyp beziehen zugewiesen werden.

zu 2.)

Wenn Du ein Reset durchführen möchtest, mußt Du
beim Programmstart zunächst alle Settings-Werte in den Properties
eines Objekts speichern, damit sie zur Laufzeit jederzeit wieder
abgefragt und auf die MySettings-Variablen zugewiesen werden können.

An Settings-Variable würde ich nicht binden, sondern zunächst
prüfen, ob die aktuellen Werte brauchbar sind.

zu 3.)

Einstellungen sind bezogen auf Projekte, nicht auf die Entwicklungsumgebung.
Beim Übertragen eines Projekts muß auch die Settings-Datei mitgenommen werden.

zu 4.)

Die Einstellungen werden als Datei versionsbezogen in den vorgegebenen Windows-Ordnern
gespeichert. Nach der Installation sind zunächst die Voreinstellungen vorhanden.
Eigentlich ist nichts zu tun.

zu 5.)

Um die Abstimmung Deiner Benutzer-Oberfläche auf die Windows-Systemeinstellungen
mußt Du Dich selbst kümmern. Dafür stehen bei den Controls Hilfsmittel
für die Anpassung der Ausrichtung, der Anordnung, der Größe etc. zur Verfügung.













Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 15.04.14 16:24

Hallo Manfred X,
vielen Dank für Deine Antwort

zu 1)
Hier habe ich mich unpräzise bis falsch ausgedrückt.
Wird ein Wert eingetragen, so kann dieser im Programm direkt ausgelesen werden.
Auch kann der Wert verändert und gespeichert werden.

Beispiel:
- Name: Feld
- Typ: Integer
- Bereich: Benutzer
- Wert: 5
Das Programm wird gestartet und folgender Wert zugewiesen
My.Settings.Feld = 6

Jetzt jedoch die Besonderheit:
Gehe ich in die Einstellungen, wo normalerweise neue Variablen eingestellt werden,
so sieht man, dass die Voreinstellung sich nicht verändert hat.
Der Wert ist weiterhin 5
Meine Fragen:
Ist der Wert eine Art Default-Wert
Warum gibt es diese 2 Werte für eine Variable

Zu Deiner Frage
Wo willst Du wann welche Werte speichern/abfragen?
IDE? Designer? Code?

Ich möchte in der Entwicklungsumgebung Variablen anlegen und mit einem Vorgabewert belegen.
Diese Vorgabewerte sollen im Verlauf des Programmes verändert und gespeichert werden und dann beim nächsten Start des Programmes erneut zur Verfügung stehen.

Zu 2)
Du schreibst, dass ich für ein Reset zunächst alle Werte in Properties eines Objektes speichern muss, um diese dann bei einem Reset zurückschreiben zu können.
Wie ist das gemeint bzw. wie müsste ich das "Speichern in Properties" machen.

Die Werte die gespeichert werden sollen, werden in der WinForm überprüft.
Hat die Datenbindung noch andere Nachteile

Zu 3)
Wo steht denn die Settingsdatei
Reicht es aus, das komplette Projekt zu kopieren oder steht die Datei außerhalb des Projektes?

Zu 4 und 5)
Mir fällt das Thema schon sehr schwer zu verstehen, aber jetzt kann ich nicht mehr folgen.
Wird die Settings-Datei beim Kompilieren an eine andere Stelle geschrieben?

Ich würde mich freuen, wenn Du mir noch weitere Infos zur Verfügung stellen könntest!

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 15.04.14 17:08

zu 1)

Den Vorgabewert einer Settingsvariable bringt das Programm mit.
Änderungen des Users werden lokal oder im Roaming-Bereich in
Config-Dateien gespeichert und beim erneuten Start dort gelesen.
Werden die Config-Dateien gelöscht, greift das Programm wieder auf den
Ausgangswert zu. Das kann man als Default-Wert bezeichnen.

So sieht der Code für eine Settings-Variable in Settings.Designer.VB aus,
wobei "Teststring für Benutzer" der Vorgabewert für "Teststring" ist:
 <Global.System.Configuration.UserScopedSettingAttribute(),  _
  Global.System.Diagnostics.DebuggerNonUserCodeAttribute(),  _
  Global.System.Configuration.DefaultSettingValueAttribute _
        ("Teststring für Benutzer")>  _
  Public Property Teststring() As String
       Get
          Return CType(Me("Teststring"),String)
       End Get
       Set
           Me("Teststring") = value
       End Set
  End Property
Wie Du siehst, ist der Vorgabewert fest im Code eingebaut.
Diese Angaben stehen in der App.Config, die dem Projekt zugeordnet ist.

Was Du erreichen möchtest, entspricht dem eingebauten Standardverhalten.


2.)

Du kannst z.B. zu jeder Settings-Variable eine weitere Settings-Variable
erstellen, die den BackUp-Wert enthält. Bei einem Reset weist Du
der Settings-Variable wieder den Wert zu, der in der zugehörigen
Backup-Variable gespeichert ist.


3.)

Die Config-Dateien stehen dort, wo Du sie eingerichtet hast, z.B.
Lokal / Roaming des Users als User-Config unter der Versionsnummer
im Abschnitt der Anwendung.
http://msdn.microsoft.com/de-de/library/c9db58th%28v=vs.100%29.aspx

Das Kopieren des Projekts bezieht sich nicht auf einen User !


4.)

Die Settings-Dateien des Users (User.Config) haben nichts mit dem Kompilieren
zu tun. Sie werden beim Speichern von Einstellungen zur Laufzeit erstellt
oder aktualisiert.

So sieht der Inhalt einer User.Config aus:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<Anwendungsname.My.MySettings>
<setting name="Teststring" serializeAs="String">
<value>geänderter Teststring für Benutzer</value>
</setting>
</Anwendungsname.My.MySettings>
</userSettings>
</configuration>


5.)

Was genau möchtest Du - anhand der Windows-Systemeinstellungen des Users -
in Deinem Programm anpassen?

Beitrag wurde zuletzt am 15.04.14 um 17:21:04 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 15.04.14 19:06

Hallo Manfred X,
vielen Dank für die Informationen.

Deine Frage aus Pkt. 5)
- Position und Größe einer jeden WinForm
- Druckerinformationen
- Aufteilungen (SplitterDistance) im Splitcontainer
- Farben und andere Eigenschaften von Objekten
- Jeder andere KrimsKrams, den man sich merken muss
Da kommt einiges zusammen.

Ein klein wenig hat mich die Ausführung unter Pkt. 2 verwirrt, nämlich für jeden Setting-Eintrag
ein Backup anzulegen und die Daten dann zu tauschen.
Ein erheblicher Aufwand, wenn man viele Felder hat.
Wenn man sich größere Projekte vorstellt, so können doch locker mehrere Hundert
Settings anfallen.

Auf alle Fälle freue ich mich, dass Du mir diese Informationen hast zukommen lassen.
Die muss ich jetzt erstmal sondieren und kapieren.

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 15.04.14 19:42


Gewöhnlich zwingt man dem User keine eigenen Farben auf, sondern übernimmt
die Systemfarben. Oder man baut sich eine serialisierbare "Skin"-Klasse,
in der bestimmte Farb-Sets fest definiert sind. Das erledigt man nicht über
Programmeinstellungen.

Für Winforms, die Größenänderungen erlauben, genügt es gewöhnlich, die
erforderliche Mindestgröße festzulegen und die Startposition-Eigenschaft.
Wenn der User mehrere Instanzen des gleichen Formulars erstellen kann, ist
ein Speichern von Location und Size kaum zweckmäßig.

Die Controls-Eigenschaften sind meist am besten datenabhängig einzurichten,
etwa im Sinne von Autosizing nach dem Füllen.

Beim Speichern von Printersettings ist Vorsicht geboten. Welche Einstellungen
jeweils geeignet sind, hängt auch von der Wahl des Druckers oder von der
eingelegten Papiergröße ab. Der User richtet zweckmäßigerweise die Details vor
dem Druck im Printerdialog ein.

Bei umfangreichem "Krimskrams" bietet es sich an, eine Datenbank zu nutzen
und die Controls-Eigenschaften an Spalten in Datentabellen zu binden.
Das hat auch den Vorteil, daß die Einstellungen gegen (störende) Änderungen
durch Dritte geschützt sind.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: ErfinderDesRades
Datum: 16.04.14 18:13

Hier gibts ein komisches Dingens, mit dem man zig Werte verschiedenster Art in einen einzigen String stopfen kann, bzw. was andersherum die Werte auch wieder anwenden kann auf die Properties, von denen sie gelesen wurden:
http://www.activevb.de/cgi-bin/tippupload/show/257/Flexible_Settings
Es steht dir natürlich frei, diesen String einfach in den Settings abzulegen.

(Rechtschreibfehler urheberrechtlich geschützt)

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 08.05.14 08:56

Hallo,
habe in dieser Diskussionsrunde viel gelernt zum Thema "Settings"

Habe jedoch noch eine Frage:
Ich möchte die Settings dokumentieren.
Dazu möchte ich alle Einträge mit den entsprechenden Werten lesen und ausgeben.

Wie kann ich die Werte auslesen?
Habe dazu keine Informationen finden.

Bräuchte Eure Hilfe

Gruß
spatzimatz
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 08.05.14 10:02

Einfach abfragen?

'Metadaten der Settings-Variablen
With My.Settings
   For Each it As System.Configuration.SettingsProperty In .Properties
       Console.WriteLine _
         (it.Name & "  " & it.PropertyType.ToString & "  " & _
         it.DefaultValue.ToString)
   Next it
End With
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: ErfinderDesRades
Datum: 08.05.14 10:17

ach - warnix

(Rechtschreibfehler urheberrechtlich geschützt)

Beitrag wurde zuletzt am 08.05.14 um 10:19:03 editiert.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 08.05.14 12:37

Hallo Manfred X,
vielen Dank.

Für die Dokumentation bräuchte ich die zugewiesenen Werte und nicht die DefaultValues.
Wie komme ich da dran?
Ich stehe irgendwie auf dem Schlauch.

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 08.05.14 13:55

Hallo Manfred,
habe eine Lösung:

My.Settings.Item(it.Name).ToString

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 08.05.14 18:27

Hallo,
dachte mit meiner Idee komme ich weiter. Nix!
Möchte nur den Namen und den Wert (nicht DefaultWert) aus den Settings auslesen. Aber dabei tritt ein Fehler auf und ich kann ihn einfach nicht finden.
Der Fehler tritt auf bei der Zuweisung in Feld 2 und lautet:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Warum? Wieso? Weshalb?

Wie kann ich das Problem abfangen??

DIM Feld2 ...
....
With My.Settings
   For Each it As System.Configuration.SettingsProperty In .Properties
       Feld1 = it.Name
       Feld2 = My.Settings.Item(it.Name).ToString 
       ...
       ...
   Next it
End With
...
Ich komme einfach nicht weiter. Bitte helft mir

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Kuno60
Datum: 09.05.14 03:46

Hallo,

die Settings sind dafür gedacht, dass ein Benutzer des Programms die Vorgabewerte verändern kann, um z.B. seinen Namen anzugeben, die Farben zu ändern usw.
Auch können einige Properties über den Form-Designer direkt an die Settings gebunden werden z.B. die Position einer Form.
Durch den Aufruf von My.Settings.Reset(), können alle Einstellungen wieder auf die Vorgabewerte zurückgesetzt werden.

Die Settings sind nicht dafür gedacht, programmspezifische Werte zu speichern! Dafür sollte man besser die Serialisierung benutzen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 09.05.14 08:23

Hallo Kuno60,
genau so wie Du das beschrieben hast, möchte ich die Settings einsetzen.
Einige Steuergrößen, nicht Size und Location für Forms, möchte ich dennoch dokumentieren.

Und genau hier tritt nun mein Problem auf.
Deshalb hatte ich um Hilfe nachgefragt.

Vielleicht habt ihr noch eine Idee?

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 09.05.14 11:10

Hallo!

Ich vermute, daß in der betroffenen Settings-Variable (Datentyp?)
kein Wert (Referenz) eingetragen ist.
Diese Zuweisdung sollte man beim Speichern oder bereits beim Setzen
der Einstellungsvariablen abfangen.
Für Settings-Variablen sollte auch stets ein Defaultwert definiert sein.

Ansonsten: Du mußt in der Schleife - vor der Zuweisung des Wertes
auf Feld2 - "Nothing" abfragen. Beim Fehlen der Referenz wird
nämlich nicht in String gewandelt.







Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 09.05.14 13:33

Hallo Manfred X,
bin ein wenig weiter.
Weiss jetzt, das DefaultValue manchmal nicht gefüllt ist. Leider liegt für die Settingfelder (String)
nicht immer ein Wert vor.
Deshalb habe ich folgendes geschrieben:

F3 = IIf(it.DefaultValue = Nothing, " ", it.DefaultValue.ToString)

Das hat nicht funktioniert

Wenn ich aber alle Records überspringe, bei denen DefaultValue leer ist, dann gehts
If it.DefaultValue = Nothing Continue For

Warum wird die Abfrage so unterschiedlich behandelt?
Und dann kommen gleich weitere Frage.

Wann nimmt man was:
- Nothing
- ""
- DBNull
- Empty
- ...
Und wie macht man es am besten.
Schaut man ins Internet, dann sieht man jede erdenkliche Gangart, die aber in den Diskussionsrunde wieder in frage gestellt werden.



Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 09.05.14 13:47


Auf "Nothing" fragt man bei Referenztypen mit "Is"/"IsNot" ab.

Nothing (VB) ist der Initialisierungswert für alle Variablen.
DBNull.value ist die "undefiniert"-Kennung für Datenbank-Felder.
Diese Sonderfälle haben in Settings nichts zu suchen !!

String.Empty steht für einen Leerstring.
Es muß im Einzelfall entschieden werden, ob dieser Wert einer
bestimmten Settings-Variable sinnvoll zuzuordnen ist und wie
damit im Programm zu verfahren ist.





Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 09.05.14 14:20

Hallo Manfred X,
vielen Dank für die Info
Jetzt habe ich Is Nothing eingesetzt

F3 = IIf(it.DefaultValue Is Nothing, " ", it.DefaultValue.ToString)

Das funktioniert weiterhin nicht!!!


If it.DefaultValue Is Nothing Continue For
Damit kann ich weiterhin überspringen.

Es ist zum verzweifeln! Warum geht es nicht????
Ich bekomme schon richtige Gewissensbisse, wenn ich solch blöde Fragen stellen muss!!
Aber leider notwendig.

Gruß
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 09.05.14 14:31

Kein Nothing als DefaultValue einer Setting-Variable!!!!!!!

Schau Dir mal den Unterschied zwischen IF(,,) und IIF(,,) an.
IIF wertet stets beide Terms aus, IF bricht ggf. ab.
http://www.vbarchiv.net/forum/read.php?f=22&t=94742&i=94758

Beitrag wurde zuletzt am 09.05.14 um 14:33:28 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: spatzimatzi
Datum: 09.05.14 15:56

Hallo Manfred X,
Hurra, es läuft. Eine wahrlich schwere Geburt.

Einige String-Defaultwerte sind leider leer und können nicht belegt werden.
Lasse mir vielleicht etwas einfallen.

Zu IIF und IF:
Habe den Sinn von IIF nicht verstanden. Sei's drum

Habe in den Fachbüchern nachgelesen:
Überall wird beschrieben, dass IIF die galantere Form des IF's ist, in der Funktion jedoch gleich.
Das muss jedoch nach dieser Erfahrung bezweifelt werden.

Nochmals vielen Dank
spatzimatzi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fragen zu Einstellungen über My.Settings 
Autor: Manfred X
Datum: 09.05.14 16:10

Ich weiß nicht, was Du liest.
Die Beschreibung in der MSDN ist relativ deutlich:
http://msdn.microsoft.com/de-de/library/vstudio/bb513985%28v=vs.110%29.aspx

[I]Ein Operator If, der mit drei Argumenten aufgerufen wird,
funktioniert wie eine IIf-Funktion, mit dem Unterschied,
dass die Kurzschlussauswertung verwendet wird.
Eine IIf-Funktion wertet stets alle drei Argumente aus, während
ein Operator If mit drei Argumenten nur zwei davon auswertet. [/I]
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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