Ir para conteúdo
Fórum Script Brasil

Churc

Veteranos
  • Total de itens

    1.198
  • Registro em

  • Última visita

Tudo que Churc postou

  1. Churc

    Imagens

    Opa Ter tem no Delphi você pode fazer tudo, exceto um sistema operacional e drivers .ocx, .vxd, etc... do resto você pode fazer tudo ou quase tudo ehehe Mas para cada coisa há uma dificultade, e esta parece ser um tanto que dificil, você teria que scanear a imagem inteira checar os pixels que estejam no tom de cinza e fazer o que você quer, que eu não entendi como assim "as peças em tons de cinza e transformar em poligonos?", sei que peças você se refere a pixels mas transformar em poligonos? abraço
  2. Churc

    Alias

    Opa Grande Micheus :D É verdade eu passo como fazer mais não explico o porque... IncludeTrailingPathDelimiter é definido na unit SysUtils e faz com que um determinado caminho tenha em seu final uma \ que seria o delimitador no seu caso foi necessário porque você define um + 'BD' no final e como o Micheus já explicou o caminho poderia estar saindo errado... exemplo var szPath: String; begin szPath := 'C:\Meu Projeto'; szPath := IncludeTrailingPathDelimiter(szPath); //Agora szPath ao invés de ser 'C:\Meu Projeto' é 'C:\Meu Projeto\' ForceDirectories declarado também na unit SysUtils força que determinado diretório seja criado, em modo recursivo ou seja, se somente existir o diretório: 'C:\Meu Projeto' e você fizer ForceDirectories('C:\Meu Projeto\Dados\BD'); ele vai criar desde a pasta Dados até BD, já o CreateDirectory ou CreateDir não faz isto... abraço
  3. Churc

    Alias

    Pegar sozinho você quer dizer não digitar o caminho manualmente né? Tente assim: var szPath: String; begin szPath := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'BD\'; try ForceDirectories(szPath); finally if not Session.IsAlias('AgendaRMC') then begin Session.AddStandardAlias('AgendaRMC', szPath, 'PARADOX'); Session.SaveConfigFile; end; end;
  4. Churc

    Dll

    Opa Que tipo de conteúdo você diz os códigos? Se sim a única maneira de você fazer isso seria por engenharia reversa, mas é um processo muito difícil poucos sabem fazer, pra você ter uma idéia é assim que crackers fazem com que você possa usar determinado programa sem pagar (pirata), ele procura pela parte no software que trava caso não tenha uma licença e modifica esta parte fazendo com que o programa ache que foi registrado... Por isso não existe e nunca vai existir um programa que não possa ser crackeado, por mais que seja a dificuldade sempre tem um expert que consegue... Por exemplo, se já viu algum jogo famoso que em 3 dias do lançamento já não tem em redes P2P para baixar? ou um software? Assembler vamos que se dizer é a linguagem do computador , quando um programa é compilado, todo seu código é transformado para assembler... Este processo de ler/modificar conteúdo de DLL, EXE por exemplo é chamado disassembler, ou engenharia reversa... Saiba mais sobre este assunto: Assembler Código da máquina Disassembler Agora se existir um programa que passe de assembler pra código eu também quero saber rsr abraço
  5. Opa Que bom pelo menos a solução deve ser você reinstalando o BDE Da uma olhada neste site que ensina como... abraço
  6. Churc

    Sistema De Formulario

    Opa da uma olhada neste post :)
  7. Opa Não poderia ser algum problema de alguma DLL? Aparece alguma mensagem de erro? ... abraço
  8. Opa Ah certo, trava pelo seguinte, o Form3 tava ficando atrás do Form2, então fiz um exemplo de como você pode fazer para resolver isso... Download Espera o link do download aparecer... abraço
  9. Opa O Record Eder que o Micheus se refere é uma estrutura de variáveis e você define como um Type, baseado nas variáveis que você passou seria... type TTotal = record TOTALqtdctrc: Integer; TOTALpeso: Integer; TOTALfpeso: Integer; TOTALvm: Integer; TOTALfvalor: Integer; TOTALdespacho: Integer; TOTALicms: Integer; TOTALfrete: Integer; {... coloque todas} end; Neste caso você pode definir também como type TTotal = packed record ... que vai diminuir o tamanho total (SizeOf()) deste record no menor possível... Só não é recomendável quando se usa classes na escrutura tipo TBitmap, etc... Depois para limpá-las como o Micheus te passou seria var recTotal: TTotal; //Aqui você armazena uma variável do tipo TTotal begin FillChar(recTotal, SizeOf(TTotal)); //Aqui você limpa todas as variáveis de recTotal que tem naquele record Pra usar o ideal é... with recTotal do begin TOTALqtdctrc := query1.... TOTALpeso := query1... que é o modo mais fácil, mas também pode chamar manualmente uma por uma... recTotal.TOTALqtdctrc := query1.... recTotal.TOTALpeso := query1... Quando você digitar recTotal. (ponto) automaticamente o Delphi abre o Code Completation com as variáveis definidas naquele record... abraço
  10. Opa Primeiro de tudo, você vai ter que passar os dados do banco de dados de paradox para um Txt e depois ler este TXT e passar pra Firebird... este processo é mais conhecido como CSV (Comma Separated Values) ou valores separados por vírgulas... Tem vários tópicos no fórum sobre isto da uma olhada na busca como CSV: Tópico 1 Tópico 2 Tópico 3 Segundo, quanto a sua TQuery + Firebird não sei te dizer se funciona ou não, nunca testei e mexo bem pouco com banco de dados mas quando testei, usei o componente Zeos que é muito bom e a maioria das pessoas usa ele tanto para Firebird como MySQL, MSSQL, etc... Download Zeoslib Faça download do ZeosDBO (Database objects) E terceiro você vai precisar instalar o Firebird Server ou utilizar o método standlone que através de uma DLL é possível você utilizá-lo mas sem ser multi-usuário Firebird site oficial abraço
  11. Opa Eu não vou ser a pessoa certa pra te ajudar não uso quickreport mass... Pra ajudar os que vão te ajudar assim, essas variáveis que você diz são variáveis de código ou seria variaveis no relatório do quickreport? Se forem variaveis de código, devem estar em OnBeforePrint, OnBeforePreview estes tipos de eventos? (detalhe que nem sei o nome dos eventos é apenas um exemplo já que o Delphi2006 vem sem o Quickreport rs) Se sim realmente elas vão interferir no processo de impressão, mas nossa umas 90 variaveis não teria como otmizar isto não? O teste que você pode fazer é do tipo, pra teste diminuir os dados que vão ser impressos ou as variaveis, mas com certeza é isso o problema da lentidão na hora de imprimir... Fale sobre os Eventos que voce usa e se possível talvez essas 90 variaveis de codigo possam ser otimizadas, ai se quiser poste essa parte do código aqui.. abraço
  12. Opa Você pode usar assim: var f: TextFile; begin AssignFile(f, 'c:\relatorio.txt'); //Joga na variavel F o FileHandle do arquivo Rewrite(f); //Cria um novo se não existir ou sobrescreve caso exista... WriteLn(f, 'Hello'); //Escreve na primeira linha "Hello" Closefile(f); //Fecha o arquivo... Não precisa utilizar o FileCreate... Se você quiser que o arquivo seja "sobreescrevido" então utilize sempre Rewrite agora se quiser que o texto seja adicionado então o correto seria... var f: TextFile; begin AssignFile(f, 'c:\relatorio.txt'); //Joga na variavel F o FileHandle do arquivo if FileExists('C:\relatorio.txt') then //Se o arquivo já existe Append(f) else //então adiciona o texto a ele... Rewrite(f); //ao contrário crie um novo... WriteLn(f, 'Hello'); //Escreve ou adiciona "Hello" Closefile(f); Se for fazer leitura desse arquivo, use Reset ao invés de Rewrite e ReadLn ao invés de WriteLn... Neste site tem uns exemplos e explicações boas sobre isso... abraço
  13. Opa É, é o que eu indicaria, crie uma janela que faça o mesmo que o input box mas faça-a dinâmica ou seja, uma janela compatível com todo tipo de operação que você chamaria um input box... Vamos esperar talvez outras pessoas tenham outra solução! abraço
  14. Opa Foi bem claro sim, mas ai sabe o que você pode fazer tipo assim... Talvez tenha maneira melhor: Procedure SetWindowOnTop(aForm: TForm; bTop: Boolean); var clFlags: Cardinal; begin if bTop then clFlags := HWND_TOPMOST else clFlags := HWND_NOTOPMOST; SetWindowPos(aForm.Handle, clFlags, aForm.Left, aForm.Top, aForm.Width, aForm.Height, SWP_NOMOVE and SWP_NOZORDER); end; Pra usar seria assim, antes de chamar o Modal do form você chama ela SetWindowOnTop(Form2, True); Form3.ShowModal; SetWindowOnTop(Form2, False); Se o owner do botão for o Form2 você pode usar Self ao invés de Form2... mas não muda nada... Isso ai vai funcionar masss talvez não seja a melhor maneira... abraço
  15. Opa Eu não achei nenhuma solução para isto a não ser você trocar todos os ShowMessage por algo como MessageBox, eu testei aqui emulando um erro StrToInt('a'); e ficou normal a mensagem, parece que este problema somente acontece com o ShowMessage mesmo... A diferença é que no MessageBox você pode personalizar também as suas mensagens com icones e botões... Eu faço assim, adiciono em uma unit que é usada por todo o programa ou seja, a unit que vai ficar suas funções... const (* Messagebox *) MB_ERROR = MB_OK or MB_ICONERROR; //A mensagem é de erro MB_QUESTION = MB_YESNO or MB_ICONQUESTION; //A mensagem é uma pergunta MB_INFORMATION = MB_OK or MB_ICONINFORMATION; //A mensagem é de informação function MessageOut(hHandle: HWND; const szText: String; iType: Integer): Integer; begin Result := MessageBox(hHandle, PChar(szText + ' '), 'Safe Desktop', iType); end; Então para usar você faz exemplo Mensagem de erro MessageOut(Handle, 'O preenchimento do campo nome é obrigatório...', MB_ERROR); Mensagem de pergunta if MessageOut(Handle, 'Gostaria de salvar as alterações?', MB_QUESTION) = idYes then //O cara clicou em Sim, você pode usar idNo para saber se clicou em Não Mensagem de informação MessageOut(Handle, 'O usuário foi cadastrado com sucesso!', MB_ERROR); Acho que fica bem melhor o uso de Messagebox ao invés de ShowMessage até porque da uma aparência melhor no programa... fica mais apresentável... Ou vamos torcer para que alguém poste uma maneira caso queira usar o ShowMessage abraço
  16. Opa Então, eu já tive este problema uma vez mas não lembro o que eu fiz para resolver, testei aqui também no Delphi 2006 e não consegui emular o problema, se for possível faça um exemplo com o problema e poste aqui, de preferência hospede em algum site tipo www.4shared.com ou www.rapidshare.com e poste o link com o exemplo... abraço
  17. Opa Resumindo seria assim, você acabou de criar um programa e seu form principal se chama Form1 e adicionou ao programa um outro form chamado Form2... Quando você chamar o Form2 o que acontece é que por padrão ele vai receber como WndParent o Handle da Aplicação (TApplication)... Handle é o nome que se dá a propriedade que armazena a identificação da janela, toda janela possue um Handle, desde botões e tudo mais, é assim que o Windows identifica qual janela aconteceu tal evento, o Windows controla tudo por mensagens... Quando a barra de tarefas vai enumerar as janelas criadas ela verifica se tal possue uma janela principal, ou podemos chamar de WndParent e se ela tiver simplesmente o controle dessa janela na barra de tarefas passa a ser o mesmo botão da janela principal... Então alterando o WndParent nos Params da janela setando para 0 você afirma que esta janela tem um controle independente e não o controle da aplicação (TApplication)... Ai o que acontece é que, quando você da um ShowMessage por exemplo é criada uma janela para exibir a mensagem e essa janela pega o WndParent da janela que a chamou, no caso se fosse do Form1 seria o Handle de TApplication ou seja, do programa, mas como você setou o WndParent do Form2 para 0 então a janela de mensagem fica sem controle e por isso acontece esse problema... Bom é meio ruim de explicar espero que tenha entendido mais ou menos ahuauha abraço
  18. Churc

    Links

    Opa Para quem quer dar umas incrementadas em seus Menus, Toolbars, etc... deixar com aparência estilo OfficeXP, Windows XP entre outros segue uma dica, o uso da Toolbar2000 do Jordan Russel o mesmo criador do Inno Setup e um "add-on" chamado Tbx Algumas screenshots: Default Classic Windows XP Office XP Stripes Aluminum Infelizmente a Tbx foi descontinuada e sua última versão somente é compatível com a versão 2.1.6 da Toolbar2000 sendo que a versão atual da Toolbar2000 é 2.2.0 mas funciona tudo perfeitamente até o Delphi 2006, não testei com versões acima ou Turbo... Download TBX - A última versão era 2.2 alpha e somente é compatível com a versão 2.1.6 da Toolbar2000 Download Toolbar2000 - A última versão era 2.2.0 mas como citado acima baixe a 2.1.6 para ter compatibilidade com TBX Depois de baixar os 2, descompacte cada uma em uma pasta na sua pasta Lib: \Toolbar2000 \TBX Adicione na Type Library do Delphi o caminho para a pasta Source de ambas as pastas... Depois vá até a pasta Diff da pasta TBX e copie todos os arquivos exceto o README, cole na pasta Source da pasta Toolbar2000 e execute o arquivo _cvs_patch-2_1_6.bat Pronto agora ambos estão compatíveis um com o outro... Agora abra o Delphi, clique em Abrir, vá até a pasta Packages da pasta Toolbar2000 e abra o .dpk de acordo com seu Delphi, se ele for o Delphi 2005 ou acima, abra o tb2kdsgn_d9.dpk, clica em Build e depois Install... Clique no menu File e depois Close All, se pedir para salvar clique em No Agora vá até a pasta Packages da pasta TBX e siga o mesmo procedimento acima... Pronto :) Qualquer coisa postem no fórum! abraço
  19. Opa Você tem que instalar ele a parte, assim, quando você vai instalar o Delphi 2006 você tem uma opção "Rave Reports BE (Borland Edition)" na janelinha do DVD ou até na instalação do Delphi - For Win32 tem lá uma opção para selecionar se deseja instalá-lo ou não... Eu não testei aqui não o uso dele, eu não uso o Rave então não selecionei rsr Da uma olhada... abraço
  20. Churc

    Teclas De Atalho

    Opa Coloque a propriedade KeyPreview do Form para True e use o evento OnKeyDown do Form exemplo: vamos supor que você vá fazer as seguintes hotkeys CONTROL + A CONTROL + ALT + W SHIFT + Y SHIFT + ALT + T procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //Aqui verificamos se a tecla CONTROL está pressionada... if (ssCtrl in Shift) then begin //Aqui vai todo o código das hotkeys com o CONTROL //Como exemplo vamos começar com CONTROL + A if (chr(Key) in ['A', 'a']) then ShowMessage('Hotkey: CONTROL + A'); //Agora verificamos se a tecla SHIFT está pressionada if (ssAlt in Shift) then begin //Aqui vai todo o código das hotkeys com o CONTROL + ALT //Como exemplo vamos usar CONTROL + ALT + W if (chr(Key) in ['W', 'w']) then ShowMessage('Hotkey: CONTROL + ALT + W'); end; end; //Aqui verificamos se a tecla SHIFT está pressionada... if (ssShift in Shift) then begin //Aqui vai todo o código das hotkeys com o SHIFT //Como exemplo vamos começar com SHIFT + Y if (chr(Key) in ['Y', 'y']) then ShowMessage('Hotkey: SHIFT + Y'); //Agora verificamos se a tecla ALT está pressionada if (ssAlt in Shift) then begin //Aqui vai todo o código das hotkeys com o SHIFT + ALT //Como exemplo vamos usar SHIFT + ALT + T if (chr(Key) in ['T', 't']) then ShowMessage('Hotkey: SHIFT + ALT + T'); end; end; end; abraço
  21. Opa Então Erso, eu não consegui usar este FreeCVS não, tipo, porque os downloads não funciona por exemplo da aplicação Servidor... Você conseguiu? abraço
  22. Churc

    Dúvidas Sobre Skins

    Hudson, siga as instruções do colega Bruno Souza (post anterior ao seu), ou seja, envie um e-mail a ele que você recebe o componente. ;) A propósito, o VCLSkin não é FREE (veja Order VCLSkin) - o que você vai estar recebendo é, muito provavelmente, uma versão "crackeada"!!! Abraços Opa É realmente é pago! Como moderador eu não posso permitir que vocês distribuam conteúdo ilegal no fórum, mas como o contato é por email e não pelo fórum eu não posso provar que é uma versão crackeada, poderia ser um trial, então eu não vou intervir a menos que a distribuição seja feita aqui no fórum... Lembrando que eu tenho que seguir as regras né e vocês também auhahuahu abraço
  23. Churc

    Duplo Clique

    Opa É realmente eu testei aqui e interfere mesmo... Vou tentar alguma coisa... qualquer coisa eu posto aqui ou vamos esperar que mais pessoas ajudem... abraço
×
×
  • Criar Novo...