Czym jest program_ui
Od jakiegoś czasu intensywnie pracuję nad nowym frameworkiem avocado_ui, który pozwoli tworzyć aplikacje z graficznym interfejsem użytkownika na Windowsie. To wrapper na WinAPI napisany w Free Pascalu, a następnie udostępniany w Avocado w postaci prostych, czytelnych funkcji.
Aby tworzyć aplikacje z interfejsem graficznym w Avocado, na początku programu należy użyć. program_ui nazwaprogramu najlepiej z małych liter bez polskich znaków i liczb bez spacji w środku, najlepiej jedno słowo, może być podkreślnik _ między słowami. To włącza tryb UI i pozwala kompilować aplikacje okienkowe. Następnie trzeba zaimportować bibliotekę UI: importuj avocado_ui lub import avocado_ui Ważne: biblioteka avocado_ui musi znajdować się w folderze moduly - to właśnie tam trafiają wszystkie biblioteki używane przez Avocado.
Na ten moment działa już ponad 82 funkcji, m.in.:
-
tworzenie, zamykanie i wyświetlanie okien
-
okna bez ramek, przeciąganie za tło, przezroczystość
-
centrowanie okna, zmiana pozycji i rozmiaru
-
zawsze na wierzchu, fokus, minimalizacja, maksymalizacja, przywracanie
-
zmiana tytułu okna, kolorów nagłówka i tła
-
rysowanie tekstu na środku okna oraz prosta grafika (GDI)
-
kontrolki: Memo, Button, Label, Input, Checkbox
-
obsługa tekstu w Memo (append, pobieranie treści)
-
okna dialogowe (MessageBox, pytanie Tak/Nie)
-
pobieranie pozycji i rozmiaru okna, obszar klienta
-
możliwość dokładnego sterowania zachowaniem okna (ramki, rozmiar, przyciski)
Zdarzenia i interakcje
- obsługa kliknięć (SetOnClick)
reakcja na zmianę rozmiaru okna (SetOnResize)
- obsługa klawiatury: wciśnięcie i puszczenie klawisza (SetOnKeyDown, SetOnKeyUp) kontrolowane zamykanie okna (OnCloseQuery – decydujesz, czy okno ma się zamknąć)
Zarządzanie oknami
-
wyciąganie okna na wierzch bez kradzieży fokusu (BringToTop)
-
wysyłanie okna na spód (SendToBack)
- pokazywanie i ukrywanie okien (Show, Hide)
pełne wsparcie dla okien głównych i podrzędnych (child windows)
- blokowanie i odblokowywanie okna (tryb modalny)
Informowanie użytkownika
-
miganie okna na pasku zadań (FlashWindow)
-
określona liczba mrugnięć
-
mruganie w nieskończoność
-
zatrzymanie efektu
-
Pełna kontrola nad geometrią
-
minimalny rozmiar okna (SetMinWindowSize)
-
reakcja na przesuwanie okna (SetOnMove)
-
reakcja na zmianę rozmiaru w trakcie przeciągania (SetOnSizing)
-
obsługa przesuwania „na żywo” (SetOnMoving)
-
najpotężniejsze zdarzenie: SetOnWindowPosChanging
-
przyciąganie do siatki (Grid Snap)
-
blokada zmiany rozmiaru
-
blokada Z-Order
-
pełna kontrola nad pozycją i rozmiarem nawet gdy zmienia je kod lub system
-
WM_WINDOWPOSCHANGED Jedno miejsce zawierające wszystkie informacje o zmianie okna:
pozycja rozmiar flagi systemowe Idealne do: debugowania zachowania okna aktualizacji wewnętrznego stanu aplikacji reagowania na zmiany wywołane myszką, systemem lub kodem
-
System Anchors (Kotwice) Pierwszy krok do automatycznych layoutów:
-
SetAnchor(hMemo, [akLeft, akTop, akRight, akBottom]) Dzięki UpdateLayout elementy UI same dopasowują się do rozmiaru okna bez ręcznego liczenia pozycji. Uniwersalne funkcje tekstu Działają na: Window, Button, Label, Edit GetText SetText
Nowoczesne efekty wizualne
-
Rozmycie tła (Acrylic / Blur)
-
Zaokrąglone rogi okna (Windows 11)
-
Cień pod oknem (idealne dla okien bezramkowych)
Stan okna
-
sprawdzenie, czy okno jest zminimalizowane
-
sprawdzenie, czy okno jest zmaksymalizowane
-
pobieranie tytułu okna (GetWindowTitle)
-
Informacje o monitorze
Możliwość pobrania danych o monitorze, na którym znajduje się okno (rozdzielczość, obszar roboczy bez paska zadań). Idealne do centrowania i obsługi wielu monitorów. „Przyklejanie” okien (Snapping)
-
Okno może automatycznie przyciągać się do krawędzi ekranu z określoną tolerancją – dokładnie jak w nowoczesnych systemach.
-
Sprawdzanie długości tekstu
-
Szybkie sprawdzenie, czy kontrolka zawiera tekst, bez pobierania całej zawartości do pamięci.
-
Dynamiczne usuwanie kontrolek
-
Możliwość natychmiastowego niszczenia przycisków, etykiet, paneli czy okien w trakcie działania programu – bez pytań i bez zdarzeń zamykania.
-
Czyszczenie kontrolek
-
Jedna funkcja do czyszczenia zawartości:
Memo - usuwa tekst Checkbox - odznacza działa poprawnie zależnie od typu kontrolki
Obsługa schowka systemowego
-
Kopiowanie, wycinanie i wklejanie zaznaczonego tekstu w Edit, Memo, RichEdit i ComboBox – pełna integracja z systemem.
-
Cofanie operacji (Undo)
-
Wsparcie dla cofania ostatniej akcji oraz sprawdzania, czy cofnięcie jest możliwe (np. do aktywowania przycisku „Cofnij”).
Celem jest prosty, spójny i lekki interfejs, bez kopiowania LCL czy innych ciężkich frameworków. Avocado ma pozwalać szybko tworzyć narzędzia i aplikacje desktopowe bez walki z WinAPI. To dopiero początek - moduł będzie dalej rozwijany i porządkowany. Jeśli interesuje Cię kierunek rozwoju Avocado albo chcesz mieć realny wpływ na to API, daj znać w komentarzu. Poniżej zdjęcia UI.