| |
|
|
Uwe ''Pascal'' Niemeier | Hi Leute!
Noch ein aktuelles Snippet: Ein Dialog zur Farbauswahl. KompilierenMarkierenSeparierenwindow 400,400
$H Windows.ph
usermessages 16
var Ini$="X:Test.ini"************************* Pfad bitte anpassen!
proc ChooseColor2---------------------------------------ChooseColor2
parameters rgb#
declare a#:dim a#,36--CHOOSECOLOR
var Color&=long(rgb#,64)
long a#,0=36,%hwnd,0,Color&,rgb#,11
Color&=if(external("comdlg32","ChooseColorA",a#),long(a#,12),-1)
case Color&>=0:long rgb#,64=Color&
dispose a#
return Color&
endproc-------------------------------------------------------------
declare b#:dim b#,64+4--Array für 16 benutzerdefinierte Farben + gewählte Farbe
var Result&=~GetPrivateProfileStruct("Config","Color",b#,68,addr(Ini$))
ifnot Result&----------Vorgaben, falls Ini noch nicht vorhanden
long b#,0=$FFDDDD,$DDFFDD,$DDDDFF,$FFFFDD,$FFDDFF,$DDFFFF--Definierte Farben
long b#,64=$F0F0F0--Aktuelle Farbe
endif
cls long(b#,64)--zuletzt gewählte Farbe, gelesen aus Ini
while 1
waitinput
case %umessage=16:break
Result&=ChooseColor2(b#)
case Result&>=0:cls Result&
endwhile
~WritePrivateProfileStruct("Config","Color",b#,68,addr(Ini$))
Im Gegensatz zum profanen ChooseColor wird hier eine Bereichsvariable übergeben, in der als LongInts 16 Farben für die "Benutzerdefinierte Farben"-Felder + die vorgewählte Farbe abgelegt sind. Bei Bestätigen wird dieses Array aktualisiert; die gewählte Farbe wird zusätzlich direkt zurückgegeben. Bei Beenden wird das Array mit allen Farben per API in eine Ini geschrieben, damit es beim nächsten Start wieder ausgelesen werden kann; alle Farben stehen dann wieder zur Verfügung
PS: Wenn man a# und b# zu Beginn des Programmes global "zur allgemeinen Verwendung" deklariert/dimensioniert, wird das Ganze noch etwas einfacher
Frohes Fest euch allen! Pascal |
|
|
| |
|
|
|
Frank Abbing | Hi,
ich erhalte leider nur ein leeres Fenster. |
|
|
| |
|
|
|
Frank Abbing | Ah, Extraklick nötig... dann gehts. |
|
|
| |
|
|