На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> В Edit только буквы, цифры
    еще такой вопрос:на форме 3 компонента(Edit1,Edit2,SpeedButton1).Необходимо сделать так, чтобы в Edit1 вводились только цифры, в Edit2-только буквы.а самое интересное, что после ввода данных в Edit1 курсрр должен переместиться в Edit2(при нажатии на enter), а затем на кнопку, и после этого снова в Edit1. О как:))) HELP,please:)))

    Эта тема была разделена из темы "Помогите создать БД,срочно надо"
      Было уже
      ПОИСК: ES_NUMBER
      ПОИСК: TEdit
      ПОИСК: Edit
        В примере только цифры, но по аналогии можно переделать :
        ExpandedWrap disabled
          procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
          begin
          // Key — символ, соответствующий нажатой клавише.
          // Если символ недопустимый, то процедура заменяет его
          // на символ с кодом 0. В результате этого символ в поле
          // редактирования не появляется, и у пользователя создается
          // впечатление, что программа не реагирует на нажатие некоторых
          // клавиш.
          case Key of
          '0'..'9': ; // цифра
          #8 : ; // клавиша <Back Space>
          #13 : Edit2.SetFocus ; // клавиша <Enter>, переводим фокус на второй Edit
          // остальные символы — запрещены
          else Key :=Chr(0); // символ не отображать
          end;
          end;


        Добавлено
        Вообщем обрабатывай событие OnKeyPress в обоих Edit'ах
          :wall: А как заблокировать вод нецифровых в Edit данных при copy/paste (shift+insert)? :wall:
            Drabin сделать обработку WM_PASTE для edit'a
              P.O.D, можно поподробней про эту обработку? Как ее сделать?

              Добавлено
              Можно еще так :)
              ExpandedWrap disabled
                procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
                begin
                if not(key in['a'..'z','A'..'Z','А'..'Я', 'а'..'я']) then key:=#0; //перечисление всех допустимых символов
                end;
                end;
                Цитата Drabin @
                А как заблокировать вод нецифровых в Edit данных при copy/paste (shift+insert)?

                ExpandedWrap disabled
                  uses Clipbrd;
                   
                  function NewEditProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall;
                  var
                   s:string;
                   i:integer;
                  begin
                   if (uMsg=WM_PASTE) and Clipboard.HasFormat(CF_TEXT) then
                   begin
                    s := Clipboard.AsText;
                    for i:=1 to Length(s) do if (not (s[i] in ['0'..'9'])) then begin uMsg:=0; break end
                   end;
                   result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,uMsg,wParam,lParam)
                  end;
                   
                  procedure TForm1.FormCreate(Sender: TObject);
                  begin
                   SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER);
                   SetWindowLong(Edit1.Handle,GWL_USERDATA,SetWindowLong(Edit1.Handle, GWL_WNDPROC, LPARAM(@NewEditProc)))
                  end;
                  Цитата Drabin @
                  А как заблокировать ввод нецифровых в Edit данных при copy/paste (shift+insert)?

                  Дать Эдиту стиль ES_NUMBER. Дальше винда сама все сделает.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0268 ]   [ 16 queries used ]   [ Generated: 10.05.24, 17:25 GMT ]