PDA

Vollständige Version anzeigen : Systemfarben in RGB umrechnen


Stefan Dase
06.06.2012, 13:23
Hallo,

in einer Access-XP-Datenbank kann der Benutzer Hintergrundfarben selber festlegen. Bisher kam ein OCX aus dem VB6-Setup zum Einsatz. Da dies jedoch auf neueren Systemen mit Office 2010 nicht mehr funktioniert, habe ich nun einen API-Aufruf drin.

Leider konnten mit dem alten Dialog auch Systemfarben gewählt werden, die dann als negative Werte gespeichert wurden. Mit dem API-Dialog ist das nicht mehr möglich.

Nur, wie kann ich die bestehenden Einträge in RGB-Werte umwandeln, ohne dass alle Benutzer sich nun manuell eine neue Farbe suchen müssen? Ich weiß, dass die Werte vom jeweiligen Rechner abhängen. Aber da es sich um einen Terminalserver ohne Desktop handelt, gehe ich mal davon aus, dass alle dasselbe Schema verwenden.

Irgendwelche Tipps?
Stefan

Louisleon
06.06.2012, 14:12
Hallo Stefan,
wenn ich es richtig verstanden habe, konvertiere den Longwert nach Hex und dann:
Convert a hex color string to an rgb color (http://www.freevbcode.com/ShowCode.asp?ID=6324)

HTH

Gruß

LL

daolix
06.06.2012, 14:39
Hallo

probiers mal so:


Type TL
l As Long
End Type

Type TB
ll As Byte
lh As Byte
hl As Byte
hh As Byte
End Type

Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long


'// ----------------------------------------------------------------------------------------------------------------
'// --< >--
'// ----------------------------------------------------------------------------------------------------------------
Function SysFarbe(ByVal l As Long) As Long
If l < 0 Then
Dim TTL As TL, TTB As TB
TTL.l = l
LSet TTB = TTL
l = GetSysColor(TTB.ll)
End If
SysFarbe = l
End Function

Aufruf z.b. dann mit
SysFarbe(-2147483633)

Stefan Dase
07.06.2012, 15:41
wenn ich es richtig verstanden habe, konvertiere den Longwert nach Hex und dann:
Convert a hex color string to an rgb color (http://www.freevbcode.com/ShowCode.asp?ID=6324)


Hallo Louisleon,

danke für deinen Hinweis. Es geht jedoch bei meiner Frage um die Systemfarbeinstellungen, also z.B. -2147483633 für einen bei mir hellen Grauton.

Ich versuche es mal mit daolix' Antwort.

Viele Grüße aus Bremen,
Stefan

Stefan Dase
07.06.2012, 15:59
probiers mal so (...)

Hallo daolix,

damit klappt es perfect. Habe mir gleich ein Formular für einen Test gebastelt, stimmt in jedem Fall überein. Werde nun die Systemfarben durch den RGB-Kode ersetzen; damit können wir das dann auch in anderen Produkten verwenden!

Vielen Dank,
Stefan

TomTom2010
19.07.2012, 21:46
@ daolix

Hallo,

diese Lösung klingt ausgesprochen interessant für mich, denn ich habe dasselbe Problem - allerdings unter Word 2010.

Wenn ich allerdings den Code auf Word übertrage, bekomme ich die Meldung 'Interner Fehler' in der Zeile "Dim TTL As TL, TTB As TB".

Was muss ich für Word ändern, damit ich den Code verwenden kann?

Danke für jeden Tipp
Elke


P.S. Bin k e i n Experte :-((

Stefan Dase
20.07.2012, 12:22
Hallo Elke,

hast du den gesamten Code von daolix in ein allgemeines Modul in Word 2010 kopiert? Insbesondere der Teil vor den Kommentarzeilen ist wichtig.

Ansonsten könntes zu Problemen kommen, wenn du ein Office 2010 64bit installiert hast. Dann müsste die Library anders deklariert werden.

Viele Grüße,
Stefan