Jump to content

Ronbral

uniGUI Subscriber
  • Posts

    48
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Ronbral

  1. As mentioned above, your approach is not common to web applications. But it can be done; however it is nothing trivial.
    I for example use KbmMW based TCP/IP desktop clients to provide print and file upload services in the user's local environment. This approach would allow me to run a local file. But achieving this took a lot of work for me.


    If it were enough for you to provide your user with a similar Notepad in your application, UniGUI provides you with plenty of resources (UniMemo, UniHTMLMemo) to develop it; without having to go through the hassles of keeping apps apart.

  2. 38 minutes ago, Wilton Ergon said:

    percebemos a complexidade desse recurso, devido ao atraso no lançamento, a pergunta, será que vai funcionar?

    Of course Will! It is true that Team FMSoft leaves something to be desired in support mainly; but as for the technical quality the guys are "top of the line"

  3. On 17/08/2020 at 11:40, wilton_rad said:

    sim, vejo muitas novidades que o indy está desatualizado e existem soluções melhores, nosso querido mestre fashard, já disse que ele tem planos de implementar outros meios de comunicação http, vamos esperar ele comentar isso.

    Wilton, considering the context of Fashard speech, he referred to communication between the HyperServer ISAPI and the EXE application. Because to maintain compatibility is still done in HTTP, when implementing TCP/IP and or Pipes, we will have better performance in the flow of data between the manager and its nodes.

  4. Very good news!


    It would be nice if UniGUI could take advantage of it. Since we no longer see evolutionary updates on Indy. Other frameworks are starting to look for new layers of communication, like Grijjy, which I like a lot. But this really means a huge and heavy job for the FmSoft team ...

    • Like 1
  5. 12 hours ago, eduardosuruagy said:

    Se eu soubesse como isso estava acontecendo, tentaria corrigi-lo, pois existem erros no Unigui que ocorrem aleatoriamente. Como posso encontrar o objeto com o nome O1CE6?

    You can use this approach to find and relate components between SS / CS:

    
     {$DEFINE IN_DEBUG}  // Comentar esta linha em Produção
    
    procedure TUniMainModule.UniGUIMainModuleNewComponent(AComponent: TComponent);
    begin
      {$IFDEF IN_DEBUG}
          if AComponent.ClassName = 'TUniContainerPanel' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniContainerPanel(AComponent).JSName)
          else
          if AComponent.ClassName='TUniHTMLFrame' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniHTMLFrame(AComponent).JSName)
          else
          if AComponent.ClassName='TUniImage' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniImage(AComponent).JSName)
          else
          if AComponent.ClassName='TUniLabel' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniLabel(AComponent).JSName)
          else
          if AComponent.ClassName='TUniTimer' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniTimer(AComponent).JSName)
          else
          if AComponent.ClassName='TUniMenuItem' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniMenuItem(AComponent).JSName)
          else
          if AComponent.ClassName='TUniSimplePanel' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniSimplePanel(AComponent).JSName)
          else
          if AComponent.ClassName='TUniEdit' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniEdit(AComponent).JSName)
          else
          if AComponent.ClassName='TUniProgressBar' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniProgressBar(AComponent).JSName)
          else
          if AComponent.ClassName='TUniButton' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniButton(AComponent).JSName)
          else
          if AComponent.ClassName='TUniDBGrid' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniDBGrid(AComponent).JSName)
          else
          if AComponent.ClassName='TUniNumberEdit' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniNumberEdit(AComponent).JSName)
          else
          if AComponent.ClassName='TUniHiddenPanel' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniHiddenPanel(AComponent).JSName)
          else
          if AComponent.ClassName='TUniMemo' then
             K.ALog(AComponent.Name+' / '+AComponent.ClassName+' = '+TUniMemo(AComponent).JSName)
          else K.ALog(AComponent.Name+' / '+AComponent.ClassName);
      {$ENDIF}
    end;

    Where K.Log (...) is your Log / Debug system. (Unigui provides one)


    You will get this output:
     

    ...
    24/07/2020 21:38:35: UniButton38 / TUniButton = OCDF
    24/07/2020 21:38:35: btWIBOn / TUniButton = OCE3
    24/07/2020 21:38:35: UniButton4 / TUniButton = OCE7
    24/07/2020 21:38:35: UniButton5 / TUniButton = OCEB
    24/07/2020 21:38:35: UniButton6 / TUniButton = OCEF
    24/07/2020 21:38:35: UniButton7 / TUniButton = OCF3
    24/07/2020 21:38:35: UniButton9 / TUniButton = OCF7
    24/07/2020 21:38:35: UniImage1 / TUniImage = OCFB
    24/07/2020 21:38:35: UniLabel1 / TUniLabel = OCFF
    24/07/2020 21:38:35: btCleanASCache / TUniButton = OD03
    24/07/2020 21:38:35: btEv11500 / TUniButton = OD07
    24/07/2020 21:38:35: btHTEditor / TUniButton = OD0B
    24/07/2020 21:38:35: btParams / TUniButton = OD0F
    24/07/2020 21:38:35: btSynCRC32 / TUniButton = OD13
    24/07/2020 21:38:35: btPopGenerica / TUniButton = OD17
    24/07/2020 21:38:35: btCreditosSMS / TUniButton = OD1B
    24/07/2020 21:38:35: btGetStr / TUniButton = OD1F
    24/07/2020 21:38:35: btFormTheme / TUniButton = OD23
    24/07/2020 21:38:35: btFormStatus / TUniButton = OD27
    24/07/2020 21:38:35: btSendSMS / TUniButton = OD2B
    24/07/2020 21:38:35: btSysProp / TUniButton = OD2F
    24/07/2020 21:38:35: btDownloadFile / TUniButton = OD33
    24/07/2020 21:38:35: btListaFilesSrv / TUniButton = OD37
    24/07/2020 21:38:35: btDeskOpts / TUniButton = OD3B
    24/07/2020 21:38:35: btExportPKG / TUniButton = OD3F
    24/07/2020 21:38:35: btVarOld / TUniButton = OD43
    24/07/2020 21:38:35: btVariantNull / TUniButton = OD47
    ...

    Of course you can filter and define the classes of interest in investigate ...
     

  6. On 03/09/2019 at 11:27, kkelchev said:

    Olá a todos.

    RowWidget é uma nova funcionalidade interessante - obrigado equipe.

    Eu estava pensando que é possível que o widget bruto seja expandido (recolhido) no clique duplo do mouse na linha da grade.

    Também é possível que ele seja expandido / recolhido programaticamente com código do lado do servidor.

    Estou perguntando isso porque, há usuários idosos que enfrentam dificuldades para expandir o widget com o botão pequeno padrão no lado esquerdo da grade bruta.

     

    Graças Kamen

     

     

    +1

  7. 10 horas atrás, wilton_rad disse:

    meu servidor possui 95 sites instalados no iis, tenho milhares de usuários simultâneos (adicionando todos os sites) (mais de 5000 usuários) cada site tem acesso ao seu próprio banco de dados sql server, com uma pandemia oculta, isso é substancialmente , então está contratando um novo servidor dedicado apenas ao único.
    em um cenário como esse, compilando o projeto em 64 bits, há alguma melhoria no desempenho?

    Estamos usando o hiperserver em alguns desses sites (aqueles com mais acesso)

    Wilton, 

    Muitas personalizações podem ser feitas no nível do sistema operacional para obter melhor desempenho. Considere também a versão do Windows Server Datacenter, If you have a lot of procs Cores. What is the hardware; Processor, Mem and SSD?

     

  8. Hi

    I'm new to UniGui, I haven't even completed my first project yet, but I would like to express my opinion:

    All the work being done to advance the Delphi Web application environment is extremely important to the entire developer community.

    Thus, the work of TMS should be viewed with respect as it is truly promising. However, even more is what UniGui has been doing through Web development and the very impressive advances in ExtJS 6 versions.

    The UniGui Team is to be congratulated, as we say here.

    I would also like improvements, especially with regard to performance and large and complex projects, to be faster.

    But that's not easy with a small team. It is a serious and hard mission.

    • Upvote 1
  9. It can be done like this:

    Quote

    procedure TMainForm.UniFormCreate(Sender: TObject);
    begin
      ...
      // Custom bg and font from the text editor
      with uHTMLMemo do 
        JSInterface.JSAddListener('initialize', 'function(edhtm){ '+
                                  'const bodyArea = edhtm.getEditorBody(); '+
                                  'bodyArea.style["background-color"] = "#B3FFD9"; '+
                                  'bodyArea.style["font-family"] = "Helvetica, Arial, sans-serif"; '+
                                  'bodyArea.style["font-size"] = "14px"; }');
    end;

    Enjoy

  10. On 22/04/2019 at 09:51, CoderU said:

    Como adicionar botão ou ícone showpassword ou não

    Hi,

    There are several ways to do what you want. I use a 3 sec timer to display the password and re-hide. As follows:

    procedure TFRPW.iEyeClick(Sender: TObject);
    begin //Show secret password
       UniTimer.Enabled := true;
       Ed1.PasswordChar := #0;
    end;
    
    
    procedure TFRPW.UniTimerTimer(Sender: TObject);
    begin //Hide password
      UniTimer.Enabled := false;
      Ed1.PasswordChar := #42; //joker char
    end;

     

×
×
  • Create New...