Na to pytanie musisz sobie sam odpowiedzieć; Tworzenie komponentów od podstaw (czyli wychodząc od klas TCustomControl
lub TGraphicControl
) nie jest proste; Jeżeli jesteś już zaznajomiony z tym tematem to pójdzie gładko, jednak nadal sporo czasu będzie kosztować pisanie komponentów i ich testowanie;
Zwykłe komponenty, takie jak przyciski, jakieś tła, suwaki itp. są proste, gorzej z komponentami, w których użytkownik może coś wpisać, czyli odpowiedniki klas TEdit
, TComboBox
czy TMemo
, albo kontrolek stricte systemowych, jak TShellListView
; Do tego dochodzi sensowna hierarchia klas i dziedziczenie - zabawy dość sporo; Wiadome - plusem jest to, że każdy komponent będzie wyglądał i zachowywał się dokładnie tak jak tego chcesz, a na dodatek zawsze tak samo, bez względu na platformę i ustawiony styl (schemat/skin); Minusem natomiast jest ogrom pracy, jaki będzie Cię czekał;
Musiałbyś się też przygotować na to, że LCL działa w wielu miejscach inaczej niż VCL - kod działający sprawnie i poprawnie pod Delphi, niekoniecznie będzie działał prawidłowo w Lazarusie; Przekonałem się już o tym wiele razy, a odnalezienie rozwiązania lub obejścia problemu często zabiera za dużo czasu, niż to wszystko warte...
____W swojej aplikacji używam komponentów pisanych od zera, wyglądem przypominających natywny styl Win10, do tego własny silnik hintów, wyglądających inaczej niż systemowe, do tego działających niezależnie (czas oczekiwania na pojawienie się i zniknięcie determinują komponenty, więc każdemu hintowi można ustawić inne czasy); Niektóre komponenty mogą posiadać kilka hintów (np. kilka linków w formatowalnej etykiecie), więc daje to dużą swobodę; W takim przypadku do właściwości typu TStringList
pakuję sobie drzewko TreeStructInfo z danymi każdego hinta i gitara;
Komponentów mam 17, które łącznie zajmują ponad 15kLoC; Sporo pracy to kosztowało, ale dzięki temu można się sporo nauczyć i poznać lepiej LCL;
Sam wybrałem pisanie własnych komponentów, bo nie znalazłem czegoś spełniającego moje oczekiwania, a do tego darmowego (lub relatywnie taniego); Poza tym już wcześniej (pod Delphi7) pisałem dużo komponentów, więc mniej więcej wiedziałem jak się to robi.