Jak wymusić użycie własnych kolorów dla standardowych komponentów?

0

Od Delphi XE, po pojawieniu się możliwości wyboru stylu (Appearance) kolory wszystkich komponentów typu TEdit, TPanel, … zmieniane sa automatycznie na zgodne ze stylem. Jak można to ominąć i zmusić aplikację do ustawienia dowolnego koloru dla wybranych komponentów TPanel, TEdit, itp.?

0

Na początek spróbuj powyłączać Parent.Color.

0

To już przerabiałem, ta możliwość wyboru stylu jest bardzo fajna, ale nie pozwala ani na zmianę koloru tła, ani koloru napisów. TLabel pozwala, co prawda, na zmianę koloru gdy Transparent = False ale koloru napisu już nie...

0

Wsparceie stylów po to właśnie zostało wprowadzone, aby kontrolki dostosowywały swój wygląd do reszty systemu. Przeczytaj ten artykuł: Changing the color of Edit Controls with VCL Styles Enabled.

Jeśli o panele chodzi to możesz też skorzystać z tych podpowiedzi.

0

No to mam roboty w piguły. TEdity jakoś przeboleję. Spróbuję z TPanelami (druga podpowiedź). Zobaczę co z tego wyjdzie.
Dzięki za podpowiedź, nie potrafiłem sformułować pytania do wujka Google, żeby coś takiego wyłuskać.

0

Może FireMonkey rozwiąże twój problem. Otrzymasz o wiele większe możliwości dostosowania wyglądu, niestety są też i minusy, bardzo dużo zaawansowanych komponentów nie istnieje na tą technologię.

0

Podchodzę do tego FireMonkey jak pies do jeża. Mam dosyć rozbudowany projekt komponenty z różnych epok i nie zawsze to wszystko z sobą współgra. Chyba będę jednak musiał coś z tym zrobić bo to b. fajne narzędzie.
Dzięki za podpowiedź.
A tak z innej beczki. Wiesz może jak poszerzyć scrollbara w Delphi XE 10.2?

0

ale jak to poszerzyć? jego wielkość może być dowolna, ustawiasz myszką. Chyba że masz na myśli tą kreskę w środku? Jej szerokość zależy od PageSize

0

Chodzi mi o paski przewijania (pionowy i poziomy) w TScrollBox, TMemo, TListBox itp.

0
procedure System_ScrollBar_Set_Width(p_width: integer);
var
  s: string;
  r: TRegistry;
  value: Integer;
begin
  // http://winaero.com/blog/how-to-change-the-size-of-scrollbars-in-windows-10/
  if p_width <= 0 then  Exit;

  value := -15*p_width;

  s := uppercase( ComputerName() );
  // bez warunku !!!if Pos('OEM',s)=1 then
  begin
    r :=  TRegistry.Create;
    r.RootKey := HKEY_CURRENT_USER;

    if r.OpenKey('\Control Panel\Desktop\WindowMetrics',False) then
    begin
      r.WriteString('ScrollWidth',inttostr(value));
      r.WriteString('ScrollHeight',inttostr(value));
    end
    else
    begin
      showmessage('error  System_ScrollBar_Set_Width');
    end;
    r.free;
  end;
end;

Tylko że to działa na cały system operacyjny :(
(u mnie to dziala bo moja aplikacja jest jedyna w systemie ;) )

Alternatywne rozwiazanie to np. używanie AlphaSkin https://www.alphaskins.com (ja polecam)
I tam jest własciwość TsSkinManager.ScrollsOptions.ScrollSize

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