Który z systemowych kolorów nadaje się dla linków?

0

Na formularzu w zwykłej okienkowej aplikacji mam umieszczonych trochę etykiet, które posiadają funkcjonalność linków – po najechaniu kursorem zmieniają się na podkreślone, kursor zmienia się na łapkę i po kliknięciu coś tam się dzieje. I teraz zastanawiam się nad tym, który kolor wybrać dla nich.

Przeglądnąłem wszystkie kolory systemowe (clWindowText i spółka) i żaden z nich nie jest przeznaczony typowo dla linków. A nie chcę używać z góry określonego koloru, bo aplikacja korzysta z systemowego schematu. Jedyny który mi pasuje to clHighlight, ale jego przeznaczenie jest raczej inne.

Robił ktoś kiedyś tego typu linki? A jeśli tak, to którego koloru użyliście?

2

Z dokumentacji MSDN wynika, że to COLOR_HOTLIGHT czyli w Delphi clHotLight ale kolorem tła jest COLOR_WINDOW.
Natomiast obecnie systemową klasą linków jest SysLink i tak utworzony odnośnik ma inny kolor niż ``clHotLightale nie znalazłem (i chyba nie udokumentowano) jak odczytać ten kolor. W [JEDI](https://www.delphi-jedi.org/) istnieje modułJvSysLink`, który implementuje kontrolkę tworzoną na podstawie wspomnianej klasy. Jago kod jest krótki ale nie doszukałem się skąd bierze kolor po prostu chyba jest domyślny dla danej klasy :/

0

W tym rzecz właśnie. Kolor clHotLight to mi pasuje do linków, ale nie w oknach systemowych, a w systemowej przeglądarce. Bo tylko do tych elementów (pod WinXP) wykorzystywany jest kolor granatowy i tylko ten kolor nie zmienia się, jeśli ustawię inny schemat UI (np. oliwkowozielony).

No i nie wiem co zrobić. Dobrze by było gdyby kolor dostosowywał się do skórki systemowej (żeby zawsze był czytelny i wystarczająco kontrastowy), dlatego póki co mam zastosowany clHighlight, ale muszę go sprawdzić jeszcze na innych wersjach Windows.

1

Podejrzewam, że gdzieś w rejestrze jest zapisana aktualna wartość koloru przypisana do poszczególnych elementów interface. Nie wiem dokładnie gdzie, ale może to jest jakiś punkt zaczepienia - poszukać w necie, gdzie i jak to jest zapisane, albo zainstalować program do monitorowania rejestru, zmienić kolor i przeanalizować, co się zmieniło. Jeśli aż tak Ci na tym zależy. Ja szczerze mówiąc bym to olał ;)

0

Nie żeby mi jakoś szczególnie na tym zależało – po prostu jestem ciekaw który kolor powinien być użyty, jeśli w ogóle jakiś jest przeznaczony dla linków w oknach. IMO któryś musi być, bo np. w Win7 linki są używane w oknie panelu sterowania, tyle że pod postacią wizualnych przycisków grupujących te linki. Tyle że te kontrolki nie są dostępne w WinXP, co mi trochę utrudnia utrzymanie kompatybilności.

Docelowo zawsze mogę skorzystać z najpopularniejszego, czyli z jakiegoś ładnego odcienia niebieskiego. ;)

0

Podaję kolor wzorcowy ;)

screenshot-20190702152408.png

0

Jeśli o niebieski kolor chodzi to mam swoją perełkę:

  • R – 54,
  • G – 111,
  • B – 205.
2

Zainteresowałbym się funkcją WinAPI GetThemeColor oraz stałą TEXT_HYPERLINKTEXT i jej okolicami.

Ponadto warto poczytać wytyczne na temat używania linków, a najlepiej cały dział “Design”.

0

Teoretycznie tak, tyle że funkcja GetThemeColor nie jest dostępna pod WinXP, choć biblioteka uxtheme.dll znajduje się w plikach systemowych. Dlatego też musiałbym ją próbować ładować dynamicznie i dobrać odpowiedni sposób ustalania kolorów, na podstawie tego czy załadowano funkcję czy nie.

Sporo zachodu dla takiej bzdurki, no ale skoro nie ma jednego sposobu dla wszystkich systemów to nic innego nie pozostaje jak rozbić jeden algorytm na dwa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1