На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: jack128, Rouse_, Krid
  
    > Как заблокировать ввод нецифровых данных в Edit при copy/paste (shift+insert) , и WM_SETTEXT/SetWindowText
      ExpandedWrap disabled
        function NewEditProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall;
        var
         s:string;
         i:integer;
         Data: THandle;
        begin
         case uMsg of
           WM_PASTE:
                    if IsClipboardFormatAvailable(CF_TEXT) then
                     if OpenClipboard(wnd) then
                     begin
                      Data := GetClipboardData(CF_TEXT);
                      try
                        if Data <> 0 then
                        begin
                         s := PChar(GlobalLock(Data));
                         for i:=1 to Length(s) do if (not (s[i] in ['0'..'9'])) then begin uMsg:=0; break end
                        end
                      finally
                        if Data <> 0 then GlobalUnlock(Data);
                        CloseClipboard
                      end
                     end;
           WM_SETTEXT:
                    begin
                      s := pchar(lParam);
                      if s<>'' then  
                       for i:=1 to Length(s) do if (not (s[i] in ['0'..'9'])) then begin uMsg:=0; break end
                    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;


      Автор: Krid
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0139 ]   [ 16 queries used ]   [ Generated: 27.04.24, 16:57 GMT ]