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

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

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

:: MVP ::

:: RSS ::

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

Как изменить способ выделения текста?

uses
  SynEditTypes;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SynEdit1.SelectionMode := smNormal;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SynEdit1.SelectionMode := smLine;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  SynEdit1.SelectionMode := smColumn;
end;


Как изменить цвет/фон выделения текста?

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Цвет выделителя
  SynEdit1.SelectedColor.Background := clBlack;
  // Цвет текста
  SynEdit1.SelectedColor.Foreground := clLime;
end;


Как добавить/удалить отступы перед выделенным блоком?

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Добавить отступы
  SynEdit1.DoBlockIndent;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  // Удалить отступы
  SynEdit1.DoBlockUnindent;
end;


Как задать формат отступов?

uses
  SynEditTypes;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // В качестве отступов будут использоваться пробелы
  SynEdit1.Options := SynEdit1.Options + [eoTabsToSpaces];
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  // В качестве отступов будут использоваться символы табуляции
  SynEdit1.Options := SynEdit1.Options - [eoTabsToSpaces];
end;


Как изменить величину отступа?

procedure TForm1.Button1Click(Sender: TObject);
begin
  SynEdit1.TabWidth := 3;
end;


Как выделить некоторые строки другим цветом?

procedure TForm1.SynEdit1SpecialLineColors(Sender: TObject; Line: Integer;
  var Special: Boolean; var FG, BG: TColor);
begin
  if Line mod 2 = 0 then
  begin
    Special := True;
    BG := clMaroon;
    FG := clWhite;
  end;
end;


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

uses
  SynEditTypes;

procedure TForm1.SynEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  Word: string;
  WordStart, WordEnd: Integer;
begin
  Word := SynEdit1.GetWordAtRowCol(
    TBufferCoord(SynEdit1.PixelsToRowColumn(X, Y))
  );

  WordStart := SynEdit1.RowColToCharIndex(
                 SynEdit1.WordStartEx(
                   BufferCoord(SynEdit1.PixelsToRowColumn(X, Y).Column,
                               SynEdit1.PixelsToRowColumn(X, Y).Row
                   )
                 )
               );

  WordEnd := SynEdit1.RowColToCharIndex(
               SynEdit1.WordEndEx(
                 BufferCoord(SynEdit1.PixelsToRowColumn(X, Y).Column,
                             SynEdit1.PixelsToRowColumn(X, Y).Row
                 )
               )
             );

  if Word <> '' then
  begin
    SynEdit1.SelStart := WordStart;
    SynEdit1.SelEnd := WordEnd;
  end
  else
  begin
    SynEdit1.SelStart := 0;
    SynEdit1.SelEnd := 0;
  end;
end;


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

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
begin
  SynEdit1.InsertBlock(SynEdit1.CaretXY, SynEdit1.CaretXY, 'test', True);
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Если в SynEdit нет выделенного фрагмента,
  // текст будет вставлен в позицию каретки
  SynEdit1.SelText := 'test';
end;

// Способ третий
uses
  SynEditKeyCmds;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SynEdit1.CommandProcessor(ecImeStr, #0, PChar('test'));
  SynEdit1.SetFocus;
end;


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

uses
  SynEditKeyCmds;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Возможные варианты:
  //   ecUpperCase, ecLowerCase, ecToggleCase, ecTitleCase
  SynEdit1.CommandProcessor(ecUpperCase, #0, nil);
  SynEdit1.SetFocus;
end;


Как изменить регистр выделенного тектса?

uses
  SynEditKeyCmds;

procedure TForm1.Button1Click(Sender: TObject);

begin
  // Возможные варианты:
  //   ecUpperCaseBlock, ecLowerCaseBlock,
  //   ecToggleCaseBlock, ecTitleCaseBlock
  SynEdit1.CommandProcessor(ecUpperCaseBlock, #0, nil);
  SynEdit1.SetFocus;
end;

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