Po co interfejs w konkretnym przykładzie...

0

Poproszę kolegów o wyjaśnienie na konkretnym przykładzie. Myślę ze wielu z Was korzystało lub ma w zasobach edytor SynEdit. A jak nie macie to jest na Githubie: (Przykład na github.com) Tam w katalogu demos jest przykład edytora. Taki przykład chcę zaimplementować z edytorem Scintilla z możliwością otwierania w wielu zakładkach komponentu TPageControl. Nie moge znależć dobrze działającego edytora z dobra obsługa unikodu dlatego chcę zaimplementować dobrze działającą i rozwijana Scintillę . Choć już zęby zjadłem nigdy nie zagłębiałem się w interfejsy Delphi (traktując je jako dziwne stwory bez ciała :)). W tym demo jest użyta forma z edytorem (frmEditor) i skojarzony z nim interfejs(uEditAppIntfs) Czy ktoś mógłby mi wytłumaczyć w jakim konkretnie celu i jakie korzyści z tego wynikają i czy jest konieczne że, w tym przypadku użyto interfejsu. Jeżeli w tym przykładzie chodzi wyłącznie o to aby nowe metody można będzie w przyszłości nadpisywać np w pliku Main (który używa interfejsu) bez zagłębiania się w klasy bazowe to potwierdźcie tylko lub zaprzeczcie, proszę.

ps: Szukałem w poprzednich wątkach dotyczących interfejsów ale konkretnej odpowiedzi nie znalazłem. Mówi się że emeryt ma dużo czasu ale zapewniam że to nie jest prawda, emeryt goni aby zdążyć :).

0
andrzej.kmicic napisał(a):

Poproszę kolegów o wyjaśnienie na konkretnym przykładzie. Myślę ze wielu z Was korzystało lub ma w zasobach edytor SynEdit. A jak nie macie to jest na Githubie: (Przykład na github.com) Tam w katalogu demos jest przykład edytora. Taki przykład chcę zaimplementować z edytorem Scintilla z możliwością otwierania w wielu zakładkach komponentu TPageControl. Nie moge znależć dobrze działającego edytora z dobra obsługa unikodu dlatego chcę zaimplementować dobrze działającą i rozwijana Scintillę .

Można i tak, ale... SynEdit działa z Unicode.
Kiedyś było coś takiego jak UniSynEdit.
A poza tym jest jeszcze:
https://github.com/bonecode/BCEditor

Choć już zęby zjadłem nigdy nie zagłębiałem się w interfejsy Delphi (traktując je jako dziwne stwory bez ciała :)). W tym demo jest użyta forma z edytorem (frmEditor) i skojarzony z nim interfejs(uEditAppIntfs) Czy ktoś mógłby mi wytłumaczyć w jakim konkretnie celu i jakie korzyści z tego wynikają i czy jest konieczne że, w tym przypadku użyto interfejsu. Jeżeli w tym przykładzie chodzi wyłącznie o to aby nowe metody można będzie w przyszłości nadpisywać np w pliku Main (który używa interfejsu) bez zagłębiania się w klasy bazowe to potwierdźcie tylko lub zaprzeczcie, proszę.

I tak i nie.

Chodzi o to,że edytor jest osadzony na oknie, które pewnie jest dokowane na PageControl.
Natomiast jest główny toolbar dla całej aplikacji, który współpracuje z każdym aktywnym oknem.
A współpraca polega na tym, że po kliknięciu w coś (button, akcja, whatever) trzeba wykonać komendę edytora (save, load, word-delete, etc.)
A więc trzeba mieć dostęp do edytora.

Oczywiście można go upublicznić i przywiązać kod tylko do jednego typu edytora (np. SynEdit), ale można zaimplementować interfejs do komunikacji z edytorem i zaimplementować jego obsługę do SynEdita, BCEditora, Scintili, TMemo czy cokolwiek innego...
I dlatego interfejs, który daje nam spójną fasadę do dowolnego typu edytora.

ps: Szukałem w poprzednich wątkach dotyczących interfejsów ale konkretnej odpowiedzi nie znalazłem. Mówi się że emeryt ma dużo czasu ale zapewniam że to nie jest prawda, emeryt goni aby zdążyć :).
Nie znalazłeś odpowiedzi, bo nie rozumiesz do czego one tak naprawdę są...

1 użytkowników online, w tym zalogowanych: 0, gości: 1