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

    Conexão

    opa O Zeos é bom sim, pra MySQL, Firebird, Interbase, etc ele é ótimo, pra Oracle já não sei te dizer mas deve ser sim, e o bom de tudo é que é opensource... O site official é http://sourceforge.net/projects/zeoslib abs
  2. Churc

    Conexão

    opa Nunca mexi mas vi na Internet sobre uma vez e especialmente falavam sobre dois componentes onde julgavam ser os melhores... por facilidade e tal... DOA - Site ODAC - Site - Diziam ter mais bugs que o DOA da uma olhada... abraço
  3. é realmente tudo se copia ahuahua...Um critíco diria, você gostaria que alguém copiasse seu trabalho? Mas como não sou critíco ahuahua eu também não vejo problemas em você tirar aproveito de idéias e tal, contanto que você não faça exatamente o mesmo, acho que não há problemas... vai de você... abraços
  4. Churc

    Chromelless

    opa é realmente uma janela pop-up mas com aparência diferente... da uma olhada nesse site. abraço
  5. talvez poderia ser um problema no fortes report? já tentou utilizar outros geradores de relatório para testar? abraço
  6. rsr engraçado que você pede desculpas e está denovo escrevendo em caixa alta rsrNÂO USE o CAPSLOCK pra ESCREVER ahuahuahu Escreva assim, normal :)
  7. Realmente, tomei a liberdade de editar o post dele mantendo a escrita...
  8. opa Eu não sei, nunca mexi com Rave então não sei como te ajudar... acredito que seja esse motivo das demais pessoas que não responderam, pois se trata de um assunto muito específico... ps: Específico que eu digo, é que talvez poucos ou nenhuma pessoa daqui do fórum passou por esse problema, pois ele pode estar sendo ocasionado pela forma que você está fazendo, talvez se você der mais detalhes alguém consiga te ajudar... abraço
  9. opa consegui rs... se algum dia prestar pra alguém tipo... Na criação dos objetos em tempo de execução não se deve setar o alinhamento, e no OnActivate do Form setar os alinhamentos na ordem inversa... abraço
  10. Opa Tava fazendo uns testes aqui, criando objetos em tempo de execução (runtime) ai me deparei com o seguinte problema, quando criados e alinhados vamos supor todos a esquerda Align := alLeft não achei uma maneira de ordenar qual vai ser o primeiro, qual o segundo e qual o terceiro exemplo Vamos supor que eu tenha 3 Paineis: Panel1, Panel2, Panel3 O Panel1 foi criado em modo visual, apenas o coloquei no form com o Alinhamento para alLeft... O Panel2 e Panel3 foi criado em tempo de execução, e também com o alinhamento para alLeft... A ordem que eu gostaria que fossem alinhados seria Panel1, Panel2, Panel3 mas quando rodo o programa a sequencia sai tudo errada rsr Alguém tem alguma idéia de como eu possa estabelecer quais vão ser alinhados primeiro que os outros? valeu abraço
  11. Churc

    Scanear Imagem

    opa Bom, esse cartão terá que ser sempre igual, a não ser que você faça um mapeamento pra cada cartão. Você irá precisar mapear o cartão, pro seu programa saber qual as coordenadas X e Y em que contém um quadrado, ou seja, o quadrado que será marcado. Você pode usar o paint pra isso, repare que quando você passa o mouse emcima da imagem, ele mostra na barra de status a posição X e Y, tipo 21,5 onde 21 = posição X, horizontal 5 = posição Y, vertical Com a imagem mapeada, ou seja, você já tem todas as faixas de onde estão os quadrados, ai você vai scanear a imagem e comparar as cores, por exemplo, vamos supor que o cartao é branco, certo, quando você scanear a imagem você terá de verificar se a posição X e Y do Scaneamento está dentro de alguma faixa de um quadrado, e enquanto tiver na faixa do quadrado, se a cor RGB não foi branca então o usuário marcou aquele quadrado... você pode criar um limite também (offset) por exemplo, se você fizer pra ser 1 pixel não for branco na faixa do quadrado, isso pode complicar, pois se o cartão tiver empoeirado? então você faria algo do tipo se mais de 5 pixels estiverem de cor diferente de branco ai está marcado o quadrado. o que vai salvar pra você na funcao acima é só o scaneamento... vamos supor que você carregou o cartao em uma variavel de Bitmap chamada MeuCartao: TBitmap; type TRGBTripleArray = array[Word] of TRGBTriple; pRGBTripleArray = ^TRGBTripleArray; var x, y: Integer; RowX, RowY: pRGBTripleArray; begin //Scaneia a Vertical da Imagem for y := 0 to MeuCartao.Height -1 do begin RowY := MeuCartao.Scanline[y]; //Scaneia a Horizontal da Imagem for x := 0 to MeuCartao.Width -1 do begin RowX := MeuCartao.Scanline[x]; //Crie uma função que checa as coordenadas da imagem se está //dentro das coordenadas do quadrado... if (inRange(X, Y) then if (TColor(RGB(rowA[x].rgbtRed, rowA[x].rgbtGreen, rowA[x].rgbtBlue)) <> clWhite) then begin //Crie uma função que identifique qual quadrado está entre //estas coordenadas, você pode usar um Type e criar uma array //armazenando as coordenadas dos quadrados ShowMessage(GetCheckID(X, Y)); end; end; end; end; Tipo, não que você vai se aproveitar dessa função é apenas pra você ter uma base, eu estou sem delphi aqui montei visualizando as de cima... assim que eu puder, se ninguém te passar um exemplo ou se você não conseguir eu monto um exemplo pra você, está meio corrido aqui no trampo =\ abraço
  12. Churc

    Erro No Dbimage

    opa desculpa se intrometer mas o Open que ele se refere é referente a um componente OpenDialog da paleta Dialogs... No caso você precisa colocar no LoadFromFile o caminho da imagem a ser carregada... exemplo usando um OpenDialog... if OpenDialog1.Execute then DBImage1.Picture.LoadFromFile(OpenDialog1.filename); exemplo passando o caminho da imagem... DBImage1.Picture.LoadFromFile('c:\minhaimagem.jpg'); abs
  13. opa Não exatamente... não é pelo fato de você possuir umaimpressora com scanner que vai existir um controle Activex com suporte a TWAIN. TWAIN é uma API, ou seja, uma DLL ou uma biblioteca com funções de suporte a scanner. Os drivers de sua impressora pode simplesmente acessar a API dispensando o uso de controles Activex. Sites que vão te ajudar TWAIN Delphi TWAIN Website esse capaz que tenha o controle activex pra download delphi.about - TWAIN abraços
  14. opa já que ninguém respondeu... eu não tenho nenhuma experiência em scanner e Delphi mas uma coisa eu posso te afirmar, pra você importar o controle activex o mesmo precisa estar instalado, por exemplo, você diz que o delphi 7 tinha o Kodak mas na verdade era a máquina que o possuia, o Delphi apenas importa os controles activex instalados na pasta do sistema. Você vai precisar de um controle activex que tenha suporte a Twain (Technology Without An Interesting Name) que é o padrão, Windows / Mac pra captura de imagens através de scanner... Na máquina que tinha o Kodak, com certeza ela possuia algum software de scaneamento de imagem, tipo estes Mrs Photo, Kodak Photo Express...
  15. opa eu nunca mexi com XML então não sei como te ajudar, mas da uma olhada nesse artigo veja se te ajuda... abraço
  16. opa Cleverson Este fórum realmente é demais, o pessoal é super bacana e inteligente... estou sempre aprendendo também, um ajuda o outro e assim criamos uma força de sabedoria ahuahuauh obrigado pela consideração :D agradeço também ao chefe Progr'amador pela força ;) abraço
  17. Churc

    Swift 3d

    ah está, é que eu vi no IDGNow uma reportagem e como agora está tudo "Adobe" tipo, Get Adobe Flash player, Adobe Shockwave Player achei que já tivesse fora do mercado... vi agora no site, os que voce falou realmente ainda estão macromedia... abs
  18. Churc

    Problema Com Backup

    opa eu não manjo nada de bd, mas porque você não copia os arquivos de seu banco .fdb? abs
  19. Churc

    Scanear Imagem

    opa eu mexi com isso uma vez quando eu tava tentando fazer um VNC inclusive postei aqui no fórum... deu certo o scaneamento mas errado o que eu queria fazer rsr Essa primeira função, o Bitmap precisa ter 24 bits de cores, pra conseguir pegar o R.G.B separadamente, isso seria pra scaneamento de "alta precisão". vou passar do jeito que usei, ai você adapta a sua necessidade... procedure CreateFrameBuffer(const BitmapA, BitmapB: TBitmap); type TRGBTripleArray = array[Word] of TRGBTriple; pRGBTripleArray = ^TRGBTripleArray; TTransmittedPixel = record RGB: DWORD; Pos: TPoint; end; var x, y: Integer; RowA, RowB: pRGBTripleArray; NetBuff: TTransmittedPixel; begin for y := 0 to BitmapA.Height -1 do begin RowA := BitmapA.Scanline[y]; RowB := BitmapB.Scanline[y]; for x := 0 to BitmapA.Width -1 do begin if (RGB(rowA[x].rgbtRed, rowA[x].rgbtGreen, rowA[x].rgbtBlue) <> RGB(rowB[x].rgbtRed, rowB[x].rgbtGreen, rowB[x].rgbtBlue)) then begin //NetBuff.RGB := TColor(RGB(rowB[x].rgbtRed, rowB[x].rgbtGreen, rowB[x].rgbtBlue)); //NetBuff.RGB := BitmapB.Canvas.Pixels[x, y]; NetBuff.RGB := GetPixel(BitmapB.Canvas.Handle, x, y); NetBuff.Pos.X := x; NetBuff.Pos.Y := y; //Form1.Image1.Canvas.Pixels[NetBuff.Pos.X, NetBuff.Pos.Y] := NetBuff.RGB; end; end; end; end; O que eu fazia nesta função é scanear um bitmap, que era uma screenshot atual e outra screenshot anterior verificando as cores que estavam diferentes e assim enviar ao servidor apenas os pixels que eram diferentes da screenshot anterior, na minha ideia era como o VNC fazia, mas não é isso que ele faz rsr... mas pra você vai ser útil... essa outra função faz a mesma coisa, só que em um bitmap com 8 bits (256 cores) isso no meu caso era bom pra ser mais rápido... acho que no seu caso, é melhor de 24 bits, de qualquer forma, o que ela faz é pegar uma ScreenShot da tela e fazer o mesmo que a função acima, porém a função acima tinha que ser passado os bitmaps para verificação, essa compara com um bitmap armazenado numa variavel global... você precisa ajustar pra como quer fazer... procedure CreateFrameBuffer2; var x, y: Integer; RowA, RowB: pByteArray; NetBuff: TTransmittedPixel; Frame: TBitmap; temp: TBitmap; begin if (i >= 10) then Exit; Frame := TBitmap.Create; temp := TBitmap.Create; Frame.Width := GetSystemMetrics(SM_CXSCREEN); {Screen.Width } Frame.Height := GetSystemMetrics(SM_CYSCREEN); {Screen.Height} temp.Width := Frame.Width; temp.Height := Frame.Height; BitBlt(Frame.Canvas.handle, 0, 0, Frame.Width, Frame.Height, GetDc(0), 0, 0, SRCCOPY); Frame.PixelFormat := pf8bit; temp.PixelFormat := pf8bit; if (Frame.Empty) then begin PreviousFrame.Assign(Frame); Frame.Free; Exit; end; for y := 0 to PreviousFrame.Height -1 do begin RowA := PreviousFrame.Scanline[y]; RowB := Frame.Scanline[y]; for x := 0 to PreviousFrame.Width -1 do begin if (RowA^[x] <> RowB^[x]) then begin NetBuff.RGB := Frame.Canvas.Pixels[x, y]; //venceu na temporizacao //NetBuff.RGB := GetPixel(BitmapB.Canvas.Handle, x, y); NetBuff.Pos.X := x; NetBuff.Pos.Y := y; //Form1.Image1.Canvas.Pixels[NetBuff.Pos.X, NetBuff.Pos.Y] := NetBuff.RGB; temp.Canvas.Pixels[NetBuff.Pos.X, NetBuff.Pos.Y] := NetBuff.RGB; end; end; end; temp.SaveToFile('bla' + IntToStr(i) + '.bmp'); i := i + 1; PreviousFrame.Assign(Frame); Frame.Free; temp.Free; end; da uma olhada se tiver dúvida posta ai que a gente te ajuda... abraço
  20. opa bom as cores você defini como preferir, mas a lógica seria o seguinte, você vai ter que criar uma variavel global, pra poder armazenar o valor a cada chamada de desenho do DBGrid, mais ou menos assim Primeiro adicione uma variavel global, pode ser acima de implementation var T...: TForm; Zebrado: Boolean = False; {$R} implementation vai no Events do componente DBGrid e procure pelo evento DrawColumnCell Da um duplo clique nele e ai só fazer exemplo procedure T...DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Zebrado then begin DBGrid1.Canvas.Font.Color := clWhite; //Letra Branca DBGrid1.Canvas.Brush.Color := clBlack; //Fundo preto Zebrado := False; end else begin DBGrid1.Canvas.Font.Color := clBlack; //Letra preta DBGrid1.Canvas.Brush.Color := clWhite; //Fundo branco Zebrado := True; end; DBGrid1.Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); end; ps: não testei aqui, mas baseado nos exemplos passados acima seria mais ou menos isso... abraço
  21. opa Não exatamente, pelo seguinte motivo, realmente não é legal(direitos autorais) você usá-los, pois são de propriedade da Microsoft. Porém você é somente 1 em milhões de programadores que utiliza recursos do Windows em suas aplicações. A Microsoft nunca se manifestou sobre, o que parece que eles não se importam, desde que o Windows é o que é graças a todos os recursos que ele oferece e as aplicações que existem para ele, e você faz parte disso. E mesmo que se importariam, você jamais seria pegou ou algo do tipo, a não ser que sua aplicação se tornasse mundialmente famosa, exemplo: Nero, PowerDVD, Flash etc... ai já é um caso a parte. Você não precisa se preocupar com isso... abraço
  22. opa da uma olhada nesse site. Faça seu cadastro e faça download de código fontes de aplicações por exemplo, controle de biblioteca, cadastro de funcionários, controle de academia, ai você vai ter noção de como fazer... abs
  23. Churc

    Dúvidas Sobre Skins

    opa Skin originalmente do inglês significa pele, e Skins para aplicações sãopeles para seu programa, exemplo, o Windows 98 era todo cinza, lembra? já o Windows XP você pode escolher skins para ele, deixando ele azul, ou aquele prata com verde, ou até mesmo deixar ele sem skins ficando com aparência de cores do Windows 98... Tem um componente chamado VCLSkin para Delphi que faz isso, da uma olhada nesse site. abraço
  24. opa você pode usar SendMessage() pra se comunicar entre aplicações, armazenando em WParam, LParam os dados... o mais comum é usar SendMessage() com a mensagem WM_COPYDATA se você não quiser definir sua própria mensagem e armazenar no LParam uma variavel do tipo TCopyDataStruct lembrando que da pra comunicar qualquer coisa, desde de que elas não sejam classes, objetos... usando DDE é bem mais complicado mas da pra fazer também... o que você quer comunicar, passar entre as aplicações? abraço
  25. Churc

    Swift 3d

    opa a Adobe né você quis dizer rs, porque a Adobe comprou a Macromedia e o nome Macromedia foi tirado fora do mercado rsAo contrário do Google, comprou o Youtube mas manteve em nome da Youtube Inc.
×
×
  • Criar Novo...