Jump to content

Nirlan

uniGUI Subscriber
  • Posts

    98
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Nirlan

  1. Nós concluímos em março desse ano um sistema de controle de estoque usando UNIGUI e Firebird 2.5 com servidor hospedado na Amazon. O mesmo já está em produção através do endereço www.estoquefacil.net Estamos concluindo agora um sistema de controle de abastecimentos e ainda este mês iniciaremos o sistema financeiro.
  2. Nirlan

    Mascara

    Até aonde eu sei, não é possível incluir máscara no DBEDIT. Eu criei uma função que pega o conteúdo digitado e o retorna formatado. Talvez seja possível com a utilização de javascript, mas eu não sei nada a esse respeito.
  3. Eu uso o firebird 2.5 charset ISO8859_1. Tive alguns problemas com gravação de letras maiúsculas no banco de dados, que eu resolvi conforme abaixo: clientdataset.fieldbyname("field_name").asString := AnsiUpperCase(uniedit1.text);
  4. uma possibilidade é a propriedade CHARSET na unit ServerModule. Eu uso iso-8859-1
  5. Pelo que eu sei, na 0.94 foi retirado o suporte para aplicações desktop. O foco será voltado para aplicações web. Houve uma pesquisa aqui no fórum a este respeito.
  6. Hi chefdackel, I needed to generate the application for 32-bit to work. In 64-bit it does not work.
  7. I'm using in a medium-sized project and I'm not having problems.
  8. Nirlan

    Limit forms

    I found a solution. The limitation problem only occurs when the application is generated for 64-bit. In 32-bit the problem does not occur.
  9. Encontrei uma solução. O problema de limitação somente ocorre quando o aplicativo é gerado para 64 bits. Em 32 bits o problema não ocorre.
  10. Para Flavio: Eu acredito que não é possível uma aplicação web acessar diretamente a porta LPT1. Me corrijam se eu estiver errado.
  11. Olá Eduardo, Possuo uma aplicação desktop com 112 forms e funciona normalmente. Você possui alguma aplicação unigui standalone com mais de 120 forms ? abraço Nirlan
  12. Nirlan

    Limit forms

    In the moment I use: login.pas main.pas mainmodule.pas servermodule.pas folder Model: 11 files .pas folder Controller: 11 files .pas folder View: 101 files .pas/.dfm One form uses 1 frame Main.pas call 71 forms 20.373 code lines file .EXE: 39.966.001 bytes Database: Firebird 2.5 to test, I will now try to divide the project into BPLS. thank you
  13. Nirlan

    Limit forms

    Delphi XE3 Pro Unigui 0.94.1024 - 64 bits Standalone Server My project today reached 71 forms being called from Main.pas. After inserting the form 71 the login form no longer appears or when it appears, the main form (mais.pas) does not appear. If I retreat, a form (any of them) the web application works normally. How do I increase this limit to 70 forms called from Main.pas? thank you.
  14. Delphi XE3 Pro Unigui 0.94.1024 - 64 bits Standalone Server O meu projeto atingiu hoje 71 forms sendo chamado a partir do main.pas. Após inserir o form 71 o form de login não aparece mais ou quando aparece, o form principal (mais.pas) não aparece. Se eu tiro um form (qualquer um deles) a aplicação web volta a funcionar normalmente. Como eu faço para aumentar este limite de 70 forms chamados a partir do main.pas ? obrigado.
  15. resolveu sim, muito obrigado.
  16. Quando eu altero o tamanho da fonte de letra do título de uma coluna no dbgrid, eu recebo a mensagem de erro "Cannot call method 'setStyle' of undefined", conforme imagem em anexo. Alguém também já passou por isso ?
  17. Estou usando WindowState como wsMaximized e testei com todos os tipos de bordas, mas o form principal não cobre toda a área do browser (testei com Chrome e Firefox), deixando um espaço livre à direita. Vejam a imagem em anexo. Alguém já teve este problema e conseguiu resolver ?
  18. Eu também estou tentando fazer dessa forma (TDI) mas por enquanto não consegui. Aqui no fórum eu cheguei a ver um exemplo, mas a pessoa não colocou os fontes. Procurei este post recentemente mas não o encontrei mais.
  19. Penso que na próxima versão do conversor, eu possa carregar o que vai ser substituído a partir de um arquivo txt, para evitar ter que recompilar o programa após cada alteração. Sugestões (com código fonte) são bem vindas !!
  20. eu fiz esse aplicativo no final de semana, e com certamente pode melhorar muito e por isso conto com auxílio de quem se interessar. segue o código fonte: // conversor vcl ==> uniGUI // beta 1 // 20/Out/2013 // Nirlan E. Fundão // MTG Softwares Ltda. unit Prog001; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, JvExMask, JvToolEdit, Vcl.Buttons; type TForm1 = class(TForm) GroupBox1: TGroupBox; frFileName: TJvFilenameEdit; GroupBox2: TGroupBox; Memo1: TMemo; BotaoOK: TBitBtn; GroupBox3: TGroupBox; Memo2: TMemo; procedure BotaoOKClick(Sender: TObject); private { Private declarations } vArray : array[1..70 , 1..70] of String; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.BotaoOKClick(Sender: TObject); var vPasFile : String; vDfmFile : String; I : Integer; begin // VCL vArray[ 01, 01 ] := 'TForm'; vArray[ 01, 02 ] := 'TUniForm'; vArray[ 02, 01 ] := 'TEdit'; vArray[ 02, 02 ] := 'TUniEdit'; vArray[ 03, 01 ] := 'TMaskEdit'; vArray[ 03, 02 ] := 'TUniEdit'; vArray[ 04, 01 ] := 'TPanel'; vArray[ 04, 02 ] := 'TUniPanel'; vArray[ 05, 01 ] := 'TLabel'; vArray[ 05, 02 ] := 'TUniLabel'; vArray[ 06, 01 ] := 'TBitBtn'; vArray[ 06, 02 ] := 'TUniBitBtn'; vArray[ 07, 01 ] := 'TGroupBox'; vArray[ 07, 02 ] := 'TUniGroupBox'; vArray[ 08, 01 ] := 'TSpeedButton'; vArray[ 08, 02 ] := 'TUniSpeedButton'; vArray[ 09, 01 ] := 'TCheckBox'; vArray[ 09, 02 ] := 'TUniCheckBox'; vArray[ 10, 01 ] := 'TButton'; vArray[ 10, 02 ] := 'TUniButton'; vArray[ 11, 01 ] := 'TListBox'; vArray[ 11, 02 ] := 'TUniListBox'; vArray[ 12, 01 ] := 'TComboBox'; vArray[ 12, 02 ] := 'TUniComboBox'; vArray[ 13, 01 ] := 'TImage'; vArray[ 13, 02 ] := 'TUniImage'; vArray[ 14, 01 ] := 'TMemo'; vArray[ 14, 02 ] := 'TUniMemo'; vArray[ 15, 01 ] := 'TTabControl'; vArray[ 15, 02 ] := 'TUniTabControl'; vArray[ 16, 01 ] := 'TPageControl'; vArray[ 16, 02 ] := 'TUniPageControl'; vArray[ 17, 01 ] := 'TSpinEdit'; vArray[ 17, 02 ] := 'TUniSpinEdit'; vArray[ 18, 01 ] := 'TScrollBox'; vArray[ 18, 02 ] := 'TUniScrollBox'; vArray[ 19, 01 ] := 'TRadioGroup'; vArray[ 19, 02 ] := 'TUniRadioGroup'; // VCL DB vArray[ 30, 01 ] := 'TDBEdit'; vArray[ 30, 02 ] := 'TUniDBEdit'; vArray[ 31, 01 ] := 'TDBLookupComboBox'; vArray[ 31, 02 ] := 'TUniDBLookupComboBox'; vArray[ 32, 01 ] := 'TDBGrid'; vArray[ 32, 02 ] := 'TUniDBGrid'; vArray[ 33, 01 ] := 'TDBNavigator'; vArray[ 33, 02 ] := 'TUniDBNavigator'; vArray[ 34, 01 ] := 'TDBListBox'; vArray[ 34, 02 ] := 'TUniDBListBox'; vArray[ 35, 01 ] := 'TDBComboBox'; vArray[ 35, 02 ] := 'TUniDBComboBox'; vArray[ 36, 01 ] := 'TDBImage'; vArray[ 36, 02 ] := 'TUniDBImage'; vArray[ 37, 01 ] := 'TDBMemo'; vArray[ 37, 02 ] := 'TUniDBMemo'; // Jedi Components vArray[ 50, 01 ] := 'TJvCalcEdit'; vArray[ 50, 02 ] := 'TUniNumberEdit'; vArray[ 51, 01 ] := 'TDBJvCalcEdit'; vArray[ 51, 02 ] := 'TUniDBNumberEdit'; vArray[ 52, 01 ] := 'TJVDateEdit'; vArray[ 52, 02 ] := 'TUniDateTimePicker'; vArray[ 53, 01 ] := 'TJVDBDateEdit'; vArray[ 53, 02 ] := 'TUniDBDateTimePicker'; vArray[ 54, 01 ] := 'TJvDBLookupCombo'; vArray[ 54, 02 ] := 'TUniDBLookupComboBox'; vArray[ 55, 01 ] := 'TJvSpinEdit'; vArray[ 55, 02 ] := 'TUniSpinEdit'; // Diversos vArray[ 60, 01 ] := 'Forms,'; vArray[ 60, 02 ] := 'Forms, uniGUIForm,'; vArray[ 61, 01 ] := 'Buttons,'; vArray[ 61, 02 ] := ''; vArray[ 62, 01 ] := 'Mask,'; vArray[ 62, 02 ] := ''; // Valida preenchimento if Trim(frFileName.Text) = '' then begin Application.MessageBox('O arquivo .PAS a ser convertido deve ser informado.', 'Atenção', mb_ok + mb_IconError ); Exit; end; vPasFile := LowerCase(frFileName.Text); vDfmFile := StringReplace(vPasFile, 'pas', 'dfm', [rfReplaceAll, rfIgnoreCase]); // Carrega arquivos GroupBox2.Caption := ' ' + vPasFile + ' '; GroupBox3.Caption := ' ' + vDfmFile + ' '; Memo1.Lines.Clear; Memo2.Lines.Clear; Memo1.Lines.LoadFromFile(vPasFile); Memo2.Lines.LoadFromFile(vDfmFile); for I := 1 to 70 do begin Memo1.Text := StringReplace(Memo1.Text, vArray[ I , 01], vArray[ I , 02 ], [rfReplaceAll, rfIgnoreCase]); Memo2.Text := StringReplace(Memo2.Text, vArray[ I , 01], vArray[ I , 02 ], [rfReplaceAll, rfIgnoreCase]); end; // Grava arquivos Memo1.Lines.SaveToFile(vPasFile); Memo2.Lines.SaveToFile(vDfmFile); ShowMessage('Arquivo convertido com sucesso.'); end; end.
  21. Nos últimos 40 dias comecei a desenvolver um sistema web em uniGUI tendo como base um software desktop desenvolvido em Delphi XE2. Basicamente eu crio um novo form uniGUI utilizando o form desktop como modelo. Quando me deparei com o form de cadastro de clientes ( e de fornecedores) que possuíam dezenas de campos. Bateu aquela preguiça. Pensei então em criar uma rota alternativa. Abri o .PAS e o DFM no bloco de notas e fazia a substituição de, por exemplo, Label para UniLabel, etc. Testei e deu certo. Mas havia outro problema, eu uso quase 80 componentes da paleta standart, data controls e ainda do Jedi. Os componentes do dbexpress e do report buider seriam reaproveitados. Seriam 80 busca/substituição para cada .PAS e a mesma quantidade no .DFM. A preguiça voltou. E teriam mais de 100 forms. Foi quando pensei, porque não existe um conversor ? Basicamente ele teria que abrir o .PAS e o .DFM por fora do delphi e fazer as substituições. Foi isso que eu fiz, e funcionou com relativo sucesso me poupando bastante tempo, pois precisava converter mais de 100 forms. Ao abrir o form convertido no sistema uniGUI ele vai dar um aviso relativo as propriedades que não existem, deve-se ignorar tudo e depois ao salvar ele adiciona as classes nas uses automaticamente. O que está faltando é um modo de retirar as classes não mais utilizadas da uses. Para adiantar eu mantenho a primeira linha da minha uses: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, uniGUIForm; e apago todo o resto. Peço para salvar e as classes corretas aparecem novamente. Sim, no meu conversor eu consegui incluir a uniGUIForm. Faltou ainda substituir o: var form1 : TForm1 por: function form1 : TForm1 Não posso fazer a busca pelo "var" pois existem outros "var" nas minhas functions e procedures Além disso o form1 pode ser form10, form40, etc Falta também incluir o código a seguir logo abaixo da linha {$R *.dfm}: function Form1: TForm1; begin Result := TForm1(DM.GetFormInstance(TForm1)); end; Posso afirmar que adianta muito o processo de conversão. Por isso disponibilizo em anexo. Conversor.zip
  22. Não. A compra só deve ser realizada para o desenvolvimento de aplicações comerciais.
  23. Nirlan

    alternativas

    Olá Luiz Agradeço pelas respostas. Vou aguardar o novo beta que terá suporte a criptografia de dados. Isso vai ser muito importante para a minha aplicação. Você disse que chega a ter 300 usuários simultâneos. Você poderia me informar qual a configuração do seu servidor ? Está usando apache, IIS ou o próprio servidor gerado pelo unigui ? Obrigado
  24. Nirlan

    alternativas

    Luiz, agradeço pela sua resposta. Você usa alguma criptografia para transmitir os dados da aplicação para o browser (e vice-versa) ? Como o meu projeto é de uma aplicação financeira, a proteção dos dados é um dos requisitos. Você não fica inseguro em basear o seu sistema em algo que ainda é beta ? Obrigado.
  25. Nirlan

    alternativas

    Olá pessoal, Vocês conhecem outras alternativas ao uniGUI no Delphi ? Nos últimos 15 dias eu voltei a testar o intraweb, raudus e elevate web builder. Nenhum me convenceu. Estou com a necessidade de desenvolver um sistema web ainda para este ano. Já começo a pensar em uma solução para usar o delphi somente como servidor datasnap. Testei várias IDE´s e a que achei com mais recursos foi o sencha architect 2. Mas a diferença de ambiente em relação ao delphi é enorme. Vocês possuem alguma sugestão ? Obrigado
×
×
  • Create New...