2010-06-25 14 views
13

Delphi 2010, Win32 VCL. Potrzebuję stworzyć główne menu dla mojej aplikacji o najbardziej standardowym wyglądzie. TMainMenu wygląda ładnie we wszystkich wersjach systemu Windows, jedyną wadą jest to, że wyświetla obrazy dla elementów z włączoną = fałsz.Brzydkie "wyłączone" obrazy TMainMenu

Delphi ma pewną dziwną metodę budowania tych wyłączonych obrazów (czarno-białe wycięcie ze skosami, dla mnie wygląda jak wyrzut). Chcę utworzyć poprawkę dla tej procedury w źródłach VCL i pozwolić menu na wybranie wyłączonych obrazów z tej samej biblioteki TImageList, ale nie mogę go znaleźć.

Czy w ogóle istnieje, czy jest to standardowe wywołanie API systemu Windows? Czy wiesz, gdzie znajduje się ta procedura?

Pewnie, że styl OwnerDraw umożliwia naprawienie tego wszystkiego, ale chcę nieco szybszego rozwiązania.

Odpowiedz

22

Istnieje świetny wpis na stronie Galfar's Lair blog, który opisuje problem i zawiera kod obejścia problemu, przesłaniający metodę DoDraw TImageList.

Oto zdjęcie (połączone) pokazujące "przed" i "po".

alt text

myślę, że to dotyczy prawie wszystkie wersje Delphi.

+0

Świetnie! Nadpisuję TCustomImageList.DoDraw, a wyłączony obraz zostanie skopiowany z drugiej połowy zapisanego obrazu 32x16. Dziękuję Roddy i Galfar. – Andrew

+0

Genialny! Potrzebuję tego! –

4

Jeśli możesz podać swoje obrazy jako PNG, możesz użyć TPngImageList z PngComponents. Ma różne opcje, aby utworzyć mieszany lub skalowany obraz wyłączony. Format PNG umożliwia korzystanie z alfablending.

Powiązane problemy