Jump to content

NelsonFS

uniGUI Subscriber
  • Posts

    108
  • Joined

  • Last visited

  • Days Won

    9

Posts posted by NelsonFS

  1. Olá Flávio

     

    Dá para fazer sim! Tenho já projetos com dezenas de forms no unigui.

    Funciona bem, só que algumas coisas você terá que adaptar pois não funciona exatamente como no desktop.

    Mas tudo tem um jeito, é só se adaptar.

    te+

  2. Já pensei realmente em fazer esse conversor.

    Só que de uma forma diferente, seria dois clientdataset em memoria que salvaria os dados em arquivos .DAT.

    O segundo, teria relação com o primeiro, indicando para cada tipo de objeto, aquelas propriedades que seriam removidas ou definidas como padrão.

    Depois em cada form, seria incluso as classes do unigui. Para retirar as classes que não seriam mais necessárias, aí é mais complicado pois poder ter dezenas, então poderia sim ter uma configuração para listar as que seriam removidas.

    Por fim, recriaria a cláusula de inicialização, basta localizar a clausula de inicialização, colocar antes a variavel (corrigir a que estava) e depois da inicialização incluir o codigo que instância a variavel.

    Basicamente é isso. Se você quiser ver dessa forma, posso te dar uma mão. Não é tão difícil assim, nada que vários loops em um objeto memo que carregou os dados não resolva.

    Ou então fica como uma ideia. Abração..

  3. Hi,

     

    Everytime we recompile application, you must close in traybar and refresh browser page.

    The tip will automatically close application and start a new page in default browser.

     

    In Project, Options, Build Events,Pre-Build, write command:

      taskkill /F /IM program.exe /T

    procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject);
    begin
      if self.StandAloneServer then //if you need this, if not, remove it.
        ExploreWeb('http://localhost:8077'); //auto start browser
    end;

    procedure ExploreWeb(page:PChar);
    var Returnvalue: integer;
    begin
      ReturnValue := ShellExecute(0, 'open', page, nil, nil,SW_SHOWNORMAL);
      if ReturnValue <= 32 then
         begin
         case Returnvalue of
              0 : MessageBox(0,'Error: Out of memory','Error',0);
              ERROR_FILE_NOT_FOUND: MessageBox(0,'Error: File not found','Error',0);
              ERROR_PATH_NOT_FOUND: MessageBox(0,'Error: Directory not found','Error',0);
              ERROR_BAD_FORMAT    : MessageBox(0,'Error: Wrong format in EXE','Error',0);
         else
              MessageBox(0,PChar('Error Nr: '+IntToStr(Returnvalue)+' inShellExecute'),'Error',0)
         end;
      end;
    end;

     

    procedure TFMainForm.UniFormShow(Sender: TObject);
    begin

        //show frame/form to login only if we are not debuging...

        if  (DebugHook = 0) then
        begin
          FLogin.ShowModal;

         ...

        end;

    end;

    • Like 1
    • Upvote 4
  4. Varias situações podem levar a esse tipo de erro.

    1 - Acesso a pagina inicial/login com o banco já aberto. Na verdade deve ser aberto a conexão com o banco somente depois digitado o usuário e senha e dado em OK. Nesse caso, o usuário pode simplesmente ter deixado a tela aberta e não feito login, assim a sessão expira por não ter concluido.

    2 - Atingido o tempo limite, passou muito tempo sem mexer no sistema, ai é desconectado automaticamente a sessão. Tente deixar uma sessão aberta muito tempo em uma máquina na mesma rede do servidor, sem mexer nela, até várias horas, depois veja se fechou.

    3 - Excesso de conexões simultâneas, nesse caso, a demora em responder uma sessão por outras estarem sobrecarregando, expira a sessão que não esta pedindo uma tarefa, talvez por uma conexão lenta ou mesmo travamento da aplicação em determinado momento por estar fazendo uma tarefa pesada.

    4 - Bug no sistema, pode ter alguma instrução que derrube a conexão por ter ocorrido uma excessão.. acredito que não seja seu caso.

    5 - Parâmetros do windows/firewall, verifique se tem algo no sistema que possa estar derrubando. Tente deixar sem firewall por um tempo. Também outros programas como antispywares podem influenciar por filtrarem conexões TCP.

    6 - Crie um teste pequeno: Crie um programa pequeno no UNIGUI que escute outra porta (logico) e verifique se ele também cai depois de várias conexões.

    Em resumo.. tem que verificar tudo.. te+

  5. enviada.

     

    t+

     

    Alguem que tenha essa versão guardada q possa me passar por email?

    os dois instaladores se possivel.

     

    pode mandar para ajlsj@msn.com

     

    desde já agradeço.

  6. Problem is with the attached Field which is a lookup field itself. Currently UniGUI doesn't properly handle editing fkLookup fields. I will try to fix this in next version.

     

    3 issues logged:

     

    0001273 UniDBGrid: Can not edit a Field when Field is a LookupField

    0001272 UniDBGrid: Cell must show a picklist when Field is a LookupField

    0001271 UniDBLookupCombo: Combo Text is not shown when attached DataField is a LookupField

     

    when the fixes will come out? I need it very much. In a database is very important to have a search on the grid and save correctly in the database.

  7. Hi,

    I use objects for many years as Fast-Script to write code at run-time, saved on database and always be modified in real-time.

    I wonder if I can have an object at run-time on UNIGUI able to modify the form and then be able to apply code at run-time with objects as Fast-Script or RemObjects Pascal Script.

    I think it can be very useful to manage a quick maintenance of our software over the Web without changing the application .exe.

     

    What do you think?

     

    That would be very interesting indeed.

    Send us an example ... how you did it!

    It would be nice to see working.

     

     

  8. I'll try to do it. Thanks for the explanation.

     

     

    try this..

     

    unit Funcoes_Traducao_u;
    
    {
    Objetivo: Traduzir automaticamente todas as mensagens do inglês
    Motivo: O UniGUI da versão atual não tem função de localização das mensagens internas do Delphi
       	No TUniServerModule tem a propriedade ExtLocate que tem que ficar pt_BR para tradução
       	de algumas mensagens para portugues, mas isso será somente para algumas e para Web.
       	Usar o tradutor do delphi vai duplicar o projeto e complicar o processo de desenvolvimento.
    Fonte: http://leandropiga.nothus.com.br/?p=38
    Forma de utilização: Basta adicionar essa unit no projeto.
    Atualizações: Para traduzir outras mensagens, deve-se buscar nos arquivos de constantes
     do delphi (Windows, Consts, DBConsts, VDBConsts) a identificação da mensagem e
     substituir ela conforme abaixo pelo novo nome.
    }
    
    interface
    
    uses Windows, Consts, DBConsts, VDBConsts;
    
     procedure SetResourceString(AResString: PResStringRec; ANewValue: PChar);
    
    const
     SNewMsgDlgConfirm: PChar = 'Confirmação';
     SNewMsgDlgYes: PChar = 'Sim';
     SMewMsgDlgNo: PChar = 'Não';
     SNewMsgDlgOK: PChar = 'Ok';
     SNewMsgDlgCancel: PChar = 'Cancelar';
     SNewDeleteRecordQuestion: PChar = 'Excluir Registro?';
     SNewDeleteRecord: PChar = 'Excluir Registro?';
    
    implementation
    
    procedure SetResourceString(AResString: PResStringRec; ANewValue: PChar);
    var
     POldProtect: DWORD;
    begin
     VirtualProtect(AResString, SizeOf(AResString^), PAGE_EXECUTE_READWRITE, @POldProtect);
     AResString^.Identifier := Integer(ANewValue);
     VirtualProtect(AResString, SizeOf(AResString^), POldProtect, @POldProtect);
    end;
    
    initialization
     SetResourceString(@SMsgDlgConfirm, SNewMsgDlgConfirm);
     SetResourceString(@SMsgDlgYes, SNewMsgDlgYes);
     SetResourceString(@SMsgDlgNo, SMewMsgDlgNo);
     SetResourceString(@SMsgDlgOK, SNewMsgDlgOK);
     SetResourceString(@SMsgDlgCancel, SNewMsgDlgCancel);
     SetResourceString(@SDeleteRecordQuestion, SNewDeleteRecordQuestion);
     SetResourceString(@SDeleteRecord, SNewDeleteRecord);
    
    end.
    
    

×
×
  • Create New...