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

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

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

:: MVP ::

:: RSS ::

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

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

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(BCEditor1.SelectedText);
end;


Как получить позицию начала выделенного текста?

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

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


Как получить позицию конца выделенного текста?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
begin
   with BCEditor1 do
      ShowMessage(IntToStr(SelectionStart + SelectionLength));
end;

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


Как получить длину выделенного текста?

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(IntToStr(BCEditor1.SelectionLength));
end;


Как удалить выделенный текст?

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.ClearSelection;
end;


Как убрать выделение?

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.SelectionEndPosition := BCEditor1.SelectionBeginPosition;
end;


Как скрыть/показать мини-карту кода?

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


Как отключить вертикальную лиинию?

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.RightMargin.Visible := False;
end;


Как отключить подсветку одинаковых слов при выделении?

procedure TForm1.Button1Click(Sender: TObject);
begin
   BCEditor1.Selection.Options := BCEditor1.Selection.Options - [soHighlightSimilarTerms];
end;


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

uses
  BCEditor.Types;

var
  NewPosition: TBCEditorDisplayPosition = (Column: -1; Row: -1);
  StartPosition: TBCEditorDisplayPosition = (Column: -1; Row: -1);

function CtrlDown: Boolean;
begin
   Result := (GetAsyncKeyState(VK_CONTROL) shr 16) and 1 = 1;
end;

function ShiftDown: Boolean;
begin
   Result := (GetAsyncKeyState(VK_SHIFT) shr 16) and 1 = 1;
end;

function AltDown: Boolean;
begin
   Result := (GetAsyncKeyState(VK_MENU) shr 16) and 1 = 1;
end;

procedure TForm1.BCEditor1CaretChanged(ASender: TObject; X, Y: Integer);
begin
   if not (CtrlDown and AltDown and ShiftDown) then
   begin
      NewPosition := BCEditor1.DisplayCaretPosition;
      StartPosition := BCEditor1.DisplayCaretPosition;
   end;
end;

procedure TForm1.BCEditor1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if (ssCtrl in Shift) and (ssAlt in Shift) and (ssShift in Shift) then
   case Key of
      VK_UP: begin
         BCEditor1.Caret.MultiEdit.Enabled := False;
         BCEditor1.Caret.MultiEdit.Enabled := True;

         BCEditor1.DisplayCaretX := StartPosition.Column;
         BCEditor1.DisplayCaretY := StartPosition.Row;

         if NewPosition.Row > 1 then
            NewPosition.Row := NewPosition.Row - 1;
         BCEditor1.AddMultipleCarets(NewPosition);
      end;
      VK_DOWN: begin
         BCEditor1.Caret.MultiEdit.Enabled := False;
         BCEditor1.Caret.MultiEdit.Enabled := True;

         BCEditor1.DisplayCaretX := StartPosition.Column;
         BCEditor1.DisplayCaretY := StartPosition.Row;

         if NewPosition.Row < BCEditor1.Lines.Count-1 then
            NewPosition.Row := NewPosition.Row + 1;
         BCEditor1.AddMultipleCarets(NewPosition);
      end;
   end;
end;

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