
Xistyle
Membros-
Total de itens
355 -
Registro em
-
Última visita
Tudo que Xistyle postou
-
Achei bem legal a forma como esse artigo foi escrito: http://blogs.circlesource.com/2009/01/20/d...-menu-creation/
-
Passa o link do artigo para dar uma olhada :D
-
Outro ponto que é bom esclarecer é a integração de linguagens, que pode vir a "assustá-lo". Por exemplo, quando você cria uma aplicação WPF em C#, o design da tela é codificado em XAML (padrão XML). Com isso, você precisa ter conhecimento de ambas linguagens.
-
PrintDocument.DefaultPageSettings Linha do Landscape = True :D
-
Amigos, boa tarde! Comecei a estudar XAML e WPF e estou quebrando um pouco a cabeça. Hoje achei um exemplo na web sobre como montar um jogo da velha. Li todo o artigo depois comecei a codificar. Apesar da lógica estar OK, algumas coisas que estão no XAML não consigo fazer executar. O link do artigo é: JogoDaVelhaWPF. O autor usa o MainWindow.xaml criado com o projeto apenas como um container de controles. O MainWindow dele tem o InitializeComponent(), sendo que o meu dá erro com essa linha de código. Inicialmente deu um erro de que não haviam componentes a serem inicializados e depois comentei código. De qualquer forma, no final do artigo, o autor atribui uma tela de dados do jogador (que é um UserControl) como conteúdo da MainWindows, na App.xaml. Na minha visão, deveria abrir a MainWindow com o xaml de dados do jogador, o que no meu código não ocorre: abrem duas janelas - a MainWindow em branco e uma janela desproporcional da dados de jogador. Alguma luz? Abraços! [uPDATE] Consegui abrir os dados do jogador, como conteúdo da MainWindow. Na verdade tenho o costume de traduzir algumas coisas do código, para ajudar no entendimento. Traduzi erronemante a pasta Themes/Generic.xaml. Não sabia qual o uso disso mas ao renomear para inglês funcionou normalmente. Agora apenas estou com o problema da janela desproprocional.
-
Pessoal, Tenho uma aplicação que está dividida em camadas. No form, existe uma progressbar que precisa ser configurada e alimentada, dinamicamente. Contudo, os valores de progressão e limite máximo estão sendo atribuidos em uma outra classe. Qual a forma mais simples de passar esses valores e atualizar a progressbar, da classe pro form? OBS: não gostaria de criar um método no form. O form contém apenas eventos dos controles do form. Pensei em usar Property.
-
Vanderson, da sua máquina local, acessando o Oracle que está disponível no Citrix não será possível. A não ser que você consiga liberar um VPN pra conectar-se diretamente ao Servidor Oracle, mas neste caso não haveria a necessidade do Citrix. Porém, se você possui os dados de acesso ao banco, você pode disponbilizar sua aplicação no Citrix que ela "verá" o Servidor Oracle.
-
Você quer conectar uma aplicação sua ao Oracle, via Citrix ou quer acessar o client do Oracle via Citrix?
-
Vi que o objeto Namespace tem um método chamado logon. Nele passo o endereço de e-mail e senha. Contudo não funciona. Fiz um teste, abrindo o Outlook na máquina em que o código está rodando e configurei a conta em questão no Outlook. Funcionou normalmente. Mas não tenho como assegurar que o aplicativo estará aberto e configurado na máquina em que o projeto estará em execução. Alguma idéia de como validar o logon de uma conta?
-
Vanderson, se você possui acesso do Citrix na máquina servidor Oracle, basta ter o IP em mãos e configurar o objeto de conexão da sua aplicação apontando para o servidor Oracle.
-
Amigos, boa tarde! Estou iniciando os estudos em C# (já programo em outras linguagens, mas pouco em POO). Preciso desenvolver uma aplicação aqui no serviço que necessita executar algumas ações relacionadas a e-mail. Contudo, surgiu uma dúvida ao retornar a quantidade de e-mails não lidos. Tenho o seguinte código: using Outlook = Microsoft.Office.Interop.Outlook; public int metQuantidadeEmailsPendentes() { int lintQuantidade = 0; //# Cria a instância do aplicativo do Outlook Outlook.Application lappOutlook = new Outlook.Application(); //# Não entendi essa linha, se puderem auxiliar na explicação agradeço :) Outlook.Namespace lnmsMAPI = lappOutlook.GetNamespace("MAPI"); //# Recebe os items da caixa de entrada Outlook.Items litmEmails = lnmsMAPI.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox).Items; foreach (Outlook.Items litmAuxiliar in litmEmails) { if (litmAuxiliar.UnRead == true) { lintQuantidade++; } } return lintQuantidade; } Pois bem, a dúvida é a seguinte: quando instancio a aplicação do Outlook, acredito que ele abra com as configurações da máquina em que a esse código está sendo executado. Ou seja, como está rodando em minha máquina, abrirá o Outlook internamente com as configurações da minha conta de e-mail. Agora, se esse aplicativo será executado em uma máquina remota, como faço para informar ao objeto instanciado que ele deve conectar-se a uma determinada conta de e-mail, de forma dinâmica, tendo em vista que os dados da conta podem mudar (endereço, senha, STMP, ...)? Grato pela ajuda!
-
Bem vindo :) Qualquer dúvida estamos a disposição!
-
Olá Raphael. O VB é bastante intuitivo, uma linguagem simples de entender. É bom fortalecer basicamente sua lógica de programação. As dúvidas sobre sintáxe nós do fórum podemos auxiliar (assim como também corrigir algum erro de lógica ou mostrar alguma lógica mais simples). Mas o velho e bom www.macoratti.net tem bastante conteúdo de VB/VB.NET com possibilidade de baixar o código. vbmania.com.br também é interessante, mas sugiro começar com o macoratti.
-
Coisa da Microsoft. Famosa gambeta :) Que bom que deu certo. Mas dica: quando possível tente migrar ao menos para o VS2008.
-
Thomás, vê se funciona: http://aspadvice.com/blogs/rjdudley/archiv...08/09/2642.aspx
-
Thomás, no VS2008 o Field Explorer fica dentro do menu Crystal Reports. No VS2003 não sei cara. Verifique se no menu View e seus submenus não possuem essa opção.
-
Uia! Vivendo e aprendendo! Valeu pela dica Lucas! Não é porque o sistema é pequeno que não custa fazer da forma mais adequada, pra se acostumar sempre. Vou pesquisar e montar da forma correta então. Se tiver algum problema sobre o agendador volto a postar, caso contrário eu fecho o tópico como [RESOLVIDO]. Obrigado pela força!
-
Então Lucas, estou fazendo diferente. Tenho uma tabela guarda as tarefas agendadas. Essa tabela possui uma flag, que seria o IsRunning que sugeriu. Coloquei um Timer do Windows Form mesmo (estava preocupado se o contador ia parar enquanto eu cadastrasse uma nova tarefa ou excluísse uma já existente, mas ele não pára). Com isso eu consigo fazer o cálculo para saber qual será a próxima verificação de acordo com o que o usuário informou. Assim, faço um novo cálculo para ter no evento Tick do Timer o tempo restante para uma nova verificação. Quando esse contador zera, chamo uma rotina que irá buscar no banco de dados se existe alguma tarefa agendada. Caso exista, não fará nada e o contador irá reiniciar para uma nova verificação. Caso não exista, faz uma pesquisa no banco pela tarefa mais antiga (dia e hora) após a que acabou de ser executada e chama o outro aplicativo que fará todo o trabalho. Seguem alguns códigos: '# Realiza verificações de horário e chama a rotina de verificação de fim de evento agendado Private Sub tmrRelogio_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrRelogio.Tick Dim ldatTempoParaNovaVerificacao As TimeSpan '# Variável do form que irá receber sempre a hora atualizada mdatHoraAtual = Now.ToLongTimeString() '# É feito o cálculo a partir da mdatProximaVerificacao, que é baseado nos minutos que o usuário escolhe para as verificações ldatTempoParaNovaVerificacao = mdatProximaVerificacao.Subtract(mdatHoraAtual) lblRelogio.Text = "Próxima verificação em: " & ldatTempoParaNovaVerificacao.ToString '# Caso o relógio para a próxima verificação tenha zerado, verifica se o evento atual foi finalizado If ldatTempoParaNovaVerificacao.ToString = "00:00:00" Then lfcnVerificaExecucao() End If End Sub '# Verifica se existe algum evento agendado. Caso negativo, inicia um evento. '# Caso positivo, apenas aguarda o término deste para iniciar o próximo Private Function lfcnVerificaExecucao() As String Dim lstrSQL As String Dim ldtbDados As DataTable Dim lclsConexao As New clsConexao lstrSQL = "SELECT IDIND_EVENTOAGENDADO, " & Chr(13) & _ " IDIND_STATUSEXECUCAO, " & Chr(13) & _ " DATAHORA, " & Chr(13) & _ " SERVIDOR, " & Chr(13) & _ " CELULA, " & Chr(13) & _ " STATUSPROCESSO " & Chr(13) & _ " FROM VW_EVENTOSAGENDADOS " & Chr(13) & _ " WHERE IDIND_STATUSEXECUCAO = " & eStatusExecucao.EmExecucao ldtbDados = lclsConexao.RetornaDados(lstrSQL, 0) If ldtbDados.Rows.Count > 0 Then lfcnVerificaExecucao = "Em execução: " & Format(ldtbDados.Rows(0).Item("DATAHORA"), "dd/MM/yyyy") & _ " " & ldtbDados.Rows(0).Item("SERVIDOR") & _ " - " & ldtbDados.Rows(0).Item("CELULA") & _ " - " & ldtbDados.Rows(0).Item("STATUSPROCESSO") mclCalendario.SelectionRange.Start = ldtbDados.Rows(0).Item("DATAHORA") Call mclCalendario_DateSelected(Me, Nothing) Else '# Aqui colocarei o código para chamar o próximo evento a ser executado End If lclsConexao = Nothing End Function Por enquanto é só um teste, mas acho que irá funcionar.
-
O problema é que eu não tenho um número fixo de tarefas. Imagine que eu agende essa verificação de arquivos no dia de hoje para 4 pastas, por exemplo. A primeira pasta foi agendada para iniciar as 11:00, a segunda as 15:00, a terceira as 19:00 e a quarta as 22:00. O timer tem que primeiramente verificar se existe alguma tarefa agendada anteriormente que não foi finalizada, por exemplo, uma tarefa de hoje que foi agendada na madrugada e não foi concluída. Caso ainda esteja em execução, não fará nada. Caso a tarefa anterior não esteja rodando, chamará a próxima tarefa a ser executada, no caso a agendada para as 11h. Esse timer irá chamar um outro aplicativo que efetivamente irá executar a verificação nas pastas. Isso já está pronto. Contudo, varia a quantidades de tarefas e tempo de uma pasta para outra. Pode ser que a primeira pasta leve 7 horas para terminar a tarefa. Ou seja, a segunda tarefa que seria executada as 15h, será executada apenas às 18h. Mesmo assim, pode ser que o volume de arquivos da segunda pasta seja menor, e leve apenas 1:30h para executar a tarefa, iniciando a terceira tarefa as 19:30h. Se tiver alguma idéia de como eu posso criar o timer já é de grande ajuda. Ou outras idéias de como implementar esse timer, fico muito grato. Abraço e obrigado antecipadamente.
-
Lucas, obrigado pela resposta. Na verdade já tenho alguns processos que realizam o cadastramento das tarefas que serão agendadas. Preciso apenas saber como terei um Timer executando 24/7 e de x em x tempo verificando se determinada foi finalizada para iniciar a seguinte. Não sou familiarizado com C#, por isso não entendi bem a lógica do código.
-
Amigos, boa tarde! Estou com uma dúvida e não faço idéia por onde começar as pesquisas. Espero que possam me dar uma luz, exemplos de códigos, enfim a ajuda de sempre que dão. Estou desenvolvendo um Agendador de tarefas para um aplicativo. O aplicativo final executa uma verificação em arquivos, então é um processo bem demorado. O agendador então deverá ficar em background enquanto executado e, de tempos em tempos, verificar se a tarefa do aplicativo final foi finalizada para iniciar a tarefa seguinte. O agendador possui um parâmetro que é o intervalo de tempo que será verificado se a tarefa do aplicativo final foi finalizada ou não. Agora, como faço para criar esse timer que irá verificar de tempos em tempos? Li em algumas fontes de pesquisa rápida que deveria usar thread, mas não faço idéia de como usá-la. Abraços camaradas.
-
É amigos... aconteceu uma coisa bizarra! Tenho alguns relatórios do Crystal 10. Precisei fazer alguns testes, em 3 servidores e abri esses relatórios no Crystal 11 que vem com o Visual Studio 2008, para definir a nova localização do server/database. De todos os relatórios, em todos os servidores, apenas 2 deram problemas. E é bem³ estranho... Defini a nova localização do servidor e database, apliquei os valores. Cliquei em Verify Database e salvei o relatório. Nos outros dois servidores foi o suficiente para rodar esses relatórios em minha aplicação em VB6, usando Crystal Viewer. Ao fazer isso, neste terceiro servidor, o form onde está o Crystal Viewer aparece em branco. Achei estranho pois, ao clicar no form em branco, aparece como se eu tivesse selecionado uma célula (o relatório contém um cross tab). Decidi então exportar o relatório em branco, e para minha surpresa, o arquivo exportado continha dados. Testei o Preview do Crystal e apareceram dados normalmente. Intrigado com o Crystal Viewer em branco, começei a fuçar o form e cliquei no zoom. Ao deixá-lo em 100% ou mais (150, 200...) ele continua em branco. Ao diminuir (75% ou menos) os dados aparecem. Alguém já teve algum problema similar? Estranho é que os demais relatórios estão funcionando normalmente (inclusive outros com cross tab). Se alguém tiver uma luz, por favor, acenda :) Abraços!
-
Bom dia! Estou usando a vaSpread no VB6 (como eu odeio essa grid) e preciso liberar a digitação de valores negativos. No Spread Designer, setei a coluna como Number e consigo digitar valores negativos. Contudo, em tempo de execução, não é possível. Não há nenhum código que altere a configuração da spread para impedir a digitação de números negativos, em tempo de execução. Alguma idéia do que possa ser? Abraços
-
Sim, funciona normalmente. Existem duas formas de abrir o relatório: localmente e remotamente. Localmente eu passo os valores dos parâmetros dinamicamente, usando ParameterFieldDefinition, ParameterFieldDefinitions, ParameterDiscreteValue e ParameterValues. Funciona sem apresentar erros, com valores ou nulos. Porém, como não conseguirei realizar a conexão diretamente do relatório da máquina remota em nosso banco de dados, pensei em realizar a pesquisa pelo DataSet. Essa procedure retorna um select. Atribuindo ele ao DataSet e vinculando ao relatório, funciona sem erros também. Contudo, o relatório ainda pede que os parâmetros sejam passados.
-
Também não deu certo Bruno, solicitou a entrada de parâmetros. De qualquer forma, como não são filtros obrigatórios no relatório, existe a necessidade de passar esses valores nulos. Estou procurando material na web, mas tá difícil :/