-
Total de itens
8.257 -
Registro em
-
Última visita
Tudo que Graymalkin postou
-
É o mesmo problema anterior... ou seja... if(escolha[1]=='n'){ ... deveria ser: if(escolha[0]=='n'){ Graymalkin
-
Não sei se você entendeu o que eu disse, mas você *não precisa* saber. Se você *quiser* saber é aquela opção que lhe fornece esse tipo de informação. Sim, o Access 97, já que o Visual Data Manager cria bancos de dados desse formato. Abraços, Graymalkin
-
O ideal é que você escolha o Jet. Afinal de contas, você não sabe se o computador em que seu programa será instalado já possui ou não o mecanismo de acesso. Abraços, Graymalkin
-
Sim, claro que respeita. Você não tem uma impressora aí para testar? Como já disse anteriormente, ela só não imprimirá corretamente se estiver instalada como Genérico/Somente Texto. Vai ser extremamente difícil você achar uma impressora que não seja gráfica (até mesmo as antigas Mônica e Emília, por exemplo, são gráficas). Porém, vai depender de como ela está instalada. Você pode ter uma LX-300 e instalar como Genérico/Somente Texto, por exemplo (e você não conseguirá imprimir graficamente), ou instalada corretamente (ou seja, como "LX-300") e aí conseguirá normalmente. Entenda que não se trata, exatamente, de uma questão se a impressora é gráfica ou não. É muito mais uma questão de escolha do que limitação técnica. Você, por acaso, testou os códigos e viu a diferença? Abraços, Graymalkin
-
A descrição na parte inferior da tela já diz tudo: "Use to create a file listing information about the run-time components required by your application", ou seja, "Use para criar uma listagem com informações sobre os arquivos de componentes de tempo de execução necessários à sua aplicação". Ou seja, você cria uma listagem com os arquivos .DLL, .OCX, etc. a fim de que você possa saber quais são exatamente os arquivos necessário (e se quiser, criar o setup com outro programa qualquer, tipo o Inno, por exemplo). Abraços, Graymalkin
-
Você deve escolher ali o driver de banco de dados que você usa. Se o banco for Access, escolha o Jet, se for dBASE escolha XBase, se for ODBC escolha o ODBC, etc. Abraços, Graymalkin
-
Uso o Python no WinXP normalmente. Aconselho que você execute o script a partir de uma IDE como o IDLE ou o PythonWin e verique se não existe algo errado no mesmo. Ou então, executar diretamente pelo Prompt do MS-DOS, digitando: c:\python23\python.exe c:\pasta\arquivo.py E veja se não existe nada errado no código. Abraços, Graymalkin
-
Acho que você ainda não entendeu o conceito de "eventos". O evento KeyDown é chamado (ou seja, o código que está dentro dele é executado) a cada vez que uma tecla é pressionada no controle. Se o evento tem o seguinte código: msgbox "Alô" Será exibida essa mensagem a cada vez que uma tecla for pressionada no controle. Todavia, o evento KeyDown tem um parâmetro, chamado KeyCode, que nos informa qual a tecla digitada. Esse parâmetro pode ser alterado, por exemplo: KeyCode=vbKeyB Se você colocar isso no evento KeyDown de uma textbox, por exemplo, fará com que a cada vez que uma tecla seja pressionada no controle apareça na caixa de texto a letra "B". Portanto, se colocamos o seguinte código no evento KeyDown: If KeyCode = vbKeyDown Then KeyCode = 0 End If Estamos simplesmente fazendo com que a cada vez que uma tecla seja pressionada no controle ele teste se a tecla digitada foi a seta para baixo, e caso seja realmente esta tecla ele muda o valor para 0 (que é uma tecla nula). Ou seja, ela não *bloqueia* permanentemente uma tecla e sim faz o teste a cada que qualquer tecla é pressionada e age de acordo. Portanto, a sua pergunta sobre "como habilitá-la novamente" não faz muito sentido. O que você poderia fazer é ter uma variável booleana que diria se a tecla deve ser aceita ou não, exemplo: if not pode if KeyCode = vbKeyDown Then KeyCode = 0 endif endif Nesse caso, "pode" é uma variável booleana (ou seja, só pode ser True ou False). Se ela for True, nenhuma tecla será bloqueada. Caso ela seja False, então verificar-se-á se a tecla digitada corresponde a tecla da seta para baixo e caso positivo, então ela será bloqueada. Abraços, Graymalkin
-
Isso vai funcionar com qualquer impressora (salvo no caso que coloquei no primeiro post). Se quiser ver a diferença entre a impressão gráfica e a normal de uma impressora matricial, faça os seguintes testes: for i=0 to 30 printer.print "Linha " & i next i printer.enddoc n=freefile() open "lpt1" for output as #n for i=0 to 30 print #n, "Linha " & i next i close #n Repare que o segundo vai fazer a impressão muito mais rápida e sem esforço para a impressora (no primeiro código ele vai, literalmente, "desenhar" as letras; isso é a impressão "gráfica"). Abraços, Graymalkin
-
Basta atribuir 0 ao parâmetro KeyCode. Note que ele é passado por referência e não por valor. Por exemplo, para desabilitar a seta para baixo, basta fazer (no evento KeyDown): If KeyCode = vbKeyDown Then KeyCode = 0 End If Abraços, Graymalkin
-
Creio que a terceira é mais elegante. Tudo entendido. Obrigado pela aula Graymalkin. Abraços Paulo Nobre Também acho. Se bem que em geral uso a segunda opção (formando o caminho absoluto). Qualquer coisa, 'stamos aí. Abraços, Graymalkin
-
Exatamente porque no Contatos.exe você deve estar usando o caminho relativo do arquivo (por exemplo, "dados.dat") ao invés do caminho absoluto (por exemplo, "c:\pasta2\dados.dat"). Se o seu programa está sendo executado na pasta "c:\pasta" e você chama um programa qualquer que use um caminho relativo, você teria... pasta atual (c:\pasta) + nome do arquivo ... o que resultaria, no caso, em "c:\pasta\dados.dat", por exemplo. Ou seja, quando especificamos um caminho relativo (ou seja, só o nome do arquivo, ou com os dirétorios "." e/ou "..") ele automaticamente "junta" com o diretório de trabalho atual. Você tem três opções nesse caso (além da usada): ou o próprio programa (Contato.exe) muda o diretório de trabalho para o mesmo que está sendo executado (pela função chdir()); ou você usa o caminho absoluto do arquivo .DAT (ou seja pegando o diretório da aplicação (ExtractFilePath(Application.ExeName)) e juntando com 'dados.dat'; ou passa o diretório de trabalho do programa pelo parâmetro lpDirectory da função ShellExecute(). Abraços, Graymalkin
-
Experimente trocar os "*" por "%". Abraços, Graymalkin
-
Mas, você tentou com a calculadora? Repare que a calculadora não tem um modo maximizado (o botão Maximizar dela é desabilitado). Experimente com o "Bloco de Notas": Shell "notepad.exe", vbMaximizedFocus Abraços, Graymalkin
-
Complementando a resposta acima, veja o protótipo da função ShellExecute: HINSTANCE ShellExecute( HWND hwnd, // handle to parent window LPCTSTR lpOperation, // pointer to string that specifies operation to perform LPCTSTR lpFile, // pointer to filename or folder name string LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters LPCTSTR lpDirectory, // pointer to string that specifies default directory INT nShowCmd // whether file is shown when opened ); O parâmetro em negrito serve justamente para indicar o diretório de trabalho. Abraços, Graymalkin
-
A questão é a "pasta de trabalho" (working directory). Quando você chama uma aplicação em outra pasta, por meio de uma função ou rotina, a pasta de trabalho dessa aplicação será a atual (e não a que a mesma está contida). Experimente fazer o seguinte antes de abrir: pasta := ExtractFilePath(Application.ExeName)+'\Executáveis\Contatos\' chdir(pasta); E veja se dá certo. Abraços, Graymalkin
-
Quando você escreve... shell "calc.exe", ... após a "," (vírgula) o VB já vai te mostrar uma enumeração com as constantes aceitas pela funçõa Shell(). Você não viu isso? Abraços, Graymalkin
-
Oredem Alfabética Num Dbgrid (RESOLVIDO)
pergunta respondeu ao Paulo Nobre de Graymalkin em Delphi, Kylix
Bom, não sei como é a utilização desse componente, mas se ele simula uma tabela de um banco de dados creio que seja possível "avançar" os registros até que seja o final da tabela, certo? Algo como um MoveNext() ou um Skip(). Acredito também que seja possível obter o valor de um determinado campo (o campo "nome", por exemplo) do registro atualmente selecionado. Com isso, seria possível preencher uma matriz ou um vetor (com um registro) e ordená-la(o). Não sei o Delphi tem alguma função que ordene uma matriz ou vetor, mas isso não é problema (pode-se usar o método bolha de ordenação que é o mais intuitivo e simples). Aliás, pensando aqui... nem precisaria disso tudo. Se você pode manipular os registros (editá-los), basta fazer uma ordenação (bolha ou qualquer outra) em relação aos mesmos e no final você teria a tabela ordenada. Sacou? Abraços, Graymalkin -
Oredem Alfabética Num Dbgrid (RESOLVIDO)
pergunta respondeu ao Paulo Nobre de Graymalkin em Delphi, Kylix
Compreendo. Então, já que ele obedece a ordem de entrada, você poderia criar uma rotina que ordenasse os dados gravando-os em outro .dat. Depois seria só substituir o .dat atual pelo .dat em ordem. Abraços, Graymalkin -
Claro que não estou zoando. Considero esta a melhor solução para qualquer tipo de problemas no qual a instalação e a reinstalação de um determinado software/componente não dá certo. Na maioria das vezes é melhor perder tempo fazendo isso do que tentando descobrir o problema. Além disso, você não precisa necessariamente "formatar" o HD todo. Pode simplesmente instalar o Windows em outra partição e ainda deixar a instalação anterior. Abraços, Graymalkin
-
Já tentou reinstalar o Windows todo (uma cópia limpa, não por cima)? Abraços, Graymalkin
-
Dê uma olhada aqui: http://www.planet-source-code.com/vb/scrip...=56711&lngWId=1 Abraços, Graymalkin
-
O que tem nessa pasta "OFFICE"? Ela é acessível? Abraços, Graymalkin
-
Sim, desde que a impressora instalada tenha suporte a impressão gráfica. Somente se você instalou como "Genérico/Somente texto" é que você não terá esse recurso. Todavia, não recomendo isso (impressão gráfica) para impressoras matriciais. Abraços, Graymalkin
-
Isso é DAO. Com o ADO, você tem um objeto ADODB.Connection enquanto que com DAO você tem um objeto Database (por aí você já nota a diferença). Abraços, Graymalkin