Jump to content

Dmitriy

uniGUI Subscriber
  • Posts

    17
  • Joined

  • Last visited

Posts posted by Dmitriy

  1. Все равно не работает.

     

     public
        { Public declarations }
        property ConnString : string read FConnString;
        Procedure Get_data_new(tm:tdatetime);

    Procedure TUniServerModule.Get_data_new(tm:tdatetime) ;

    begin

    // код

    end;;

    procedure TUniServerModule.UniThreadTimer1Timer(Sender: TObject);
    begin
        if (timetostr(now) = '08:38:00')  then
        Get_data_new(now);
        if (timetostr(now) = '20:01:00')   then
        Get_data_new(now);
    end;

    Все нужные компоненты на этом же модуле, но события по времени на длинную дистанцию все равно не работают ((

     

    image.png.b4ab588283b7476b171aaab53e6933c1.png

  2. Всем добрый день! Есть проблемка - не могу понять как правильно организовать вызов процедуры строго по времени (в 8:01 и 20:01). Сделал по старинке:

    procedure TReport_proizvodstvo.UniTimer1Timer(Sender: TObject);
    begin
        if (timetostr(now) = '08:01:00')  then
        Get_data_new(now);
        if (timetostr(now) = '20:01:00')   then
        Get_data_new(now);

    end;

    Но опять же - это же должна быть открыта сессия в браузере, проблема в том, что иногда она срабатывает - иногда нет. Пробовал добавлять второй таймер чтобы пинал сессию image.png.079b1e32e5d729268d6931cf9812c754.png

     

    Но результат такой же.

    Как вообще в принципе, правильно организовать вызов какой то процедуры, и чтобы она не зависела от сессии - а только от запущенного сервера.

    В процедуре происходят всякие выборки из удаленной базы данных FiREBird, кладутся в MS SQL и отправляются кое какие данные в телеграмм бот и в эксель в папку определенную.

    Заранее благодарю.

     

  3. up, тоже интересна данная тема. Только задача проще, обновлять клиентский датасет с сервера, при определенных условиях, начал копать в сторону вэбсокетов, но пока не сильно продвинулся )

  4. Всем доброго здравия! Столкнулся с такой задачкой, имеется 10 компонентов UniEdit и необходимо чтобы после введения числового значения в UniEdit и нажатию Enter, фокус присваивался бы следующему элементу Edit (или указанному). Как это реализовать?

    function keypress(sender, e, eOpts)
    {
     if (e.getKey() == 13 ) {   ??
    }

     

  5. Добрый день! Очень понравился скин uni_mac_yosemite, он прям соответствует нашим корпоративным цветам, но есть одна неприятная особенность, все компоненты memo и другие текстовые редакторы, имеют 1 строку, и небольшой скрол, в общем все как на картинке. Может это можно каким- то скриптом пофиксить.?

    Заранее благодарен.

    версия 1.90.0.1530  complete.

    image.png.7b2ae3a4556ef0e80610a55637df11bf.png

    image.png

  6. 31 minutes ago, Sherzod said:

    Уникален.

    Возможно надо вызывать beforelogin и обнулять все переменные и все запросы в sql подчищать, может есть какие - то примеры реализации разграничения прав доступа к тем или иным элементам mainform в зависимости от пользователя?

    Я только начал изучать Unigui, возможно не  все нюансы еще постиг, приведу пример как  я разграничиваю (пытаюсь) права:

    UnimainModule

     var
           LoggedUser,Otdel,filename : string;
       
      adminmode: boolean;

    -----------------------------------------------------

    UniloginModule

    procedure TUniLoginForm1.UniBitBtn1Click(Sender: TObject);
    var
    hash: string;
    begin

        UniMainModule.q_pass.SQL.Clear;
        UniMainModule.Q_pass.SQL.Add('select * from users where fio ='''+unicombobox1.Text+'''');
        UniMainModule.Q_pass.Active:=true;

       adminmode:=false;
       // режим входа для журнала заявок
     //  hash := THashSHA2.GetHashString(UniEdit1.Text,THashSHA2.TSHA2Version.SHA256);

         if UniMainModule.q_pass.FieldByName('pass').Value = UniEdit1.Text  then
        begin
           if (UniMainModule.q_pass.FieldByName('Zayavki_org_adm').AsBoolean = true) then
        
          adminmode:=true;

            Otdel:= UniMainModule.q_pass.FieldByName('otdel').AsString;
            LoggedUser := UniComboBox1.Text;

            if UniCheckBox1.Checked then
              begin
                UniApplication.Cookies.SetCookie('_loginname', UniComboBox1.Text, Date + 30.0); // Expires 30 days from now
                UniApplication.Cookies.SetCookie('_pwd', UniEdit1.Text, Date + 30.0);
              end;

            ModalResult := mrOK;
        end
        else
        ShowMessage('Введен неверный пароль');

     

     

    Main - главная форма

    procedure TMainForm.UniFormCreate(Sender: TObject);
    begin

     UniLabel1.Caption := LoggedUser;

    if adminmode=true  then
      begin
        admin.Visible:=true;  // Пункты в UniMenuItems1
        biot.visible:=true;//
      end
      else
       admin.Visible:=false;

    ----------------------------------------------------------------

    Так же у меня есть PageControl в котором я создаю фремы, правильно - ли там проверять переменные из MainModule для активации\деактивации тех или иных контролов

    либо это все надо делать в другом месте?

  7. Такая же проблема сейчас, начинается новая сессия с другой машины под другим пользователем, но в итоге мы видим все доступные меню для первого пользователя (админа).

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

     

  8. Hi, sorry if my question looks like noob) but i setup my dbgrid on export (see fotos)  and i have 7 pages in my grid, after export i see that exported only 1 page.

    I dont want to change grid option on not paged. How can i solve this case? )

     

     

    1.jpg

×
×
  • Create New...