Ponieważ będzie to coś w rodzaju własnego okna do obsługi komunikatów zależy mi aby L.Left := 10 oraz L.Top := 10 (i nie tylko).
Krótko mówiąc chodzi tutaj o estetyczne rozłożenie elementów (także przycisków).
Pewnie dużo czasu zmarnowałeś tymi kombinacjami z dynamicznym tworzeniem okna i kontrolek. Tymczasem Twój problem jest trywialny – skorzystaj z designera do stworzenia tego okna. Nie dość, że będziesz widział jak dokładnie okno wygląda, to w dodatku będziesz mógł poustawiać sobie kotwice (za pomocą edytora kotwic), tak aby zawartość sama się układała, a formularz dostosowywał swój rozmiar do niej.
Na potrzeby narzędzia CTCT stworzyłem sobie własne okno komunikatów (bo kto mi zabroni), a gdy było gotowe, napisałem sobie kilka metod wywoływania takiego okna, przekazując trochę danych (typ ikonki, tytuł, treść i zestaw przycisków). W designerze wygląda tak:
Niebieskie linie ilustrują kotwice ustawione w edytorze (domyślnie są czerwone, ale se zmieniłem w źródłach designera). Formularz ma określone minimalną i maksymalną szerokość (tak aby treść komunikatu się zawijała), a jego wysokość jest określana automatycznie – ustawione jest AutoSize
na True
.
Zawartość ma zdefiniowane marginesy, więc zawsze zachowuje dokładnie takie odstępy, jak widać w designerze. Ikonka natomiast ładowana jest z biblioteki systemowej, aby na każdym systemie była taka jak w systemowym okienku komunikatu. Przyciski są zgrupowane w panelach i jeden z nich jest pokazywany po wywołaniu okna.
To w sumie tyle, przykładowe komunikaty niżej: