Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. Voce pode fazer de 2 maneiras: 1 - utilize a opção de menu File > Save As... salve o formulario no diretório do outro projeto 2 - clique no botão < Add file to project ( Shift+F11 ) e adicione a cópia do seu form ao novo projeto abraço
  2. Parece que voce não entendeu qual a utilidade do TDataModule ... veja: Veja que o conteúdo que aparece no seu TDataModule varia em função dos componentes que voce inclui nele ... se voce está seguindo pela video aula pode ser que não tenha sido mostrado todo conteudo do TDataModule . procure ver a descrição dos componentes pelo Help do Delphi ( F1 ) abraço
  3. Escreva exatamente o que deseja fazer no seu programa
  4. Veja onde está o erro: var I: Integer; begin for i := 0 to Pred(Ds.DataSet.FieldCount) do begin if Ds.DataSet.Fields[I].DataType in [ftString,ftWideString,ftFixedChar] then Combobox1.Itens.Add(Ds.DataSet.Fields[i].FieldName); end; end; o correto: var I: Integer; begin for i := 0 to Ds.DataSet.FieldCount-1 do begin if Ds.DataSet.Fields[I].DataType in [ftString,ftWideString,ftFixedChar] then Combobox1.Itens.Add(Ds.DataSet.Fields[i].FieldName); end; end; abraço
  5. OK ... se alguém precisar de uma rotina de backup e restauração de banco de dados usando o componente TBackup veja este link http://scriptbrasil.com.br/forum/index.php...st&p=574187 abraço
  6. Eu usaria o delphi for php se quizesse acessar o banco de dados diretamente ( somente atravez de código ) , esconder o código fonte para não aparecer na pagina e esse programa ficasse no proprio site, ou seja, teria que entrar na pagina para poder acessar o programa.... entretanto somente usaria o programa alguém que estivesse cadastro e com senha de acesso. usando um programa local, somente voce ou um cliente pode acessar o banco de dados remotamente ... a vantagem em usar o delphi for php é a velocidade, já que o programa e o banco de dados já estão no mesmo local mas nesse caso, uma falha na conexão impediria o uso do programa ... por isso prefiro trabalhar com um banco de dados local e fazer a atualização no banco de dados remoto abraço
  7. já fiz alguns testes usando delphi 5 e delphi 7 com acesso remoto a banco de dados MySQL ... funcionou perfeitamente em provedores windows e tive certos problemas com provedores linux a velocidade de transmissão dos dados fica a cargo de sua conexão e do proprio provedor a segurança dos dados é outro fator a se levar em conta ... se for de nível crítico não é qualquer provedor que poderá garantir esse sigilo. outra coisa a se levar em conta, quando voce faz um programa com acesso remoto, é que se o acesso cair ou falhar, voce deve ter em mente que será necessario um banco de dados local com atualização automatica do banco de dados remoto assim que a conexão for restabelecida a conexão com o banco de dados MySQL remoto voce pode fazer através dos componentes Zeos lembre-se tambem que quanto menos registros trafegarem pela rede melhor será a performance do programa abraço
  8. Poderia lhe informar vários ... mas depende do quanto pode gastar e qual o grau de segurança que voce quer para os seus dados mas antes de escolher veja este artigo: http://www.onlineweb.com.br/pages/servicos/faq/faq7.php abraço
  9. Veja no exemplo quais bandas foram utilizadas ... procure entender a lógica da construção e então aplicar o mesmo principio ao rave veja tambem se encontra alguma coisa no forum http://scriptbrasil.com.br/forum/index.php...te=rave+reports abraço
  10. Sim ... toda vez que for inserir um registro novo, voce deve colocar o valor para esse campo S ou N No caso de uma tabela com muitos registros em que voce tenha adicionado um campo desse tipo, voce poderá preencher os campos usando o Database Desktop do proprio Delphi abraço
  11. Na verdade qualquer provedor pode dar acesso remoto ao banco de dados MySql, depende somente da política de acesso desse provedor. abraço
  12. Alguns exemplos: http://www.planetadelphi.com.br/dica/5080/...-interbase(ibx) http://scriptbrasil.com.br/forum/index.php?showtopic=82775 http://www.fabricio.pro.br/default.asp?ACT...;id=1&mnu=1 http://www.devmedia.com.br/articles/viewcomp.asp?comp=1861 ou Pesquise no forum http://scriptbrasil.com.br/forum/index.php...highlite=backup abraço
  13. Voce viu o exemplo que te passei ??? C:\Arquivos de programas\Borland\Delphi5\Demos\Quickrpt\Qr3 veja a opção: Grouping and subtotaling abraço
  14. Nesse caso voce pode usar assim: var Form1: TForm1; AbaAnterior : integer = 0; implementation {$R *.DFM} function TForm1.CheckAdEditEmpty: Boolean; var n : LongInt; begin //verifica todos os TEdits do Form para ver se tem algum vazio //retorna TRUE se houver algum vazio Result := False; for n := 0 to (ComponentCount - 1) do begin if (Components[n].ClassType = TEdit) then begin if TEdit(Components[n]).Text = '' then begin Result := True; Exit; end; end; end; end; procedure TForm1.PageControl1Change(Sender: TObject); begin if CheckAdEditEmpty = true then begin PageControl1.ActivePageIndex := AbaAnterior; end else begin AbaAnterior := PageControl1.ActivePageIndex; end; end; abraço
  15. Instale o Sql Server 2005 Express que é gratuito http://www.microsoft.com/downloads/details...48-dcc397514b41 depois faça: 1. Restore Database... 2. Na janela de restore, escolha destination to restore, To database: <nome do banco que irá receber o restore> 3. Em Source for restore, From device: <escolha o arquivo .bak para restaurar> 4. Abaixo, marque a opção em Select the backup sets to restore: 5. Agora, na lateral esquerda, clique em Options 6. Marque a opção Overwrite the existing database Obs.: Esta operação irá sobrescrever o Banco existente abraço
  16. Veja se não é o BDE... o BDE 16 ou 32 bits não roda com SO de 64 bits, voce deve trocar o BDE para essa versão abraço
  17. todos os registros com esse campo deverá estar preenchido com S ou N .... se o campo estiver Null o DBCheckBox ficará sombreado abraço
  18. É voce está enferrujado .... rs existem outras maneiras exemplos: procedure TForm1.Button1Click(Sender: TObject); begin // Deixa invisivel as tabsheet 1 e 2 PageControl1.Pages[1].TabVisible:=false; PageControl1.Pages[2].TabVisible:=false; end; procedure TForm1.Button4Click(Sender: TObject); begin // Deixa desabilitada as tabsheet 1 e 2 PageControl1.Pages[1].Enabled:=false; PageControl1.Pages[2].Enabled:=false; end; procedure TForm1.Button2Click(Sender: TObject); var i : integer; begin // Controlando os tabsheets for I := 0 to ComponentCount - 1 do begin if ( Components[ I ] is TTabSheet ) then begin if (( Components[ I ] as TTabSheet ).Name <> 'NomedoTabSheet' ) then (Components[ I ] as TTabSheet ).TabVisible := False else (Components[ I ] as TTabSheet ).TabVisible := True; end; end; end; abraço
  19. Esse é o código que está na pagina ... veja se ele está correto <html DIR=ltr > <head> <title>Unit1</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="vcl/js/common.js"></script> <script type="text/javascript">var Unit1=new Object(Object);</script> <script type="text/javascript"> <!-- function Edit1_updatehidden(event) { edit=findObj('Edit1'); hidden=findObj('Edit1_hidden'); hidden.value=edit.value; } function Button1ClickWrapper(event, hiddenfield, submitvalue, wrappedfunc) { var event = event || window.event; submit1=true; submit2=true; if (typeof(wrappedfunc) == 'function') submit1=wrappedfunc(event); hiddenfield.value = submitvalue; form = hiddenfield.form; if ((form) && (form.onsubmit) && (typeof(form.onsubmit) == 'function')) submit2=form.onsubmit(); if ((submit1) && (submit2)) form.submit(); return false; } --> </script> </head> <body style=" margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; " > <form style="margin-bottom: 0" id="Unit1" name="Unit1" method="post" action="/delphiphp/amigos.php"><input type="hidden" name="Edit1_hidden" value=""><input type="hidden" id="Button1SubmitEvent" name="Button1SubmitEvent" value="" /> <table width="800" style="height:600px" border="0" cellpadding="0" cellspacing="0" ><tr><td valign="top"> <div id="Edit1_outer" style="Z-INDEX: 0; LEFT: 408px; WIDTH: 121px; POSITION: absolute; TOP: 144px; HEIGHT: 21px"> <input type="text" id="Edit1" onchange="return Edit1_updatehidden(event)" name="Edit1" value="" style=" font-family: Verdana; font-size: 10px; height:20px;width:121px;" tabindex="0" /> </div> <div id="Label1_outer" style="Z-INDEX: 1; LEFT: 344px; WIDTH: 75px; POSITION: absolute; TOP: 236px; HEIGHT: 13px"> <div id="Label1" style=" font-family: Verdana; font-size: 10px; height:13px;width:75px;" >Teste</div> </div> <div id="Button1_outer" style="Z-INDEX: 2; LEFT: 296px; WIDTH: 75px; POSITION: absolute; TOP: 144px; HEIGHT: 22px"> <input type="submit" id="Button1" name="Button1" value="Click" onclick="return Button1ClickWrapper(event, findObj('Button1SubmitEvent'), 'Button1_Button1Click')" style=" font-family: Verdana; font-size: 10px; height:22px;width:75px;" tabindex="0" /> </div> <div id="Label2_outer" style="Z-INDEX: 3; LEFT: 368px; WIDTH: 165px; POSITION: absolute; TOP: 56px; HEIGHT: 13px"> <div id="Label2" style=" font-family: Verdana; font-size: 10px; height:13px;width:165px;" >Teste ao Programa</div> </div> </td></tr></table> </form></body> </html> <!-- Unit1 end --> abraço
  20. Para que o CheckBox não fique cinza (como estivesse desabilitado) no campo ValueChecked colocar o valor correspondente o tamanho do campo. Exemplo: Se o campo for Varchar(1) coloque só a Letra S (Sim) no campo ValueChecked e a letra N (Não) no campo ValueUnchecked. Se o campo for Logical coloque só a palavra True (Verdadeiro) no campo ValueChecked e a letra False (Falso) no campo ValueUnchecked. Ou seja, os campos deverão estar preenchidos .... se o campo estiver Null o DBCheckBox ficará sombreado Na opção AllowGrayed =False. abraço
  21. funciona sim ... faça testes com rotinas separadas para poder compreender o seu funcionamento atraves do delphi abraço
  22. Esse problema ocorre quando o seu HD está com Bad Clusters na área do HD onde esta instalado o Delphi ( isso acaba provocando corrupção de alguns arquivos ) .... se desistalar o delphi e instalar outro softaware e depois instalar novamente o delphi, verá que o erro não ocorrerá mais. OBS: verifique se não existem Bad Clusters em seu HD msg de erro: " Error Creating form: Access violation at address 40003C4C in module 'Vcl50.bpl'. Read of address 5201D9F4 msg de erro: " Erro criando o form: Violação de endereço 40003C4C no modulo 'Vcl50.bpl'. Lendo o endereço 5201D9F4 Outra sugestão: renomeie o arquivo 'Vcl50.bpl' para 'Vcl50X.bpl' e copie o mesmo arquivo de outro micro ou mesmo do CD de instalação para a mesma pasta onde ele se econtra e faça o teste. abraço
  23. Procure por um exemplo feito no delphi para o quicreport na pasta Demos ... o principio sera o mesmo para o Rave C:\Arquivos de programas\Borland\Delphi5\Demos\Quickrpt\Qr3 veja a opção: Grouping and subtotaling abraço
  24. No exemplo, ele funciona perfeitamente se voce não rolar o dbgrid ... quando voce rola ele perde a referencia da 1ª linha e bagunça o restante... a dica é fazer com que a referencia da linha não se perca em relação ao tamanho do dbgrid ( ou seja a quantidade de linhas visiveis no dbgrid ). unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, Db, DBTables; type TForm1 = class(TForm) Query1: TQuery; Query1CODPRO: TStringField; Query1DESCRI: TStringField; DataSource1: TDataSource; DBGrid1: TDBGrid; procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; cc : integer = 14; cr : integer = 0; cx : integer = 0; implementation {$R *.DFM} type TMyDBGrid = class(TDBGrid) end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var R, Rx : TRect; begin inc(cx); R := Rect; Dec(R.Bottom,0); if cx = 1 then Rx := R; If odd(query1.RecNo) then begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= cl3DLight; if (cc = 14) and (Length(trim(Query1DESCRI.Value)) > 84) then // o nº 84 é o tamanho da quebra do texto begin cc := cc + 14; // o nº 14 é a altura da linha TMyDBGrid(DBGrid1).RowHeights[query1.RecNo] := cc; end else cc := 14; end else begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= clWhite; if (cc = 14) and (Length(trim(Query1DESCRI.Value)) > 84) then begin cc := cc + 14; TMyDBGrid(DBGrid1).RowHeights[query1.RecNo] := cc; end else cc := 14; end; if (gdSelected in state) then DBGrid1.Canvas.Font.Color:= clred else DBGrid1.Canvas.Font.Color:= clBlack; if Column.Field = Query1DESCRI Then begin if Length(Query1DESCRI.Value) < 84 then begin R := Rx; TMyDBGrid(DBGrid1).RowHeights[query1.RecNo] := 0; // voltar a altura normal end else TMyDBGrid(DBGrid1).RowHeights[query1.RecNo] := 14; // tamanho da altura com 1 quebra de linha DBGrid1.Canvas.FillRect(Rect); DrawText(DBGrid1.Canvas.Handle,PChar(Query1DESCRI.Value),Length(Query1DESCRI.Value),R,DT_WORDBREAK); cr := DrawText(DBGrid1.Canvas.Handle,PChar(Query1DESCRI.Value),Length(Query1DESCRI.Value),R,DT_WORDBREAK); TMyDBGrid(DBGrid1).RowCount := query1.RecordCount; end; end; end. abraço
  25. O dbcheckbox é ligado a um campo de sua tabela ... se voce abrir a tabela e o registro estiver em um campo que não esteja vazio, ele ficara ticado ou não dependendo do conteudo desse campo. para que o dbcheckbox fique em branco, voce tem que abrir a sua tabela e mandar o ponteiro do registro para um registro vazio. seria o mesmo que fazer um Last e um Append na tabela ... nesse caso o dbcheckbox fica em branco abraço
×
×
  • Criar Novo...