Heinz B., 30.04.2008 14:34: Hallo, Sebastian !
Zuerst einmal : Ich bin glücklich deine SKControl.Dll nutzen zu dürfen, sie ist suuuper.
Mir gefällt die einfache Art der freien Farbauswahl und ich möchte dies auch in mei-nen "Progrämmchen" an den Nutzer weitergeben, dh. er soll die Farbe der Buttons und des Textes selbst bestimmen können.
Eine zusätzliche Spielerei eben.
Ich dachte daher daran, die vom Nutzer gewählte Farbe in einer Ini-Datei zu speichern (für 18 Buttons) und beim Programmaufruf einlesen zu lassen.
Button erstellen :
Declare BF1$, BF1%
BF1% = RGB(0,255,0) ' Buttonfarbe
'
So funktioniert alles bestens :
'
string string#,0 = "Test"
1& = SKCtrl_CreateColorButton(%Hwnd,string#, RGB(0,0,255), BF1%, 14,15,250,30, %hInstance)
'
Nun auslesen aus der Ini :
BF1$ = Readini$("C:\Programme\Profan\Auswahl.Ini", "Buttonfarbe", "1") ' Button-farbe 1 einlesen
'
Hier das Problem :
Ich kann im ColorButton ja kein $, sondern nur % einsetzen.
Was kansst du mir raten ? Wenn möglich gleich ein paar Befehle angeben.
Herzlichen Dank im voraus, freundl. Grüsse Heinz Bernhard
RGH, 30.04.2008 15:14: Du musst den String in ein Integer umwandeln. Dazu gibt es die Funktion Val():
BF1% = Val(Readini$("C:\Programme\Profan\Auswahl.Ini", "Buttonfarbe", "1")) ' Button-farbe 1 einlesen
Gruss
Roland
David Strutz, 30.04.2008 17:25: Einfache Backslashes - da sind sie wieder.

@Heinz: str$
val 
RGH, 30.04.2008 17:48: Zitat von ""iF"": Einfache Backslashes - da sind sie wieder.
Vielleiht baue ich Set("Escape", 2) doch noch in XProfan 11ein ...
Gruss
Roland
Heinz B., 30.04.2008 22:06: Vielen Dank Roland und IF !
Bisherige Versuche leider erfolglos.
In der Ini soll RGB(0,255,0) ausgelesen werden.
Mit Print BF1% gibt es nur eine 0
Befehl kann BF1% = Str$ Val( ) oder BF1% = Val( ) lauten, Ergebnis ist immer gleich : 0
Freundl. Gruss Heinz Bernhard
David Strutz, 30.04.2008 22:11:
var f%=rgb(63,127,255)
print f%
writeini "meine.ini","opt","value"=str$(f%)
f%=val(readini$("meine.ini","opt","value"))
print f%
waitInput
ungetestet aber sollte...
Sebastian K., 01.05.2008 08:28: Hallo Heinz,
noch kurz zur weiteren Erläuterung: RGB() ist eine Funktion, die aus den drei Farbanteilen Rot, Grün und Blau einen LongInt-Wert mit der gemischten Farbe zusammensetzt. Diesen Wert kannst du als String in die INI schreiben und beim Lesen mit Val() wieder in eine Zahl zurückverwandeln (genau dies macht iFs Beispiel). Der String "RGB(0,255,0)" kann von Val() hingegen nicht als Zahl interpretiert werden (es ist ja eine XProfan-Funktion), sodass Du in dem Fall einfach eine 0 erhältst.
MfG
Sebastian
Horst Horn, 01.05.2008 09:11: @Heinz
Vielleicht hilft Dir das weiter:
So sieht bei mir ein Farbeintrag in eine INI-Datei aus:
-------------------------------------------------------
[Oberflächen-Farben]
Hintergrund-Rot=230
Hintergrund-Grün=240
Hintergrund-Blau=250
Schrift-Rot=0
Schrift-Grün=0
Schrift-Blau=150
-------------------------------------------------------
So schreibe ich in die INI-Datei:
WRITEINI config_datei$,"Oberflächen-Farben","Hintergrund-Rot" = r$
WRITEINI config_datei$,"Oberflächen-Farben","Hintergrund-Grün" = g$
WRITEINI config_datei$,"Oberflächen-Farben","Hintergrund-Blau" = b$
WRITEINI config_datei$,"Oberflächen-Farben","Schrift-Rot" = r1$
WRITEINI config_datei$,"Oberflächen-Farben","Schrift-Grün" = g1$
WRITEINI config_datei$,"Oberflächen-Farben","Schrift-Blau" = b1$
-----------------------------------------------------
So wird die INI-Datei gelesen:
r$=READINI$(config_datei$,"Oberflächen-Farben","Hintergrund-Rot")
g$=READINI$(config_datei$,"Oberflächen-Farben","Hintergrund-Grün")
b$=READINI$(config_datei$,"Oberflächen-Farben","Hintergrund-Blau")
r1$=READINI$(config_datei$,"Oberflächen-Farben","Schrift-Rot")
g1$=READINI$(config_datei$,"Oberflächen-Farben","Schrift-Grün")
b1$=READINI$(config_datei$,"Oberflächen-Farben","Schrift-Blau")
'---------------------------------------------------
Wichtig ist diese Zeile zum Schluss:
r%=VAL(r$):g%=VAL(g$):b%=VAL(b$):r1%=VAL(r1$):g1%=VAL(g1$):b1%=VAL(b1$)
Damit wird der Hintergrund bestimmt:
RGB(r%,g%,b%)
und die Schriftfarbe:
RGB(r1%,g1%,b1%)
Damit kannst Du Deine Buttons auch farblich bestimmen.
Heinz B., 01.05.2008 10:36: Hallo, ich danke Euch Allen ! ! !
Der für mich entscheidende Hinweis war die Typwandlung vor der
Ini-Speicherung - nun klappt es.
Danke auch für die Hinweise zur tollen DLL und die ausführliche Speicherung der Farbeinträge in deine Ini. Auch am Schluss wieder die Typwandlung !
OK, nun habe ichs gefressen.
Habe ja ähnliche Probleme, des Einlesens aus einer Ini, schon mal in Pixxos
[...]
programmiert. Diese Sprache ist sehr schnell weil sie kein Waitinput oä. kennt und dadurch den Prozessor ständig mit 100 % "schuften" lässt.
Dies war auch ein Grund zum Umstieg auf XProfan. Nun muss nur noch gelernt werden - soweit Zeit ist. Trotzdem, es macht riesigen Spass.
Und diese, unsere, Community ist einfach Spitze - danke an alle Macher und hilfbereite Mitglieder !
Heinz Bernhard
Dies ist die Offlinevariante vom Thread [ColorButton und Ini].
©2006 XProfan.Com