Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26061
Рейтинг: 2120
#16: 2016-03-20 03:25:55 ЛС | профиль | цитата
Вообще-то, я так и не понял, что за команду подает sashaoli, но это не EM_LIMITTEXT. Неплохо бы озвучить эту команду. Вот решение с командой EM_LIMITTEXT специально для RichEdit-a на IC -- rich_textformator.sha
карма: 22

0
файлы: 1rich_textformator.sha [3.1KB] [675]
Ответов: 2059
Рейтинг: 131
#17: 2016-03-20 03:56:51 ЛС | профиль | цитата
Неплохо бы озвучить эту команду.

Это есть в каком то примере. Не могу найти старинного поста. Возможно и sashaoli взял оттуда, как и я.
А если эту команду увязать с Constructor, Destroy внутри компонента?
карма: 6

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#18: 2016-03-20 04:19:32 ЛС | профиль | цитата
flint2 писал(а):
А если эту команду увязать с Constructor, Destroy внутри компонента?

Я че-то припоминаю, что в свое время от этого отказались, вот только не помню почему. Не, ну есть возможность подцепить извне к контролу все, что он поддерживает через точку PHandle, нафиг в компонент еще что-то пихать?
карма: 22

0
Ответов: 2059
Рейтинг: 131
#19: 2016-03-20 04:28:56 ЛС | профиль | цитата
нафиг в компонент еще что-то пихать?

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

Экономия памяти и быстродействия - включается пересчёт массива. В КОL по этому поводу чего то написано.
Но экономия на спичках выходит.
карма: 6

0
Ответов: 824
Рейтинг: 138
#20: 2016-03-20 11:21:10 ЛС | профиль | цитата
nesco писал(а):
Неплохо бы озвучить эту команду.
EM_LIMITTEXT, Взял отсюда http://hiasm.net/xf/topic.php?p=38460#P38460
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#21: 2016-03-20 12:03:59 ЛС | профиль | цитата
sashaoli писал(а):
EM_LIMITTEXT

Оригинально. См. Messages.pas

//FP-  {$EXTERNALSYM EM_LIMITTEXT}
EM_LIMITTEXT = $00C5;

Что в десятичном представлении -- 197 (я проверял, работает). А в вашем коде -- 1077, что в HEX -- $0435, те это не EM_LIMITTEXT, такого значения вообще не прописано в Messages.pas.
карма: 22

0
Ответов: 824
Рейтинг: 138
#22: 2016-03-20 12:16:42 ЛС | профиль | цитата
nesco писал(а):
те это не EM_LIMITTEXT
Тогда, не знаю - но работает! Это вопрос к Galkov
------------ Дoбавленo в 12.16:
Тю, блин - не внимательный, я, обнако. Это сообщение - EM_EXLIMITTEXT
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#23: 2016-03-20 12:44:03 ЛС | профиль | цитата
sashaoli писал(а):
Это сообщение - EM_EXLIMITTEXT

Все верно, это именно это сообщение.

//FP-  {$EXTERNALSYM WM_USER}
WM_USER = $0400;
$0400 = 1024

  EM_EXLIMITTEXT      = WM_USER + 53;
1024 + 53 = 1077
------------ Дoбавленo в 12.43:
Вообще-то, для RichEdit есть специальное свойство -- MaxTextSize, и для моего IC лучше было бы использовать именного его

procedure THiAsmClass.doUnlimitText;
var
sControl: PControl;
begin
sControl := PControl(ToIntegerEvent(PHandle));
if not Assigned(sControl) then exit;
sControl.MaxTextSize := $FFFFFFFF;
end;
карма: 22

0
Ответов: 824
Рейтинг: 138
#24: 2016-03-20 12:47:26 ЛС | профиль | цитата
Где то читал, что с MaxTextSize есть проблемы, поэтому рекомендуют использовать именно EM_LIMITTEXT
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#25: 2016-03-20 13:02:41 ЛС | профиль | цитата
sashaoli писал(а):
Где то читал, что с MaxTextSize есть проблемы

Что-то я их не заметил, может для других контролов, тк используется универсальный метод SetMaxTextSize

//[procedure TControl.SetMaxTextSize]
procedure TControl.SetMaxTextSize(const Value: DWORD);
var V1, V2: Integer;
begin
if fCommandActions.aSetLimit <> 0 then
begin
V1 := 0; V2 := Value;
if fCommandActions.aSetLimit = EM_SETLIMITTEXT then
begin
V1 := Value; V2 := 0;
end;
Perform( fCommandActions.aSetLimit, V1, V2 );
end;
end;

И для RichEdit fCommandActions.aSetLimit равен именно EM_EXLIMITTEXT.


карма: 22

0
Ответов: 824
Рейтинг: 138
#26: 2016-03-20 13:10:46 ЛС | профиль | цитата
Наверное, я читал, для делфийского RichEdit, в KOL может и нет тех проблем...
карма: 1

0
26
Сообщение
...
Прикрепленные файлы
(файлы не залиты)