Jump to content

stas

uniGUI Subscriber
  • Posts

    489
  • Joined

  • Last visited

  • Days Won

    37

Posts posted by stas

  1. Добрый вечер.

    Проанализировал я Ваш вопрос.

    Постулируем следующее :

     В один момент открыта только одна подчиненная строчка (остальные закрываются)

     Используя плагин  RowWidget Вы можете это сделать.

    Возьмите демку gedit киньте туда контейнер панель, закиньте туда два дбедита с FirstName и LastName 

    После этого допишите в код следующий текст

    type TMyGrid=class(TUniDBGrid);
    procedure TMainForm.UniFormCreate(Sender: TObject);
    begin
    TMyGrid(UniDBGrid1).JSConfigPlugin('Ext.grid.plugin.RowWidget',['pluginId',-100,'selectRowOnExpand',true,'widget',TMyGrid(UniDBGrid1).JsObject('xtype:"panel", height:200')]);
    UniSession.AddJS(TMyGrid(UniDBGrid1).JSName+'.getView().lastId=-1;');
    UniSession.AddJS(TMyGrid(UniDBGrid1).JSName+'.getView().addListener("expandbody",function(rowNode, record, nextBd, widget)'+'{if (this.grid.getPlugin(-100) && this.lastId!=-1) this.grid.getPlugin(-100).toggleRow(this.lastId,record);  this.lastId=record.id;  widget.setHeight('+IntToStr(UniHiddenPanel2.Height)+');'+UniHiddenPanel2.JsName+'.setPosition(0,0); widget.add('+UniHiddenPanel2.JSName+');},'+TMyGrid(UniDBGrid1).JSName+'.getView());');
    UniSession.AddJS(TMyGrid(UniDBGrid1).JSName+'.getView().addListener("collapsebody",function(rowNode, record, nextBd, widget){  this.lastId=-1;},'+TMyGrid(UniDBGrid1).JSName+'.getView());');
    end;

    //Вместо UniHiddenPanel2 напишите название Вашей контейнер панели.

    Думаю с гридом получится также 

    "Я нашёл этому поистине чудесное доказательство, но поля книги слишком узки для него."

    Всего доброго.

    • Like 1
  2. On 10/31/2018 at 9:20 AM, Tokay said:

    он предназначен именно для балансировки на несколько машин, всё верно. на такое количество пользователей скорее всего придется несколько ставить.

    Вы говорите о фаршадовском ГиперСервере?

    Я не совсем понимаю, каким образом его заставить работать на нескольких машинах, т.е. сам гиперсервер находится на одной машине, а процессы запускаются на второй и третьей ?

  3. 12 hours ago, Tokay said:

    Стас, в унигуе уже есть свой балансировщик. Как раз для таких случаев. Смотри HyperServer.

    Гиперсервер работает в контексте одной машины, де факто он запускает несколько процессов приложения и работает с ними как прокси.

    В случае очень большого количества пользователей этого будет недостаточно, потребуется несколько машин.

  4. On 10/28/2018 at 3:20 PM, qpash said:

    Присоединяюсь к вопросу:

    База MS SQL 2012

    Планируемое подключение пользователей 25000-30000 в течении трех месяцев (сейчас работает 500 сотрудников)

    Настроено через ISAPI и IIS

    Гибридное приложение Web + Mobil

    Какие требования необходимы для сервера или нескольких серверов?

    А также как организовать VIP поддержку 24х7?

    Я более чем уверен, что унигуи не Ваш вариант, Это сегмент корпоративных решений. То о чем Вы говорите ближе к мас маркету.

    Можно попробовать вариант nginx с балансировкой, на нескольких серверах, и конечно тут топорно с прямым доступом к бд будет сложно.

  5. Добрый вечер, крайне мало данных

    База находится на том же сервере ?

    Унигуи на сессию расходует  от 5 до 100 мб (возможно больше)

    Это в случае, если Вы фетчите всю таблицу(и) в память и оперируете ей(ими) вольготно.

    Я Вам рекомендую проверить на одном пользователе, а потом умножить потребляемую мощность на ожидаемое количество.

     (/server в проекте) Вы получите адекватное значение. Если Вы заложите в сервер порядка 32гб оперативной памяти, я думаю , Вы сможете  некоторое время работать спокойно. Очень много зависит от размера таблиц, и как Вы с ними работаете.

  6. Конечно, это же dfm

     

    uniGUIServerForm.dfm

     

    Или так

    procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject);
    var i,j:integer;
    begin
     for I := 0 to Screen.FormCount-1 do
      begin
       for j:=0 to Screen.Forms.ComponentCount-1 do
        begin
          if GetPropInfo(Screen.Forms.Components[j],'Caption')<>nil then
           SetStrProp(Screen.Forms.Components[j],'Caption','Тест');
        end;
     
      end;
     
    end;
  7. Назойливы, молодой человек, назойливы.

    Посмотрите хотя бы Ваши письма, касательно сохранения html в картинку.

    Сергей, было бы неплохо, если бы Вы вначале поискали.

    Извините, если обидел.

  8. И не получится, то что Вы выслали, это работа  с TwebBrowser, разные принципы.

    Потому используйте вариант из

    FMSoft\Framework\uniGUI\Demos\Desktop\HTML2Image

     

    Помимо этого на

    wkhtmltopdf.org

    Есть dll, которая делает тоже самое (пробовал pdf, получилось)

    Использовать dll в проекте достаточно кошерно.

  9. Нельзя, броузер не передает серверу структуру каталогов.

    В случае upload путь к файлу будет c:\fakepath

  10. Hello

     

    When I update row 

    for example

    Dataset.Locate('id',myId)

    Dataset.Edit;

    Dataset.FieldbyName('somefield').value:=somevalue;

    Dataset.Post;

    And Dataset.RecNo not equal  Grid.Row ( not paged grid)

     

    Store was realoading

     

    Can i use "smart" reload row without reload store ?

     

    Thank 

     

  11. В принципе сложностей не вижу.

    Учитывая, что такой код работает

    <head>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-alpha1/katex.min.css" integrity="sha384-8QOKbPtTFvh/lMY0qPVbXj9hDh+v8US0pD//FcoYFst2lCIf0BmT58+Heqj0IGyx" crossorigin="anonymous">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0-alpha1/katex.min.js" integrity="sha384-GR8SEkOO1rBN/jnOcQDFcFmwXAevSLx7/Io9Ps1rkxWp983ZIuUGfxivlF/5f5eJ" crossorigin="anonymous"></script>
    </head>
    <body>
    <script>
    document.write(katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}"));
    </script>
    </body>
    

    Попробуйте какому-нибудь Ext.Panel сделать update (katex.renderToString("c = \\pm\\sqrt{a^2 + b^2}"))

×
×
  • Create New...