2012-01-26 10 views
5

powinien być prosty, ale nie wiem, jak to zrobić.Delphi: Panel wyrównany do prawej strony miga po zmianie rozmiaru z

Tworzę formularz z wyrównanym do prawej strony panelem, na przykład kolorem niebieskim.

Jeśli złapię lewą krawędź formy i zmieniam ją w poziomie w poziomie, to chciałbym, aby prawy panel nie poruszał się ani nie migotał. Ponieważ jego pozycja pozostaje niezmieniona, nie ma powodu, dla którego nie powinien on pozostać całkowicie stabilny. Czy ktoś zna prostą sztuczkę, aby rozwiązać ten pozornie prosty problem?

Dzięki

+0

Spróbuj ustawić "DoubleBuffered: = True" w konstruktorze formularzy. – Blorgbeard

+2

W rzeczywistości nie jest to problem z migotaniem, jest to problem wyrównania. To inne pytanie tutaj nie pomoże. –

+0

Ustawiłem doubleBuffered na TRUE. Próbowałem też sam dopasować położenie, ustawiając prawy panel w metodzie FormResize. Brak szczęścia. –

Odpowiedz

7

to tylko fakt życia z Windows GUI aplikacji. Ten sam efekt można zobaczyć w aplikacji WinForms, a nawet w popularnych aplikacjach systemu Windows. Na przykład otwórz okno Eksploratora i wykonaj dokładnie tę samą operację, zmień rozmiar, chwytając lewą krawędź okna. Zobaczysz dokładnie ten sam efekt. Ten sam efekt można zobaczyć, zmieniając rozmiar z dowolnej krawędzi. Word i Excel zachowują się w ten sam sposób.

Domyślam się, że Windows odświeża się w pętli zmiany rozmiaru, zanim wyśle ​​wiadomość o zmianie rozmiaru, która pozwala aplikacji wyrównać jej formanty.

+0

Może masz rację, ale trudno mi to zaakceptować. Moim zdaniem, nawet jeśli nie zawsze jest to łatwe, powinniśmy zawsze starać się unikać malowania części okna, gdy jest to niepotrzebne. W prostym przypadku, który opisałem, jedyną częścią, która powinna zostać przemalowana, jest ta część, której dotyczy zmiana rozmiaru. Dlatego prawy panel powinien pozostać stabilny. –

+0

Jeśli menedżer okien robi to, masz po prostu pecha. Warto eksperymentować z XP, który renderuje się inaczej. –

Powiązane problemy