Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2023, 14:26   #1
lemonq
Новичок
Джуниор
 
Регистрация: 05.09.2023
Сообщений: 1
По умолчанию Вставка символа диаметра с помощью ButtonClick в RichEdit Delphi 7

Подскажите, пожалуйста, как вставить с помощью ButtonClick символ диаметра в поле RichEdit. В программировании я вообще новичок. Не понимаю как сделать, чтобы Delphi 7 понимал Unicode. Объясните, пожалуйста....
У меня программа, в которой вводится текст в простой Edit. Нужно, с помощью кнопки Button вставлять символ диаметра в место, где находится курсор. Почитав я так понял что в простом Edit это нельзя сделать, т.к. не поддерживает символы из Unicode.

procedure TMainForm.diametr1Click(Sender: TObject);
var diam1: WideString;

begin

//diam1:=WideChar(#0216);
//diam1:=WideChar($00C18);
diam1:=WideChar($#2300);
//diam1:=WideChar(#$U+2300);

diam.SetSelTextBuf(PChar(diam1));

end;

Последний раз редактировалось lemonq; 05.09.2023 в 14:34.
lemonq вне форума Ответить с цитированием
Старый 06.09.2023, 01:36   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от lemonq Посмотреть сообщение
Не понимаю как сделать, чтобы Delphi 7 понимал Unicode
Можете попробовать поискать на всемирной помойке сторонние библиотеки компонент для Д7, которые умеют работать с Юникодом. Такие были когда-то. Но все платные.
А перейти на современную версию Дельфи что мешает? Сейчас ведь даже почти бесплатная есть.
northener вне форума Ответить с цитированием
Старый 07.09.2023, 16:10   #3
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

В D7 без костылей с этим никак. Можно вставить символ/текст используя EM_SETTEXTEX. Функция для вставки:
Код:
function RE_SetTextW(RichEdit:TRichEdit; value:WideString):Boolean;
const
  ST_DEFAULT=0; //удаляет форматирование, заменяет весь текст, очищает стэк отмены
  ST_KEEPUNDO=1;//удаляет форматирование, заменяет весь текст, стэк отмены оставляет
  ST_SELECTION=2; //замена selection на текст, сохраняет форматирование
  ST_NEWCHARS=4; // ввод новых символов, с большой долей вероятности работать не будет на старых версиях RichEdit!
  EM_SETTEXTEX = WM_USER + 97;
type
 SetTextEX = record
   flags: Cardinal;
   CodePage: UINT;
 end;
 TSetTextEX = SetTextEX;
var
   ST:TSETTEXTEX; //структура SetTextEX
begin
  ST.flags:=ST_SELECTION;
  ST.CodePage:=1200; // кодовая страница юникод
  if RichEdit.Perform(EM_SETTEXTEX, WParam(@ST),LParam(PWideChar(value)))<>0 then
  begin
    Result:=true;
  end else Result:=false;
end;
Вернёт false если текст не был вставлен. Писал ещё на D6, на D7 будет работать без напильника. Использовать например так:
Код:
const
  warr:array [0..9] of WideChar = (#1087, #1088, #1080, #1074, #1077, #1090, #1758, #1084, #1080, #1088);
 // массив типа widechar с текстом
var
   ws:WideString;
begin
 RE_SetTextW(RichEdit1,WideChar(216));
  // или
  ws:=warr;
  RE_SetTextW(RichEdit1,ws);
// и т.п.
end;
DIONISKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка символа unicode в richedit Alexkln Общие вопросы Delphi 1 05.11.2019 17:33
Позиционирование символа в RichEdit Grimnir69 Помощь студентам 0 03.12.2012 00:23
цвет символа в richedit Marianna22 Компоненты Delphi 4 06.05.2012 14:13
Вставка изображения с RichEdit в RichEdit Sensizu Компоненты Delphi 2 01.10.2009 18:11
Delphi 7 вставка текста в Richedit в позицию курсора newbee-dust Помощь студентам 3 10.06.2009 12:58