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

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

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

:: MVP ::

:: RSS ::

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

Как скрыть/показать каретку?

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.Caret.Visible := not BCEditor1.Caret.Visible;
end;


Как получить позицию каретки?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(
      IntToStr(BCEditor1.DisplayCaretX) + #13 +
      IntToStr(BCEditor1.DisplayCaretY)
   );
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(
      IntToStr(BCEditor1.DisplayCaretPosition.Column) + #13 +
      IntToStr(BCEditor1.DisplayCaretPosition.Row)
   );
end;

// Способ третий
procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(
      IntToStr(BCEditor1.TextCaretPosition.Char) + #13 +
      IntToStr(BCEditor1.TextCaretPosition.Line)
   );
end;

// Способ четвертый
procedure TForm1.BCEditor1CaretChanged(ASender: TObject; X, Y: Integer);
begin
   Caption := Format('Line: %d, Chr: %d', [X, Y]);
end;


Как изменить позицию каретки?

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.DisplayCaretX := 5;
   BCEditor1.DisplayCaretY := 5;
   BCEditor1.SetFocus;
end;


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

uses
  BCEditor.Types;

procedure TForm1.Button1Click(Sender: TObject);
var
  APos: TPoint;
  DisplayPosition: TBCEditorDisplayPosition;
begin
   with BCEditor1 do
   begin
      DisplayPosition.Row := DisplayCaretPosition.Row;
      DisplayPosition.Column := DisplayCaretPosition.Column;
      APos := ClientToScreen(DisplayPositionToPixels(DisplayPosition));
   end;
end;


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

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(BCEditor1.Lines[BCEditor1.TextCaretPosition.Line]);
end;


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

procedure TForm1.BCEditor1CaretChanged(ASender: TObject; X, Y: Integer);
begin
   Caption := BCEditor1.WordAtCursor;
end;


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

procedure TForm20.BCEditor1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
   Caption := BCEditor1.WordAtMouse;
end;


Как вывести содержимое редактора на печать?

type
  TForm1 = class(TForm)
    BCEditor1: TBCEditor;
    BCEditorPrint1: TBCEditorPrint;
    Button1: TButton;
    PrintDialog1: TPrintDialog;
    procedure Button1Click(Sender: TObject);
    {...}
  end;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
   if PrintDialog1.Execute then
   begin
      BCEditorPrint1.Editor := BCEditor1;
      BCEditorPrint1.Print;
   end;
end;


Как переключаться между режимами Insert/Overwrite?

// Способ первый
uses
  BCEditor.Types;

procedure TForm1.FormCreate(Sender: TObject);
begin
   BCEditor1.Caret.Styles.Insert := csThinVerticalLine;
   BCEditor1.Caret.Styles.Overwrite := csBlock;
end;

procedure TForm1.BCEditor1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key = VK_INSERT then
   begin
      case BCEditor1.TextEntryMode of
         temInsert: BCEditor1.TextEntryMode := temOverwrite;
         temOverwrite: BCEditor1.TextEntryMode := temInsert;
      end;
      Key := 0;
   end;
end;

// Способ второй
uses
  BCEditor.Types;

type
  TBCBaseEditorHack = class(TBCBaseEditor);

procedure TForm1.FormCreate(Sender: TObject);
begin
   BCEditor1.Caret.Styles.Insert := csThinVerticalLine;
   BCEditor1.Caret.Styles.Overwrite := csBlock;
end;

procedure TForm1.BCEditor1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key = VK_INSERT then
      TBCBaseEditorHack(Sender).ResetCaret;
end;


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

uses
  BCEditor.Editor.KeyCommands;

procedure TForm1.FormCreate(Sender: TObject);
begin
   with BCEditor1 do
   begin
      // Обязательно должны быть загружены стили, чтобы
      // редактор "знал" какие комментарии использовать
      Highlighter.LoadFromFile('JavaScript.json');
      Highlighter.Colors.LoadFromFile('Blue.json');
      Lines.Text := Highlighter.Info.General.Sample;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.ExecuteCommand(ecLineComment, #0, nil);
end;

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