Max1414 Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 Witam! Chciałbym w swoim programie zrobić kolorowanie składni Delphi... Na razie robię pogrubianie, ale niestety wyniknął problem z wydajnością. Mam w tablicy słowa kluczowe, które chcę pogrubić, ale gdy wyszukuje w RichEdit każde słowo i pogrubiam to zajmuje to dość dużo czasu, ma ktoś jakiś pomysł jak to zrobić, aby było wydajnie? Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 Jeśli nie chcesz się babrać, to możesz użyć czegoś gotowego (chyba SynEdit jest dobry). A jak chcesz zrobić kolorowanie składni porządnie, to chyba najlepszy sposób jest przez podpięcie własnej WndProcki RichEdita (Get/SetWindowLong z GWL_WNDPROC) i tam reagowanie na WM_PAINT i kolorowanie widocznego tekstu. Tu masz dobre info: http://www.i-lo.tarnow.pl/edu/inf/prg/win32asm/pages/35.htm (nie patrz na kod. chodzi o sposób, funkcje, komunikaty). ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Lipiec 31, 2007 Autor Zgłoś Share Napisano Lipiec 31, 2007 Komponent spoko, co prawda fajnie byłoby to samemu zrobić, ale chyba mi sie nie uda... A odnośnie tego komponentu - jak tam się zmienia właściwości Fonta zaznaczonego tekstu? (Justowanie/pogrubianie/color itp.) Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
HNB Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 możesz zrobić kolorowanie swojej składni w SynEdit (sprawdź przykład "SynEdit\Demos\HighlighterDemo", tam masz style czcionki, słowa kluczowe itd.) - dokładniejsza odpowiedź jest w pliku "SynHighlighterSample.msg" potem taki plik przetwarzasz przez SynGen.exe na kod Delphi i gotowe (jak to podłączyć masz w przykładach) soon Delphi will be only for veterans and finally we all will die at the end… delphi.dathox.com - nowinki z świata Delphi/Pascala only programmers and drug dealers call their customers "users" Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą. Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Lipiec 31, 2007 Autor Zgłoś Share Napisano Lipiec 31, 2007 Ale mi nie chodzi o skladnie... bo ja chce zmieniać tylko poszczególne wyrazy, a nie wszystkie tego typu EDIT: Cos mi mówi, że ten komponent jest tylko do kolorowania składni, a ja chce zrobić edytor + możliwość kolorowania składni. Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Lipiec 31, 2007 Autor Zgłoś Share Napisano Lipiec 31, 2007 może bym spróbował tego własnego kolorowania (przerobienie RichEdit), ale nie bardzo wiem jak się za to zabrać... Załóżmy, że robię swój komponent oparty na TCustomRichEdit... no i teraz: - nie bardzo rozumiem o co chodzi z tym przechwyceniem procedury okna kontrolki i po co, - jak podczas obsługi WM_PAINT zmienić kolor wyświetlanego tekstu/skąd wziąć aktualnie wyświetlany tekst? (czy należy użyć komunikatu, aby pobrać ten tekst?) Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Nvm Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 CYTAT(Nazwa topicu @ wto, 31 lip 2007 - 15:11) Kolorowanie składni w RichEdit Ale mi nie chodzi o skladnie... Więc o co chodzi? Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Lipiec 31, 2007 Autor Zgłoś Share Napisano Lipiec 31, 2007 @nvm no poprostu chce zrobić różne tryby - zwykły tekst i żeby można go edytować np. jak w WordPad oraz kolejny tryb - kolorowanie składni Delphi wiec jak chcę sobie pogrubić jakieś słowo w tekście, który mam to nie znaczy, że chce tworzyć swoje kolorowanie składni Wcześniej pisałem (to bym uznał za priorytet tego tematu teraz): może bym spróbował tego własnego kolorowania (przerobienie RichEdit), ale nie bardzo wiem jak się za to zabrać... Załóżmy, że robię swój komponent oparty na TCustomRichEdit... no i teraz: - nie bardzo rozumiem o co chodzi z tym przechwyceniem procedury okna kontrolki i po co, - jak podczas obsługi WM_PAINT zmienić kolor wyświetlanego tekstu/skąd wziąć aktualnie wyświetlany tekst? (czy należy użyć komunikatu, aby pobrać ten tekst?) Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 Załóżmy, że robię swój komponent oparty na TCustomRichEdit... no i teraz:- nie bardzo rozumiem o co chodzi z tym przechwyceniem procedury okna kontrolki i po co, - jak podczas obsługi WM_PAINT zmienić kolor wyświetlanego tekstu/skąd wziąć aktualnie wyświetlany tekst? (czy należy użyć komunikatu, aby pobrać ten tekst?) Nie musisz mieć swojego komponentu. Podmieniasz WndProc`kę (czyli procedurę, do której idą wszystkie komunikaty do okna/kontrolki) RichEdita, w niej reagujesz na WM_PAINT (czyli odrysowanie kontrolki) i tam już musisz 'ręcznie' rysować tekst kolorując wybrane słowa. Przejrzyj opis, który Ci podałem. Tam jest info jak zrobić takie kolorowanie składnie w win32asm. Na język nie patrz tylko sposób wykonania... ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Lipiec 31, 2007 Autor Zgłoś Share Napisano Lipiec 31, 2007 No już czytałem ten tekst wcześniej ... i przeglądałem też wcześniej kod tej klasy TCustomRichEdit w ComCtrls i która to jest ta WndProc'ka? (dzięki za wytłumaczenie rozjaśniłeś mi - to nie znaczy, że problem rozwiązany, heh ) Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 @nvm no poprostu chce zrobić różne tryby - zwykły tekst i żeby można go edytować np. jak w WordPad W TRichEdit można zrobic pogrubienia, kursywe, zmiane koloru, wyśrodkowanie tekstu (lub poszczególnych części) itp. korzystając jedynie z komponentu TActionList czy jakoś tak, dodajesz tam akcje i podpinasz pod TRichEdit i masz sporo przydatnych opcji, mój stary notatnik na tym jedzie: Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 Iskar: On chce automatyczne pogrubianie/kolorowanie jak w edytorach programistycznych. A poprzez te style RichEdit'a nie zrobi się tego zbyt dobrze. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 KKKas: no poprostu chce zrobić różne tryby - zwykły tekst i żeby można go edytować np. jak w WordPad Odpowiedziałem na to Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Lipiec 31, 2007 Autor Zgłoś Share Napisano Lipiec 31, 2007 nom ale mi chodzi, żeby były te dwie rzeczy w jednym komponencie hehe:) bo do tego na co ty odpowiedziałeś to mogę użyć RichEdit, ale tam nie ma kolorowania składni, natomiast SynEdit nie ma znowu tych podstawowych opcji czyli potrzebuje czegos -> RichEdit + SynEdit = MyPotrzeba Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Lipiec 31, 2007 Zgłoś Share Napisano Lipiec 31, 2007 Można też zrobić inaczej przyjmując pewne ograniczenia. Że tylko przy ładowaniu pliku koloruje tekst w jakimś wątku, a następnie przy każdym naciśnięciu klawisza sprawdzić ostatnie słowo i je pokolorować. To tak z ograniczeniem, że nie ma komentarzy i napisów. Jeśli mają być to można zrobić na przykład wątek, który na początku szuka wszystkie {,},' i sobie zapisuje gdzie są, a gdy się jakiś taki znak usunie, lub napisze do wątek aktualizuje to, i wtedy gdy się jakieś słowo napisze sprawdza się w takiej bazie czy sie jest między ' ' czy { }. Ale to chyba mało elegancko. Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 1, 2007 Autor Zgłoś Share Napisano Sierpień 1, 2007 Da się jakoś nadać atrybut dla tekstu od danej pozycji do danej w RichEdit bez zaznaczania go? Ponieważ select i odmalowywane jest bardzo wolne... Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
krajew4 Napisano Sierpień 1, 2007 Zgłoś Share Napisano Sierpień 1, 2007 Da, z tego co wiem, przez odpowiednie komunikaty WinApi wysylane do RichEdit (dokladnie nie pamietam, ale sam kiedys to robilem). My life for Aiur! Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 1, 2007 Zgłoś Share Napisano Sierpień 1, 2007 Szukaj: http://msdn2.microsoft.com/en-us/library/ms651298.aspx Z tego co wiem, nie da się pobrać atrybutów tekstu bez jego wcześniejszego zaznaczania. Ale może są jakieś komunikaty o których nie słyszałem... ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 1, 2007 Autor Zgłoś Share Napisano Sierpień 1, 2007 Kurde, no nie mogę znaleźć - chyba pójdę na łatwiznę ;] dam dwa komponenty - RichEdit do trybu zwykłego edytora i SynEdit do trybu kodu programów ;] Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 1, 2007 Zgłoś Share Napisano Sierpień 1, 2007 Kurde, no nie mogę znaleźć - chyba pójdę na łatwiznę ;] dam dwa komponenty - RichEdit do trybu zwykłego edytora i SynEdit do trybu kodu programów ;] E, powalcz ;-) Jak to będziesz robił to się sporo nauczysz (winapi, gdi). Myślę, że warto. Ale najłatwiej jest to chyba zrobić pisząc własny komponent od podstaw. Ewentualnie modyfikując SynEdita. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 1, 2007 Autor Zgłoś Share Napisano Sierpień 1, 2007 no jakoś mi łatwiej zrobić dwa komponenty niż pisząc komponent od podstaw Walczyłbym gdybym widział w tym przyszłość :] Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Nvm Napisano Sierpień 1, 2007 Zgłoś Share Napisano Sierpień 1, 2007 Gdyby każdy programista miał takie podejście to nie byłoby wielu rzeczy Pamiętaj, ze Delphi to nie tylko ustawianie komponentów na formularzu Link do komentarza Udostępnij na innych stronach More sharing options...
krajew4 Napisano Sierpień 1, 2007 Zgłoś Share Napisano Sierpień 1, 2007 a w paczce SynEdit nie ma zrodel? My life for Aiur! Link do komentarza Udostępnij na innych stronach More sharing options...
sazian Napisano Sierpień 1, 2007 Zgłoś Share Napisano Sierpień 1, 2007 ależ oczywiście że są tylko synedit jest zbyt złożony i ciężko coś z tego wyciągnąć Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 1, 2007 Autor Zgłoś Share Napisano Sierpień 1, 2007 Gdyby każdy programista miał takie podejście to nie byłoby wielu rzeczy Pamiętaj, ze Delphi to nie tylko ustawianie komponentów na formularzu Ja rozumiem.... ale ja nie robie komponentów, więc jak sie rzucę na coś takiego to na pewno nie wyjdzie mi nic satysfakcjonującego, a skoro ktoś zrobił taki porządny SynEdit to chyba nie jest wielko ZLOOO jeżeli z niego skorzystam... Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.