-
Присланный проект не компилируется [Pascal Error] UniversalDelphiEdit.pas(405): E2003 Undeclared identifier: 'TMaskCharType' [Pascal Error] UniversalDelphiEdit.pas(409): E2003 Undeclared identifier: 'mcLiteral' [Pascal Error] UniversalDelphiEdit.pas(414): E2003 Undeclared identifier: 'mcNone'
-
> [Pascal Error] UniversalDelphiEdit.pas(405): E2003 Undeclared > identifier: 'TMaskCharType' > [Pascal Error] UniversalDelphiEdit.pas(409): E2003 Undeclared > identifier: 'mcLiteral' > [Pascal Error] UniversalDelphiEdit.pas(414): E2003 Undeclared > identifier: 'mcNone'
Это тип и идентификаторы, объявленные в стандартном дельфийском модуле Mask. Скорее всего в D2006 этот тип по другому называется. Даже и не знаю, что вам по этому поводу сказать. :(
-
Я посмотрел у нас - в D2006 (а может и раньше) модуль Mask был разделен на 2 части: Mask и MaskUtils. Так вот, требуемый тип теперь находится в модуле MaskUtils. Допишите этот модуль в interfaces uses clause и все скомпилится и запустится.
-
Получите: procedure TUniversalCustomEdit.CreateParams(var Params: TCreateParams);
const
Alignments: array[Boolean, TAlignment] of DWORD =
((ES_LEFT, ES_RIGHT, ES_CENTER), (ES_RIGHT, ES_LEFT, ES_CENTER));
MultiLineStyle: array[Boolean] of DWORD = (ES_MULTILINE, 0);
begin
inherited CreateParams(Params);
with Params do
Style := Style and not ES_WANTRETURN or MultiLineStyle[FEditStyle = fesSimple];
end;
-
> [21] harisma © (15.10.09 12:39) > Это тип и идентификаторы, объявленные в стандартном дельфийском > модуле Mask.
в модуле MaskUtils вроде... после его добавления в проект [17] огромный список ошибок, начало которого привел Игорь в [20] - пропал. procedure TCustomUniversalMaskEdit.SetPasswordChar(const Value: Char);
var
OldStyle: ULong;
begin
if (Value <> #0) then;
begin
OldStyle := GetWindowLong(Handle, GWL_STYLE);
if (OldStyle and ES_MULTILINE) <> 0 then
SetWindowLong(Handle, GWL_STYLE, OldStyle and not ES_MULTILINE);
end;
inherited PasswordChar := Value;
RecreateWnd;
end;
-
{RASkov} © (15.10.09 13:00) [24]
Тут есть один момент - как поведет себя область редактирования, выставленная по ES_SETRECTNP, после снятия стиля ES_MULTILINE ?
Я таких экспериментов не проводил.
-
> [25] Игорь Шевченко © (15.10.09 13:08)
Да я честно особо не вникал в код автора.... просто бросилось сразу в глаза, что сначало пересоздаем окно, а затем меняем какие либо его свойства... Думаю, что на вопрос пусть ответит автор ветки :)
-
PasswordChar актуален помоему только для fesSimple... поэтому нужно это учесть и не будет проблем с другими стилями... при которых область редактирования имеет меньший размер за счет рисования кнопок....
-
> поэтому нужно это учесть и не будет проблем с другими стилями...
Ну да.... что собственно и сделано в [23] :) только там const Alignments никчему) ....но это не Игорю :о)
-
> const Alignments
Это кусок от кода, который я не включил в тестовый проект. Это константс для главного проекта, просто я забыл ее стереть :о)
А так, то соорудив некий сублимат из предложеного решения Игоря и RASkov, я получил в результате то, что хотел. Все заработало. Более того, переключения происходят коректно и канва компонента корректно отрисовывается, показывая звездочки только для fesSimple.
Всем Большое Большое спасибо!!!
Так, для информации: эта проблема у нас тянулась с 2004 года :)
-
Удалено модератором
-
Удалено модератором Примечание: за месяц можно изучить правила форума
|