Ir para conteúdo
Fórum Script Brasil

Eder Moraes

Membros
  • Total de itens

    98
  • Registro em

  • Última visita

Tudo que Eder Moraes postou

  1. if (dbgrid1.focused) and (dbgrid1.datasource.dataset = Bof) then begin //seus comandos end; //para verificar se está no final Eof ao inveis de Bof
  2. Muito simples: faça o seguinte... copie o arquivo gds32.dll para a pasta do seu app. Logo apos iso crie um arquivo de configuração para armazenar a linha do arquivo de dados. compartilhe a pasta ou unidade onde o app está. na maquina terminal monte a unidade de rede compartilhada no servidor. ainda nos terminais configure o arquivo de configuração que falei antes. não tem necessidade de você instalar o interbase em cada uma das maquinas terminais. linhas possiveis de se usar e todos usam o direcionamente da maquina servidor pelo IP ou nome da maquina: conexão named pipe: \\192.168.0.1\c:\pastadoprograma\Dados\banco.gdb conexão por ip: 192.168.0.1:c:\pastadoprograma\Dados\banco.gdb o arquivo gds32.dll é um cliente terminal para conexão ao servidor e por isso não é necessária uma nova instalação do interbase. falow...
  3. Primeiramente crie um form splash. faça com que ele seja o form padrão acrescente um timer coloque um componente progressbar nele link o form com o modulo que abre as tabelas: declare em implementations uses nome_da_unit_do_modulo; procedure ..... var i,x:integer; begin with modulo do begin x:=ComponentCount -1; progressbar.max := x; for i:=0 to ComponentCount -1 do begin if Components is TTable then begin //voce pode especificar outro componente ex: TIBQuery ou TQuery TTable(Components).Open; progressbar.position := i; if i = x then begin Break; frm_splash.hide; frm_menu.show; {ou use o create isso fica a seu criterio} end else continue; end; end; end; enquanto ele faz a abertura das tabelas voce coloca algo para que os usuarios não tentem abri-lo novamente por ex: um label dizendo aguarde... carregando tabelas....
  4. É possivel sim amigo, posso lhe dar um dica. use uma tabela no seu banco de dados que armazene o ip ou nome do computador conectado ao banco. Agora faça um app servidor que liste todos da conexao respectiva na tabela, por um dbgrid, crie os botoes para apagar registros selecionados no dbgrid. Depois disso no programa que está sendo executado por varias maquinas acresente um timer que verifique se a maquina ainda está na tabela por ip ou nome do computador se não tiver faça com que o timer finalize o app com o comando " halt ". Voce pode tambem usar APIs do windows mais se torna um pouco mais complicado. valeu...
  5. procedure Tfrmclientes.tratabt; begin btnovo.Enabled := not btnovo.Enabled; btgravar.enabled := not btgravar.enabled; btcancelar.Enabled := not btcancelar.Enabled; btpesquisar.enabled := not btpesquisar.enabled; btalterar.enabled := not btalterar.enabled; btfechar.Enabled := not btfechar.Enabled; btexcluir.enabled := not btexcluir.enabled; dbnavigator.enabled := not dbnavigator.enabled; btimprimir.Enabled := not btimprimir.Enabled; end; //deixe alguns bts ativos e outros inativos e quando executar os procedimentos de cada um chame o tratabt, e assim ele inverterá os ativos pelos inativos
  6. Amigo isso pode ser um problema na aplicacao Rave, no componente RvProject use a propriedade "Store" que faz com que o relatorio fique seja carregado para dentro de sua aplicacao, Mais todas as vezes que alterar algo no relatorio externo voce tem que executar novamente o Store.
  7. Eder Moraes

    While

    Forma de usar: procedure..... var valor:real; begin with nomedatabelaouconsulta, label1 do begin first; while not eof do begin valor := valor + Fieldbyname('nomedocampo').asfloat; next; end; caption := formatfloat('###,##0.00',valor); end; end; //Tradução: enquanto não for o fim da tabela faça: soma os valores do campo. //voce tem que colocar o first no antes do loop pois indica onde tudo vai comecar o eof significa endoffile final do arquivo ou seja enquanto não chegar o final do arquivo faça. e o next pula de registro a registro. mangou. no with atribui-se propriedades a varios componentes contanto que sejam de tipos diferentes. falows manow... ____________________________________ Eder Moraes
  8. Eder Moraes

    Xp

    Eu sei como remover esta notificação do sistema. E então fiz um programa em delphi que altera algumas chaves no registro e permite que seja desinstalada somente esta atualização feita automaticamente pelo sistema. E depois você continua atualizando normalmente. ah! a o app não está disponivel para download, ainda.
  9. Eder Moraes

    Consulta

    Dê uma olhadinha aqui... http://scriptbrasil.com.br/forum/index.php?showtopic=83299
  10. http://delphi.about.com/cs/toppicks/tp/aatpmysql.htm http://www.productivity.org/projects/tmysql/ http://delphi.about.com/gi/dynamic/offsite...LComponents.htm Aqui nestes sites tem alguns components especificos, mais infelizmente ainda não testei para dar o veredito, se você quizer fazer o teste. E neste você aprende a usá-los http://help.scibit.com/mysqlvcl/
  11. Tenho outro exemplo tambem muito útil pra você: procedure Tfrm_alunos.Edit1Change(Sender: TObject); var campo,inicio,fim:string; begin if radiobutton1.Checked then begin campo := 'codigo'; inicio := '="'; fim := '"'; end; if radiobutton2.Checked then begin campo := 'aluno'; inicio := 'like "%'; fim := '%"'; end; if radiobutton3.Checked then begin campo := 'tutor'; inicio := 'like "%'; fim := '%"'; end; with dm.qr_alunos do begin if Active then close; sql.Clear; sql.Add('SELECT * FROM alunos WHERE '+campo+' '+inicio+''+edit1.Text+''+fim); Open; end end; //de acordo com radiobutton1 selecionado ele muda a forma de pesquisa. //ou voce pode também usar o locate('nomeCampo',edit1.text,[loPartialKey]); caso não queira limpar a consulta.
  12. { Coloque todos os componentes dbedits em panel1 e os botoes em outro panel ou fora do panel1 no panel1 coloque na propriedade enabled false. assim como nos botoes salvar e cancelar. Para facilitar nos botões declare em private; procedure trata_bt; //agora segure ctrl+shift e pressione C ele ira criar o procedimento trata_bt(...); agora coloque isto no procedimento; } panel1.enabled := not panel1.enabled; Btnincluir.enabled := not Btnincluir.enabled; Btneditar.enabled := not Btneditar.enabled; Btnsalvar.Enabled := not Btnsalvar.Enabled; Btncancelar.enabled := not Btncancelar.enabled; btnexcluir.Enabled := not btnexcluir.Enabled; btnsair.Enabled := not btnsair.Enabled; { para voce chamar o procedimento coloque na procedure do botao btnincluir } trata_bt(); //e os comandos para o controle do banco como por exemplo dm.tb_func.appen; { OBS: quanto voce chamar o procedimento ele desabilita ou habilita os botoes inclusive o panel. sem a necessidade de repetir os mesmos passo para todos os botoes. VALEU!!!! }
  13. //Voce pode usar o componente UpdateSQL com ele você pode inserir alterar ou excluir atraves de uma query. //ou with table1 do begin indexname := 'ind_codigo'; Findkey([dbgrid1.columns[0].field.text]); edit; end; //dai você pode alterar o valor dos campos //você pode tambem usar o locate ao invés do findkey locate(table1,dbgrid1.columns[0].field.text,[lopartialkey]); // e depois editar os valores dos campos.
  14. Eder Moraes

    Erro Com Acento

    Evitando caracteres com acento A função abaixo pega um string informada como parâmetro e retira todas as letras acentuadas substituindo-as por letras correspondentes sem acento. function AnsiToAscii ( str: String ): String; var i: Integer; begin for i := 1 to Length ( str ) do case str of 'á': str := 'a'; 'é': str := 'e'; 'í': str := 'i'; 'ó': str := 'o'; 'ú': str := 'u'; 'à': str := 'a'; 'è': str := 'e'; 'ì': str := 'i'; 'ò': str := 'o'; 'ù': str := 'u'; 'â': str := 'a'; 'ê': str := 'e'; 'î': str := 'i'; 'ô': str := 'o'; 'û': str := 'u'; 'ä': str := 'a'; 'ë': str := 'e'; 'ï': str := 'i'; 'ö': str := 'o'; 'ü': str := 'u'; 'ã': str := 'a'; 'õ': str := 'o'; 'não': str := 'n'; 'ç': str := 'c'; 'Á': str := 'A'; 'É': str := 'E'; 'Í': str := 'I'; 'Ó': str := 'O'; 'Ú': str := 'U'; 'À': str := 'A'; 'È': str := 'E'; 'Ì': str := 'I'; 'Ò': str := 'O'; 'Ù': str := 'U'; 'Â': str := 'A'; 'Ê': str := 'E'; 'Î': str := 'I'; 'Ô': str := 'O'; 'Û': str := 'U'; 'Ä': str := 'A'; 'Ë': str := 'E'; 'Ï': str := 'I'; 'Ö': str := 'O'; 'Ü': str := 'U'; 'Ã': str := 'A'; 'Õ': str := 'O'; 'não': str := 'N'; 'Ç': str := 'C'; end; Result := str; end; Dessa forma voce evita acentos ou outro caracter em uma inclusao ou consulta. isso é só uma dica se não quiser usar não é obrigada.
  15. //Como saber se o aplicativo já foi aberto //Insira o código abaixo dentro do arquivo .DPR de sua aplicação {$R *.RES} begin Application.Title := ''; //coloque o titulo do aplicativo Application.HelpFile := ''; //o arquivo de ajuda if HPrevInst = 0 then begin F_Splash := TF_Splash.create(Application); F_Splash.Show; Application.CreateForm(TF_Menu, F_Menu); Application.CreateForm(TF_Error, F_Error); Application.CreateForm(TF_Form1, F_From1); Application.CreateForm(TF_Form2, F_Form2j); Application.Run; end else messagedlg('O sistema já foi inicializado!',mtinformation,[mbok],0); end.
  16. hackedit, abre em bin e traduz para asm e hex e permite editar em outras linguagens também ahhhhh o editor rapido do windows 98 também mostra o conteudo de uma dll
  17. Eder Moraes

    Quickrep

    Verifica se sua impressora força a impressão como retrato.
  18. Eder Moraes

    Textradevice

    Este componente que voce citou eu ainda não usei mais você pode exportar do quickrep Exportando para HTML: QuickReport.ExportToFilter(TQRHTMLDocumentFilter.Create('c:\teste.html')); Exportando para DOC ou TXT: QuickReport.ExportToFilter(TQRAsciiExportFilter.Create('c:\teste.doc')); Exportando para XLS: QuickReport.ExportToFilter(TQRXLSFilter.Create('c:\teste.xls'));
  19. //aqui vai um exemplo de como usar parametros em uma consulta mais tambem pode ser usado para inserção de dados acho que vai lhe ajuda um pouco // declare duas variaveis inicio e final Inicio := DateToStr(DateTimePicker1.Date); Final := DateToStr(DateTimePicker2.Date); Query1.Close; Query1.SQL.Clear; Query1.SQL.add('SELECT Nome,Empresa,FoneRes,FoneCom,Mala FROM Contatos WHERE Data >=:pInicial and Data<=:pFinal ORDER BY Nome'); Query1.ParamByName('pInicial').AsDateTime := StrToDate(Inicio); Query1.ParamByName('pFinal').AsDateTime := StrToDate(Final); Query1.Prepare; Query1.Open; end;
  20. //declare uma procedure limpatexto(); em public segure control, shift e C procedure Tfrm_menu.limpatexto; var n:integer; begin for n := 0 to ComponentCount -1 do begin if Components[n] is Tedit then Tedit(Components[n]).Text := ''; end; end; //agora quanto quiser limpar os tedits é só procedure form1.button1.cli........ begin limpatexto(); end;
  21. //Como separar termos de uma string usando comandos básicos como Delete, Copy e Pos e guardar os valores em um array. //Supondo que tenho um arquivo que o formato de cada linha seja "website|titulo|descricao|categoria", gostaria de enviar cada termo para um array e disponibilizar em um Listbox o website e a categoria. Difícil? Não. var MeuArray: array of array of string; // Em MeuArray tenho que: // MeuArray[0][0] = Website da 1ª linha // MeuArray[0][1] = Título da 1ª linha // MeuArray[0][2] = Descrição da 1ª linha // MeuArray[0][3] = Categoria da 1ª linha Arquivo: TStringList; // Arquivo é uma variável TStringList, que facilitará o uso das strings; LoopI,PosBarra: Integer; // Em LoopI será executado um "for". // PosBarra é a posição de "|". Linha: String; // Linha é a linha que está sendo executada no momento. begin Arquivo:=TStringList.Create; Arquivo.LoadFromFile('C:\Sites.txt'); // Abrir o arquivo C:\Sites.txt. SetLength(MeuArray,Arquivo.Count+1,4); // Definir o tamanho do array. for LoopI := 0 to Arquivo.Count -1 do // Fazer o "for". begin Linha:=Arquivo.Strings[LoopI]; // Linha atual. PosBarra:=Pos('|',Linha); MeuArray[LoopI][0] := Copy(Linha,1,PosBarra-1); Delete(Linha,1,PosBarra); // Deleta, porque já peguei valor do 1º PosBarra:=Pos('|',Linha); // Pega novamente a posição de "|" MeuArray[LoopI][1] := Copy(Linha,1,PosBarra-1); Delete(Linha,1,PosBarra); PosBarra:=Pos('|',Linha); MeuArray[LoopI][2] := Copy(Linha,1,PosBarra-1); Delete(Linha,1,PosBarra); PosBarra:=Pos('|',Linha); MeuArray[LoopI][3] := Linha; // É o que restou da variável Linha. ListBox1.Items.Add(MeuArray[LoopI][0]+': '+MeuArray[LoopI][2]); end; Arquivo.Free; end; //este arquivo pode ser substituido por uma variavel:textfile; ou até mesmo um tmemo ou outro componente como tedit
  22. with dados.Q_kits do begin close; sql.clear; sql.add ('SELECT * FROM TBL_kit WHERE ID_ORCA = '+dbedit1.text ); open; end; //insira um qrmemo no relatorio coloque true na object inspector para que ele se autoajuste a quantidade de linhas recebidas // autostr... true , agora acrescente estas linhas dados.Q_kits.first; while not dados.Q_kits.eof do begin qrmemo1.lines.add(dados.Q_kitsNOMEDOCAMPO1.AsString+'----'+dados.Q_kitsNOMEDOCAMPO2.AsString); dados.Q_kits.next; end; relatorio.quickrep1.preview; //não esqueça de quanto fechar a consulta apagar as linhas do memo.
  23. if edit_loja <> '' then begin if tabelaLOJA.findkey([edit_loja.text]) then begin edit_nomeLOJA.text := tabelalojaNOMEDOCAMPO.AsString; end end; //coloque no evento onchange do edit_loja
×
×
  • Criar Novo...