Последние записи
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
15th
Сен
Вставка символа Unicode в RichEdit в Delphi 7
Posted by obzor under Delphi
Как вставить с помощью 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;
Можете попробовать поискать на всемирной помойке сторонние библиотеки компонент для Д7, которые умеют работать с Юникодом. Такие были когда-то. Но все платные.
А перейти на современную версию Дельфи что мешает? Сейчас ведь даже почти бесплатная есть.
В 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;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)