FAQ VCL
Компоненты\SynEdit\SynEdit

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как организовать поиск/замену в тексте?

uses
  SynEditTypes;

type
  TForm1 = class(TForm)
    Button1: TButton;
    SynEdit1: TSynEdit;
    SynEditSearch1: TSynEditSearch;
    procedure Button1Click(Sender: TObject);
    {...}
  end;
  
implementation

procedure TForm1.Button1Click(Sender: TObject);
var
  Options: TSynSearchOptions;
begin
  Options := [ssoPrompt];
  // Если нужна замена
  // Options := Options + [ssoReplace, ssoReplaceAll];
  SynEdit1.SearchEngine := SynEditSearch1;
  SynEdit1.SearchReplace('SearchText', 'ReplaceText', Options);
end;


Как перевести индекс символа в позицию курсора?

procedure TForm1.Button1Click(Sender: TObject);
begin
  SynEdit1.CaretXY := SynEdit1.CharIndexToRowCol(StrToInt(Edit1.Text));
  SynEdit1.SetFocus;
end;


Как перевести позицию курсора в индекс символа?

uses
  SynEditTypes;
  
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(
    IntToStr(
      SynEdit1.RowColToCharIndex(BufferCoord(SynEdit1.CaretX, SynEdit1.CaretY))
    )
  );
end;


Как перевести позицию курсора в позицию каретки?

procedure TForm1.SynEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  dc: TDisplayCoord;
begin
  dc := SynEdit1.PixelsToRowColumn(X, Y);
  Caption := IntToStr(dc.Row) + '   ' + IntToStr(dc.Column);
end;


Как перевести позицию каретки в координаты?

procedure TForm1.Button1Click(Sender: TObject);
var
  p: TPoint;
begin
  p := SynEdit1.RowColumnToPixels(TDisplayCoord(SynEdit1.CaretXY));
  ShowMessage(IntToStr(p.X) + ':' + IntToStr(p.Y));
end;


Как получить слово под кареткой?

procedure TForm1.SynEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Caption := SynEdit1.WordAtCursor;
end;


Как получить слово под курсором?

procedure TForm1.SynEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Caption := SynEdit1.WordAtMouse;
end;


Как получить слово, предшествующее слову под курсором (в той же строке)?

procedure TForm1.SynEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Caption := SynEdit1.GetWordAtRowCol(
    SynEdit1.PrevWordPosEx(
      SynEdit1.WordStartEx(
        TBufferCoord(SynEdit1.PixelsToRowColumn(X, Y))
      )
    )
  );
end;


Как получить слово, следующее за словом под курсором (в той же строке)?

procedure TForm1.SynEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Caption := SynEdit1.GetWordAtRowCol(
    SynEdit1.NextWordPosEx(
      SynEdit1.WordEndEx(
        TBufferCoord(SynEdit1.PixelsToRowColumn(X, Y))
      )
    )
  );
end;


Как перейти к определенной строке и отцентрировать ее?

procedure TForm1.Button1Click(Sender: TObject);
begin
  SynEdit1.GotoLineAndCenter(45);
end;

При использовании материала - ссылка на сайт обязательна