Конференция "Компоненты" » 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]
    Удалено модератором
    Примечание: за месяц можно изучить правила форума
 
Конференция "Компоненты" » PasswordChar для компонента [D5, WinXP]
Есть новые Нет новых   [119359   +8][b:0][p:0.001]