Potrzebny odpowiednik RichEdit dla Lazarusa

0

Witam,

Może zna ktoś komponent w Lazarusie który umożliwia kolorowanie poszczególnych słów lub znaków? W Delphi był dostępny RichEdit który doskonale się do tego nadawał. Można było sobie pokolorować co się chce i gdzie się chce. W Lazarusie znalazłem tylko SynEdit, ale to niezupełnie to co chcę. Jest w sumie zbyt skomplikowany i nie udało mi się go zmusić np. do kolorowania określonych liczb. Czytałem że można napisać własny Highlighter, ale to już wyższa szkoła jazdy. Znalazłem w sieci jakiś komponent RichView, ale nie działał jak należy. Czy naprawdę nie ma nigdzie komponentu RichEdit do Lazarusa? Dlaczego nie został on dołączony do programu?

0

Dzięki za pomoc. Komponent IzRichEdit nie chciał się zainstalować - sypnął błędami przy kompilacji. Nie wiem dlaczego. RichMemo zainstalował się i myślę, że spełni moje wymagania.

0

A którą wersję Lazarusa i FPC posiadasz? Pobierz najnowszą (jeśli masz którąś starszą) i spróbuj jeszcze raz.

0

Wersja Lazarusa 1.2.6, FPC 2.6.4. Błędy dotyczyły z tego co pamiętam jakichś konwersji typów. Pewnie coś można by było w plikach zmienić i by hulało, ale trzeba wiedzieć co ;)

0

Wersja Lazarusa 1.2.6, FPC 2.6.4. Błędy dotyczyły z tego co pamiętam jakichś konwersji typów.

A może były to ostrzeżenia o niebezpiecznej konwersji argumentów "signed" i "unsigned"? Czasem kod jest bezpieczny i nigdy się nie wywali pomimo mieszania typów, ale przy kompilacji wyskakują warningi; Ja w takim przypadku obejmuję taki kod w dyrektywę $WARNINGS i mam czystą kompilację;

Pewnie coś można by było w plikach zmienić i by hulało, ale trzeba wiedzieć co

Tak, tyle że trzeba by widzieć listę tych "błędów", a Ty nie jej podałeś, wiec można tylko zgadywać :]

0

Zrobiłem jeszcze raz kompilację i są takie błędy:

win32wsrichbox.pas(206,15) Error: Illegal type conversion: "LongWord" to "TStream"
win32wsrichbox.pas(220,10) Error: Illegal type conversion: "LongWord" to "TStream"
win32wsrichbox.pas(236,16) Error: Illegal type conversion: "LongInt" to "TStream"
win32wsrichbox.pas(260,16) Error: Illegal type conversion: "LongInt" to "TStream"
win32wsrichbox.pas(826,16) Error: Illegal type conversion: "TStream" to "LongInt"
win32wsrichbox.pas(1054,16) Error: Illegal type conversion: "TStream" to "LongInt"

dodanie znacznika <code class="none"> - @furious programming

0

No to w ogóle kicha, bo widzę że ktoś miesza typy proste z klasami... Być może chodzi o rzutowanie zmiennej z instancją klasy na liczbę, aby pobrać adres do pamieci; Ale bez kodu i błędnych linii nic więcej nie mogę napisać.

0

Spróbuj sam zainstalować, to zobaczysz w szczegółach. No chyba że się uda, to ja już nie wiem ;)

0

Nie chodzi o rekompilację Lazarusa, tylko o kompilację komponentu. To z nią jest problem. Ale mniejsza z tym, może ktoś kiedyś znajdzie rozwiązanie.

0

Wiem że wystarczy sama kompilacja komponentu, jednak pasowałoby też go przetestować, a do tego potrzeba już rekompilować środowisko; W wolnym czasie zobaczę co jest z tym kodem nie tak.

0

RichEdit bez problemu się kompiluje na 1.2.6, załączona aplikacja demo również

0

Wersja 1.0.14, Windows,

pobrałem RichMemo z CCR:
https://sourceforge.net/projects/lazarus-ccr/files/RichMemo/

Przy kompilacji i próbie instalacji był błąd:
win32\win32richmemo.pas:

 

class function TWin32WSCustomRichMemo.CreateHandle(const AWinControl: TWinControl;  
  const AParams: TCreateParams): HWND;  
var
  Params      : TCreateWindowExParams;
  RichClass   : AnsiString;
  ACustomMemo : TCustomMemo;
begin
  InitRichEdit;
  RichClass := GetRichEditClass;
  if RichClass = '' then begin
    Result := 0;
    Exit;
  end;

  // general initialization of Params
  PrepareCreateWindow(AWinControl,  Params);  // <-- tutaj było za mało parametrów

  // .. dalsza część kodu                                       

trzeba było poprawić na:

PrepareCreateWindow(AWinControl, AParams, Params);

U mnie się zainstalowało.

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