[DELPHI] Звук при ограниченых символов в edit

Тема в разделе "Другие языки", создана пользователем Ser Frood, 11 апр 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Ser Frood

    Ser Frood Заблокирован

    Регистр.:
    12 дек 2006
    Сообщения:
    519
    Симпатии:
    384
    Народ кто шарит на дельфи) подскажите как убрать глухой звук когда все символы в edit набраны!!!?
     
  2. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    из форума наисходниках:

    Перейти по ссылке
     
  3. Ser Frood

    Ser Frood Заблокирован

    Регистр.:
    12 дек 2006
    Сообщения:
    519
    Симпатии:
    384
    Да на соце ету тему мой друг создавал, то что ответили не катит(идиоты тему закрыли) так как при достижении символов перестают ваше работать все клавиши в едит!
     
  4. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    Ну сделай до этого проверку на key = буква или служебный символ.
    Тогда блокироваться будут только "правильные" кнопки.

    а какие кнопик блокируются?
    я только backspace увидел, а стрелки и del работают по прежнему

    чтобы backspace тоже заработал надо добавить Key <> 8
    Код:
    if (length((Sender as TEdit).Text) = ((Sender as TEdit).MaxLength)) and
    ((Sender as TEdit).MaxLength > 0) and (Key <> 8) then Key:=#0
    
     
  5. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    Вот что набрасал на DelphI:
    Код:
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
       if Length(Edit1.text) > [B]10[/B] Then
       begin
        Key := #0;
        Windows.Beep(2000,100);
       end;
    end;
    Где 10 это максимальное кол-во сиволов в поле Edit1.


    А что ты имеешь ввиду под "убрать глухой звук"? :nezn:
     
  6. tonsils

    tonsils Создатель

    Регистр.:
    2 янв 2008
    Сообщения:
    47
    Симпатии:
    20
    можно не заморачиваться с кнопками, а резать строку в OnChange:
    Код:
    procedure TForm1.Edit1Change(Sender: TObject);
    const
       MAX_LENGTH: Integer = 4;
    begin
       if Length(Edit1.Text)>MAX_LENGTH then begin
          Edit1.Text := Copy(Edit1.Text, 1, MAX_LENGTH);
          Edit1.SelStart := MAX_LENGTH;
       end;
    end;
     
  7. Ser Frood

    Ser Frood Заблокирован

    Регистр.:
    12 дек 2006
    Сообщения:
    519
    Симпатии:
    384
    Виллен а потом если выделить весь текст и нажать любой символ то клавишы не пашут)))))))))

    OnArs Cоздай едит поставь ограничение 10 а набери 12 символов услышиш глухой звук! твой пример не канает так как опять же клавишы отрубаются после того как набрато 10 символв!

    tonsils твой пример неочём ваше)))
     
  8. tonsils

    tonsils Создатель

    Регистр.:
    2 янв 2008
    Сообщения:
    47
    Симпатии:
    20
    В смысле "неочём"? Пример работает, символов в edit вводится сколько надо. Если их больше чем надо, то не вводятся, звука нет.

    Разве что глюк есть, если поставить курсор посередине строки и еще символов подобавлять. Надо подумать...
     
  9. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    Специально заинсталил Делфи, код tonsils рабочий. Если не хотите ограничивать строку константой, можете сделать так:

    Код:
    var
      Form1: TForm1;
      MAX_LENGTH: Integer;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      if Length(Edit1.Text)>MAX_LENGTH then begin
        Edit1.Text := Copy(Edit1.Text, 1, MAX_LENGTH);
        Edit1.SelStart := MAX_LENGTH;
      end;
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      MAX_LENGTH:=Edit1.MaxLength;
      Edit1.MaxLength:=Edit1.MaxLength+1;
    end;
    
    
    все отлично работает, никаких глухих звуков.
     
  10. Ser Frood

    Ser Frood Заблокирован

    Регистр.:
    12 дек 2006
    Сообщения:
    519
    Симпатии:
    384
    Ratko если по середите поставить карету то текст продолжает набираться гг
     
Статус темы:
Закрыта.