Witam,
cały dzień męczę się by uzyskać następujący efekt: przeźroczysta forma, z nieprzeźroczystymi komponentami. Wydawałoby się, że nie może to być nadto skomplikowane. Googlując natrafiałem na różne solucje, jednak żadna nie była w moim przypadku skuteczna. Oczywiście próbowałem również metodą: http://4programmers.net/Delphi/Artyku%C5%82y/Przezroczysta_forma#id-Ustawienie-przezroczystoci-poszczeglnych-pikseli-i-zachowanie-komponentw , z tym, że w moim wypadku jako tło jest po prostu forma, a nie bitmapa, dlatego próbowałem również generować bitmapę o rozmiarze i kolorze formy, jednakże w efekcie otrzymywałem widoczne jedynie komponenty, bez przeźroczystego tła. Dlatego, że brakuje mi już nerwów do tego postanowiłem poradzić się drogich forumowiczów o poradę.
Przezroczysta forma z nieprzezroczystymi komponentami
- Rejestracja: dni
- Ostatnio: dni
- Postów: 23
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
- Postów: 4191
Dziwne. Przykład podany na: http://stackoverflow.com/questions/10098374/how-to-make-form-transparent-while-keeping-the-component-visible - działa idealnie. Efekt jest taki, jak na obrazkach. Nie o takie coś Tobie chodzi? Jeżeli nie, to może ktoś jeszcze tutaj coś lepszego doradzi.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 23
Na tym przykładzie komponenty są wycinane, a mnie chodzi o przeźroczystą formę - z nieprzeźroczystymi przyciskami, w załączniku dodałem aktualny efekt jaki uzyskałem. Widać tam 2 przyciski, które chciałbym pozostawić bez efektu przeźroczystości. Aktualne, jedyne rozwiązanie jakie przychodzi mi na myśl to użycie 2 form, jedna jako tło - przeźroczysta, a na nią nakładać formę z wyciętymi przyciskami. Są jeszcze jakieś inne możliwości?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
- Postów: 4191
To nie wiem jakie to mają być przyciski. Gdyż tamten przykład dokładnie to robi co założyłeś. Kontrolki są po staremu, a całe tło jest przeźroczyste. Jeżeli nie jest to jednak efekt, o który Ci chodzi, to pewnie ktoś coś jeszcze doradzi, bo ja wymiękam.
- Rejestracja: dni
- Ostatnio: dni
Przy włączonym aero kod, który wrzucił Olesio działa tak jak powinien, ale przy wyłączonym aero musisz dodatkowo zmienić domyślny kolor formy na jakiś inny np. clLime i dopiero później ustawić:
form.TransparentColorValue := clLime;
form.TransparentColor := True;
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gorlice
Tu http://stackoverflow.com/questions/11867215/how-do-i-put-a-semi-transparent-layer-on-my-form jest przykład ale też z 2 formami i chyba nie ma innego sposobu niż 2 formy (chyba że dla Windows 8 bo tam WS_EX_LAYERED można ustawić dla okien potomnych to może by sie dało coś wykombinować)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
- Postów: 4191
Ja domyślnie mam AERO wyłączone pod Windows 7 i wybraną klasyczną kompozycję. I u mnie pod Delphi 7 nie było z tym kodem problemów. Efekt, wydawał się mi taki, o jaki chodzi.