Delphi - problem TScrollBox po X liczbie komponentów

W jednej z moich aplikacji testowych zauważyłem, że po dodaniu tylu TPanels do TScrollBox natrafiłem na problem z tymi narysowanymi poza tą określoną ilością. Wyłączam pole przewijania przed rysowaniem i jest ono zawsze czyszczone przed rysowaniem, więc nie występują problemy z pozycją względną. Początkowo myślałem, że mogłem natrafić na jakąś maksymalną wysokość do malowania. Więc wiesz, że układ jest szerokości zajmujący panele ułożone pionowo.

Dlatego stworzyłem nowy projekt, aby spróbować zidentyfikować i rozwiązać problem i ujawnił dodatkowy szczegół problemu. Kiedy jestem w domu, mogę podać przykład i film, ale na razie opiszę. Wykonano formularz z TScrollBoxem spinedit, aby określić, ile paneli ma przycisk, aby utworzyć panele w pętli i przycisk, aby zwolnić panele i opróżnić tablicę do kolejnej próby. Ustawiłem podpis na numer w pętli do identyfikacji.

Próbowałem 2 sposobów układania, aby sprawdzić, czy bit ma znaczenie. Jednym z nich jest ustawienie pozycji I razy wysokość, więc jeśli wysokość wynosi 200, wtedy i * 202 daje jej przestrzeń 2px. Nowy sposób, w jaki próbowałem, to użycie wyrównania do góry. Może to mieć niewielką różnicę w działaniu, ale ogólnie problem jest nadal taki sam.

Nowy problem dotyczy zakresu przewijania. Po zakończeniu pętli i włączeniu przewijania w dół do dołu zatrzymuje się na ostatnim numerowanym panelu. Ale jest nie na miejscu, może tuż poniżej 169 jego 200 paneli. Następnie pasek przewijania dostosowuje zakres, co pozwala mi dosięgnąć dna tylko po to, aby zobaczyć następny panel 198. Uważam, że dzieje się tak przy użyciu metody wyrównania do góry, jak nigdy nie wystąpiło w mojej aplikacji. Przetestuję dalej.

Dolny panel nie odkłada na bok Myślę, że rozwiązaniem tego problemu jest ręczne obliczenie i ustawienie zakresu.

Głównym problemem występującym w mojej aplikacji podczas ustawiania pozycji zamiast używania wyrównania do góry jest to, że po pewnej liczbie paneli wszystkie one ustawiają się na końcu w tym samym miejscu. Przed pewną kwotą grzywna powiedz 50 lub 100, ale po tak wielu zdarza się. Wiem, że 200 razy 200 to całkiem mała liczba całkowita, ale może istnieje limit adresów?

Będę kontynuował testowanie. Nadal muszę sprawdzić, czy wysokość panelu się do tego dodaje. Ale pomyślałem, że to musi być znany problem. Przy okazji, Delphi 2009.

questionAnswers(1)

yourAnswerToTheQuestion