[SynEdit] Dwa pytania

0
  1. Jak zmienić atrybuty zaznaczonego tekstu? (coś a'la SellAtributes w RichEdit)
  2. Jak korzystać z SynEditSearch, lub SynEditRegexSearch?
    (chodzi mi o jakiś konkretny, działający przykład)
0
  1. Jak zmienić atrybuty zaznaczonego tekstu? (coś a'la SellAtributes w RichEdit)

Nie mam SynEdit, ale czy nie starczyło SynEdit.Font ? (gdy nie ma zaznaczenia --> dla całego tekstu, gdy jest --> dla zaznaczenia) ??

  1. Jak korzystać z SynEditSearch, lub SynEditRegexSearch?
    (chodzi mi o jakiś konkretny, działający przykład)
uses 
SynEdit, SynEditSearch... 
procedure TfrmMain.dialogFindFind(Sender: TObject); // szukanie
var
  SearchSetup: TSynSearchOptions;
  Find: TFindDialog;
begin
  Find := TFindDialog(Sender);
  SearchSetup := [ssoPrompt];
  if not (frDown in Find.Options) then
    Include(SearchSetup, ssoBackwards);
  if (frMatchCase in Find.Options) then
    Include(SearchSetup, ssoMatchCase);
  if (frWholeWord in Find.Options) then
    Include(SearchSetup, ssoWholeWord);
  if SynEdit.SearchReplace(Find.FindText, '', SearchSetup) = 0 then
    ShowMessage('Szukany element nie został znaleziony!');
end;
procedure TfrmMain.dialogReplaceReplace(Sender: TObject); // zamiana
var
  SearchSetup: TSynSearchOptions;
  Find: TReplaceDialog;
  Match: boolean;
begin
  Find := TReplaceDialog(Sender);
  SearchSetup := [ssoPrompt];
  if (frReplace in Find.Options) then
    Include(SearchSetup, ssoReplace);
  if (frReplaceAll in Find.Options) then
  begin
    Include(SearchSetup, ssoReplaceAll);
    if not (frDown in Find.Options) then
      Include(SearchSetup, ssoBackwards);
    if (frMatchCase in Find.Options) then
      Include(SearchSetup, ssoMatchCase);
    if (frWholeWord in Find.Options) then
      Include(SearchSetup, ssoWholeWord);
    if SynEdit.SearchReplace(Find.FindText, Find.ReplaceText, SearchSetup) = 0 then
      ShowMessage('Szukany element nie został znaleziony!');
  end
  else
  begin
    Match := ((frMatchCase in Find.Options) and (SynEdit.SelText = Find.FindText));
    Match := Match or (not (frMatchCase in Find.Options) and (UpperCase(SynEdit.SelText) = UpperCase(Find.FindText)));
    if (frReplace in Find.Options) and Match then
      SynEdit.SelText := Find.ReplaceText;
    dialogReplaceFind(Sender);
  end;
end;

Regex nie używałem.

0

1.Nie, nie działa. ;-( (przynajmniej u mnie)
2. Dzięki

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