-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
De uma olhada neste post http://scriptbrasil.com.br/forum/index.php...st&p=491325 abraço
-
exemplo: Como ficaria o select procedure TForm1.ComboBox1Change(Sender: TObject); begin Query1.Active := FALSE; Query1.ParamS[0].AsString := TRIM(ComboBox1.Text)+'%'; Query1.Active := TRUE; IF Query1.RecordCount <> 0 THEN ComboBox1.Items.Add(Query1.Fields[0].AsString) else if MessageDlg('Não existe o registro no arquivo... gostaria de cadastrá-lo ?' , mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin //// comandos end; end; OBS: Modifique o codigo para o seu uso abraço
-
Então porque voce não compartilha a resolução do problema com os colegas ? abraço
-
Chamando um Relatorio feito no FasReport
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
with QryReceberVencer do begin close; sql.clear; sql.add('Select * From Contas_Recber where DtPag is null and (Dtpag >=:DtIni) and (DtPag <=:DtFin) and CodCli =:Cod'); ParamByName('DtIni').AsDateTime := TxtDtIni.Date; ParamByName('DtFin').AsDateTime := TxtDtFin.Date; ParamByName('Cod').AsString := TxtCod.Text; open; end; as varaveis TxtDtIni.Date, TxtDtFin.Date e TxtCod.Text; tem que receber os valores antes que esta rotina seja executada. exemplo: TxtDtIni.Date := DateEdit1.Date; TxtDtFin.Date := DateEdit2.Date; TxtCod.Text := 'A01'; with QryReceberVencer do begin close; sql.clear; sql.add('Select * From Contas_Recber where DtPag is null and (Dtpag >=:DtIni) and (DtPag <=:DtFin) and CodCli =:Cod'); ParamByName('DtIni').AsDateTime := TxtDtIni.Date; ParamByName('DtFin').AsDateTime := TxtDtFin.Date; ParamByName('Cod').AsString := TxtCod.Text; open; end; abraço -
sugetões: use o Wizard para isto. ou leia um pouco mais, para aprender como fazer isto http://www.editoraerica.com.br/indice.asp?...ma%C3%A7%C3%A3o abraço
-
já que voce é iniciante, começe pela maneira mais facil que é criando o form em tempo de design, para depois se aventurar nesse sentido. OBS: leia muito a respeito do delphi e sempre começe pelo basico. abraço
-
Outra maneira bem simples seria utilizar os componentes da paleta win3.1 FileListBox1 // lista todos os arquivos de um diretorio DirectoryListBox1 // lista todos os diretorios DriveComboBox1 // lista todos os drives FilterComboBox1 // filtra os arquivos pela extensão no forum já existe algo a respeito ... pesquise. abraço
-
1ª sugestão... voce pode montar um programa, que ficará pesquisando o banco de dados de tempos em tempos, verificando um campo chave, assim que ele for digitado. A partir dai, voce poderá lançar o código interno do programa que usa, no campo determinado, no mesmo banco de dados. 2ª sugestão... aprender como utilizar mensagns entre aplicações usando a função do delphi RegisterWindowMessage da API do windows. function RegisterWindowMessage(Str: Pchar):Word; O valor de retorno desta função é um valor inteio dentro do intervalo $C000 até $FFFF. Este valor é valido para ser usado com as funções SendMessage e PostMessage. O Parametro Str é uma string terminada em nulo que especifica a mensagem a ser registrada. Se duas ou mais aplicações registram o mesmo tipo de mensagem, o valor de retorno é igual para todas. Desse geito voce consegue garantir que todas as aplicações possuam o mesmo identificador para um dado tipo de mensagem. Um benefício visível, de garantir que duas ou mais aplicações possuam um mesmo indentificador para uma mesma mensagem, é a possibilidade de fazer mensagens broadcast. entretanto não vou entrar em detalhes sobre este assunto. abraço
-
Bia ... voce tambem pode tentar usar este componente http://spreendigital.de/delphi/MagForm.zip O MagneticForm é parecido com aqueles recadinhos em papel amarelo com cola que voce gruda em algum lugar. ( no caso será grudado na tela ) Como ele vem com o código fonte, se não funcionar na versão do delphi que está usando, basta corrigir o codigo e compilar novamente. abraço
-
O erro é: Incapaz de invocar conclusão de código devido a erros no codigo fonte então voce deve procurar no codigo o comando que está provocando este erro... sugestão refaça o codigo por partes e vá testando. tambem experimente tirar os parenteses de: adoCur.Close(); adoCur.Open(); adoCur.Next(); adoCat.Next(); acho que não são necessarios. abraço
-
Coloque o erro que é mostrado na tela. abraço
-
Parabens moça ... só um detalhe a sua outra foto tá mais bonita .. rs abraço
-
For e while costuma não dar muito certo ... ou use um ou use outro por exemplo: for x := 0 to (adoCat.RecordCount -1) do voce colocou um comando For para contar seus registros do inicio ao fim ... então porque utilizar while not adoCat.Eof do para testar o fim do arquivo ? OBS: experimente tirar esse while do codigo e veja o que acontece. abraço
-
Preocupação com compatibilidade componente
pergunta respondeu ao Silva_henry de Jhonas em Delphi, Kylix
deve funcionar, mas se não funcionar, voce pode corrigir o codigo fonte. abraço -
No Keyfield não sei se é possivel mas é possivel no Listfield exemplo: Na propriedade Listfield faça assim ( Campo1, campo2 ) é o nome do campo da sua tabela separados por ponto e virgula Listfield = CAMPO1; CAMPO2 depois é só capturar o conteudo de cada campo. outra dica: http://www.linhadecodigo.com.br/Dica.aspx?id=328 abraço
-
Preocupação com compatibilidade componente
pergunta respondeu ao Silva_henry de Jhonas em Delphi, Kylix
Endereço para download do Rxlib para delphi 2009 http://www.soapui.cn/wordpress/index.php/download/37/ abraço -
Veja o que encontra nestes endereços http://www.relativa.com.br/livros_template...go_Produto=2711 http://www.consist.it/DE_CLIP.htm abraço
-
Não é a quantidade de tabelas que é crítica em um sistema, mas sim , a quantidade de registros que deve trafegar na rede. O desempenho está mais ligado a estrutura lógica dos comandos utilizados Vale dizer que a linguagem SQL é utilizada tanto pelos profissionais responsáveis pelos dados, onde é ressaltada a figura do Administrador do Banco de Dados e dos Analistas de Dados, como também pelos desenvolvedores de Aplicações. Enquanto àqueles estão preocupados com o desempenho, integridade do Banco de Dados e utilizam toda gama de recusos disponíveis no SQL, estes estão preocupados apenas em "transformar dados em informações", portanto para os desenvolvedores costuma-se dizer que conhecer o "select" já basta. Usando os comandos corretamente do SQL, o desempenho do software melhora muito. abraço
-
Seguindo a idéia do nosso colega Silva, voce pode colocar o codigo dentro do timer procedure TForm1.Timer1Timer(Sender: TObject); var I: Integer; fAlertaMsn: TForm; BarraIniciar: HWND; {Barra Iniciar} tmAltura: Integer; tmRect: TRect; xTop : Integer; xIniTop : Integer; begin //localiza o Handle da janela iniciar BarraIniciar := FindWindow('Shell_TrayWnd', nil); //Pega o "retângulo" que envolve a barra e sua altura GetWindowRect(BarraIniciar, tmRect); tmAltura := tmRect.Bottom - tmRect.Top; fAlertaMsn := TForm1.Create(Self); with fAlertaMsn do begin Left := Screen.Width - ClientWidth; if tmRect.Top = -2 then tmAltura := 30; //Pega o top final xTop := Screen.Height - ClientHeight - tmAltura; //Pega o top inicial xIniTop := Screen.Height + ClientHeight + tmAltura; Top := xIniTop; for I := xIniTop downto xTop do begin Top := Top - 1; Show; Update; Application.ProcessMessages; Sleep(1); end; Sleep(3000); Close; FreeAndNil(fAlertaMsn); end; end; Neste sentido, voce deve complementar o codigo fazendo a pesquisa em sua tabela e mostrando o recado Na propriedade interval do timer coloque 60000 = a 1 minuto. abraço
-
Voce pode usar o evento OnClick procedure TFMenu.RxTrayIcon1Click(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin RxTrayIcon1.PopupMenu.Items.Clear; RxTrayIcon1.PopupMenu.Items.Add(Cadastros1); // // comandos // RxTrayIcon1.Show; end; OBS: Observe que neste caso voce estará limpando todos os itens e adicionando-os novamente a cada click o certo seria fazer isto em outro lucar do programa e somente dar o show do componente. Faça alguns testes e veja o que acontece. abraço
-
claro que faz. exemplo: RxTrayIcon1.PopupMenu.Items.Add(Cadastros1); RxTrayIcon1.Show; adicionei um dos itens do menu ao componente, que quando voce clicar com o mouse vai aparecer este item ( e outros que voce colocar ) abraço
-
Relatório - Pular para próxima página (Fortes Report)
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
experimente sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('#37 + 'E' + #37', '#37 + 'S' + #37')'); acho que #39 é a posição mais a direita e #37 é a posição mais a esquerda ... ve o que dá. -
Se destacar os sufixos, seria colocar em negrito e em vermelho parte da palavra, seria algo do tipo: exemplo: procedure TForm1.Button1Click(Sender: TObject); begin Form1.Canvas.TextOut(20,20,'SU'); Form1.Canvas.Font.Color := clRed; Form1.Canvas.Font.Style :=[fsBold]; Form1.Canvas.TextOut(36,20,'FI'); Form1.Canvas.Font.Color := clBlack; Form1.Canvas.Font.Style :=[]; Form1.Canvas.TextOut(48,20,'XO'); end; abraço
-
Relatório - Pular para próxima página (Fortes Report)
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
Resposta 1 - O TRLLabel deve ter uma propriedade de impressão ( tipo OnPrint ). Como voce está criando campos em tempo de execução, somente poderá ser adicionado o codigo, após a criação do componente .. eu costumo usar no proprio relatorio. Resposta 2 - é extamente isto que acontece quando voce estica a banda de detail. ( o ideal é manter apenas a distancia de uma linha ( Height := 20 ) ) onde os campos serão alinhados. experimente: sql.Add('Select * From caixa Where DtPgto = :DtIni and Tipo in ('E', 'S' )'); abraço -
Componentes desaparecem após alternar usuário no XP
pergunta respondeu ao paulobergo de Jhonas em Delphi, Kylix
O motivo é porque, ao criar uma nova conta de usuário, voce tambem cria um novo perfil de usuário.. e neste perfil ( se não for o mesmo de administrador ) voce terá que refazer algumas instalações ... por exemplo: os componentes de terceiros deverão ser instalados no perfil do novo usuário, se não eles não serão mostrados. abraço