Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2

PasswordChar для компонента [D5, WinXP]


Игорь Шевченко ©   (15.10.09 12:33[20]

Присланный проект не компилируется
[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'


harisma ©   (15.10.09 12:39[21]


> [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 этот тип по другому называется. Даже и не знаю, что вам по этому поводу сказать. :(


harisma ©   (15.10.09 12:48[22]

Я посмотрел у нас - в D2006 (а может и раньше) модуль Mask был разделен на 2 части: Mask и MaskUtils. Так вот, требуемый тип теперь находится в модуле MaskUtils. Допишите этот модуль в interfaces uses clause и все скомпилится и запустится.


Игорь Шевченко ©   (15.10.09 12:56[23]

Получите:

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;


{RASkov} ©   (15.10.09 13:00[24]

> [21] harisma ©   (15.10.09 12:39)
> Это тип и идентификаторы, объявленные в стандартном дельфийском
> модуле Mask.

в модуле MaskUtils вроде...
после его добавления в проект [17] огромный список ошибок, начало которого привел Игорь в [20] - пропал.

procedure TCustomUniversalMaskEdit.SetPasswordChar(const Value: Char);
var
 OldStyle: ULong;
begin
 //RecreateWnd;
 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;
//     Style := Style or ES_MULTILINE;
 inherited PasswordChar := Value;
 RecreateWnd;
end;


Игорь Шевченко ©   (15.10.09 13:08[25]

{RASkov} ©   (15.10.09 13:00) [24]

Тут есть один момент - как поведет себя область редактирования, выставленная по ES_SETRECTNP, после снятия стиля ES_MULTILINE ?

Я таких экспериментов не проводил.


{RASkov} ©   (15.10.09 13:14[26]

> [25] Игорь Шевченко ©   (15.10.09 13:08)

Да я честно особо не вникал в код автора.... просто бросилось сразу в глаза, что сначало пересоздаем окно, а затем меняем какие либо его свойства...
Думаю, что на вопрос пусть ответит автор ветки :)


{RASkov} ©   (15.10.09 13:26[27]

PasswordChar актуален помоему только для fesSimple... поэтому нужно это учесть и не будет проблем с другими стилями... при которых область редактирования имеет меньший размер за счет рисования кнопок....


{RASkov} ©   (15.10.09 13:49[28]

> поэтому нужно это учесть и не будет проблем с другими стилями...

Ну да.... что собственно и сделано в [23] :)
только там const Alignments никчему) ....но это не Игорю
:о)


harisma ©   (15.10.09 14:05[29]


> const Alignments

Это кусок от кода, который я не включил в тестовый проект. Это константс для главного проекта, просто я забыл ее стереть :о)

А так, то соорудив некий сублимат из предложеного решения Игоря и RASkov, я получил в результате то, что хотел. Все заработало. Более того, переключения происходят коректно и канва компонента корректно отрисовывается, показывая звездочки только для fesSimple.

Всем Большое Большое спасибо!!!

Так, для информации: эта проблема у нас тянулась с 2004 года :)


имя   (15.11.09 02:59[30]

Удалено модератором


azima   (01.06.16 10:29[31]

Удалено модератором
Примечание: за месяц можно изучить правила форума


Страницы: 1 2 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо