Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как сделать окошко подсказки в редакторе как Delphi по CTRL-J

Delphi , Компоненты и Классы , TMemo и TRichEdit

Как сделать окошко подсказки в редакторе как Delphi по CTRL-J

Автор: Hog

Допустим у тебя TMemo..

1. Делаешь ListBox, заполняешь, visible := false, parent := Memo
2. У Memo в обработчике Memo.onKeyDown что-нибудь типа:


if (key = Ord('J')) and (ssCtrl in Shift) then
begin
  lb.Left := Memo.CaretPos.x;
  lb.Top := Memo.CaretPos.y + lb.height;
  lb.Visible := True;
  lb.SetFocus;
end;

он показывается.. а дальше работай с листбоксом, вставляй в мемо нужный текст, пряч листбокс

Here is the translation of the text into Russian:

Интересно описываемое поведение, похоже на Дельфи!

Чтобы реализовать функциональность "окна подсказки" в вашем редакторе TMemo, я разбью шаги и предоставлю код-наборы для помощи вам в его реализации.

Шаг 1: Создайте ListBox

var
  lb: TListBox;
begin
  lb := TListBox.Create(nil);
  lb.Parent := Memo; // установите родителя для вашего TMemo
  lb.Visible := false; // инициализируйте список в скрытом состоянии
end;

Шаг 2: Обработайте событие OnKeyDown редактора Memo

procedure TForm1.MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Key = Ord('J')) and (ssCtrl in Shift) then // проверьте Ctrl-J
  begin
    lb.Left := Memo.CaretPos.X; // позиционируйте список на позиции курсора
    lb.Top := Memo.CaretPos.Y + lb.Height; // корректируйте верхнюю позицию
    lb.Visible := True; // покажите список
    lb.SetFocus; // установите фокус на список
  end;
end;

Шаг 3: Интерактивно взаимодействуйте с ListBox и TMemo

procedure TForm1.ListBoxSelectionChange(Sender: TObject);
begin
  if lb.ItemIndex >= 0 then // выбран элемент в списке? 
  begin
    Memo.Text := lb.Items[lb.ItemIndex]; // вставьте выбранный текст в TMemo
  end;
end;

procedure TForm1.ListBoxCloseUp(Sender: TObject);
begin
  lb.Visible := false; // скрыть список при закрытии
end;

Альтернативное решение Вместо использования отдельного ListBox можно рассмотреть использование TPanel с TMemo или TEdit внутри него. Это позволит вам создать custom "окно подсказки", которое может быть позиционировано и стилизовано по вашему выбору.

Вот пример:

var
  hintPanel: TPanel;
  hintMemo: TMemo;

begin
  hintPanel := TPanel.Create(nil);
  hintPanel.Parent := Memo; // установите родителя для вашего TMemo
  hintPanel.Visible := false; // инициализируйте панель в скрытом состоянии

  hintMemo := TMemo.Create(nil);
  hintMemo.Parent := hintPanel; // установите родителя для панели
  hintMemo.Lines.Clear; // очистите любые существующие тексты

  procedure TForm1.MemoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  begin
    if (Key = Ord('J')) and (ssCtrl in Shift) then
    begin
      hintPanel.Visible := True;
      hintMemo.Lines.Clear; // очистите любые существующие тексты
       // ... оставшаяся часть кода ...
    end;
  end;

  procedure TForm1.hintPanelCloseUp(Sender: TObject);
  begin
    hintPanel.Visible := false; // скрыть панель при закрытии
  end;
end;

Эта APPROACH позволяет вам иметь больше гибкости в стилизации и позиционировании "окна подсказки". Однако, это может потребовать более кода для достижения желаемого поведения.

В редакторе можно создать окошко подсказки, benzerному Delphi, путем создания ListBox, который скрыт по умолчанию и появляется на экране при нажатии клавиши Ctrl+J.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TMemo и TRichEdit ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 17:12:12/0.010483980178833/2