i.r.khayrullin Опубликовано 24 июня, 2015 Поделиться Опубликовано 24 июня, 2015 Добрый вечер! В VCL есть замечательная функция, позволяющая заменить выделенный текст требуемым. В FMX ее нет, и чем заменить, я придумать не смог. Код для VCL procedure TForm1.NButtonClick(Sender: TObject);begin Edit1.SetSelText(TButton(Sender).Caption); end; И тоже самое для FMX procedure TForm1.NButtonClick(Sender: TObject);var aNew: String; aChar: String; aPos: Integer; begin aChar:= TButton(Sender).Text; aPos:= Edit1.SelStart; Edit1.DeleteSelection; aNew:= Edit1.Text; aNew.Insert(aPos, aChar); Edit1.Text:= aNew; Edit1.SelStart:= aPos + 1; end; Есть идеи, как это можно реализовать красивее и правильнее? Цитата Ссылка на комментарий
0 kami Опубликовано 24 июня, 2015 Поделиться Опубликовано 24 июня, 2015 Сделайте отдельным методом и оберните это в хелпер, к примеру. Аналогичного метода вроде как нет, даже TCustomEdit.PasteFromClipboard использует похожий механизм. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 24 июня, 2015 Модераторы Поделиться Опубликовано 24 июня, 2015 StringReplace, не? Цитата Ссылка на комментарий
0 i.r.khayrullin Опубликовано 24 июня, 2015 Автор Поделиться Опубликовано 24 июня, 2015 Сделайте отдельным методом и оберните это в хелпер, к примеру. Аналогичного метода вроде как нет, даже TCustomEdit.PasteFromClipboard использует похожий механизм. Жаль, но по всей видимости вы правы StringReplace, не? К сожалению, StringReplace заменит первое вхождение в строке, если есть участок, аналогичный выделенному. Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 24 июня, 2015 Администраторы Поделиться Опубликовано 24 июня, 2015 У TEdit, есть специальный метод по замене выделенного текста новой строкой: procedure Replace(const AStartPos: Integer; const ALength: Integer; const AStr: string); Поэтому в вашем случае замена будет выглядить так: Edit.Replace(Edit.SelStart, Edit.SelLength, NewString); xenon54, Kitty, Vitaldj и 1 другой 4 Цитата Ссылка на комментарий
Вопрос
i.r.khayrullin
Добрый вечер! В VCL есть замечательная функция, позволяющая заменить выделенный текст требуемым. В FMX ее нет, и чем заменить, я придумать не смог.
Код для VCL
И тоже самое для FMX
Есть идеи, как это можно реализовать красивее и правильнее?
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.