Ir para conteúdo
Fórum Script Brasil

Paulo Nobre

Membros
  • Total de itens

    717
  • Registro em

  • Última visita

Tudo que Paulo Nobre postou

  1. Tenho a procedure que intercepta o minimizar para minimizar no tray: WMSysCommand procedure TfrmPrincipal.WMSysCommand(var Msg: TWMSysCommand); begin if (Msg.CmdType = SC_MINIMIZE) then begin frmPrincipal.Hide; frmPrincipal.RxTrayIcon1.Active := True; end; if (Msg.CmdType = SC_CLOSE) then begin Application.Terminate; end; end; DEpois que voçe falou experimentei desativar(retirar) a procedure e o form destravou. Acontece que preciso desta procedure pois quero minimizar no tray, quando o usuário clicar em minimizar. O programa que a principio estva ficando bom agora parece que está uma M... Além disso s3c deixa eu aproveitar a carona deste texto e lhe perguntar o seguinte: Estou neste mesmo form com a seguinte mensagem: [Pascal Error] UnitPrincipal.pas(1): Unable to invoke Code Parameters due to errors in source code ela aparece quando vou tentar completar alguma coisa tipo reg.closeKey; Messagebox(0,....), não mostra as opções corretas para completar e aparece esta mensagem. Isto so neste form principal. Tem como consertar isto? Por favor preciso desta ajuda também!!
  2. Acho que entendi Churc, na realidade colcoquei a sua dica no form principal, mas o shelltreeview, componente que causa o problema, está num outro form. Vou ver se coma mudança funciona.
  3. Acho que vou ter que reconstruir tudo de novo. Nunca vi uma loucura destas. Consigo usar os componentes do form,mas não consigo movê-lo nem rewdimensioná-lo. Verdadeiro mistério.
  4. Ok, s3c, acho que assim vai funcionar.
  5. Olá, progr´amador, quanto tempo em.. Tem muita coisa no OnShow, vou dar uma olhada, mas não tem nenhum looping não. s3c, Desculpa, escrevi errado. Enable:= TRUE;
  6. As duas propriedades acima estão oK; enable:= false e coloquei Form1.setfocus. Observei que seu eu alterar por exemplo, o form para poder ser reajustado( o seu tamanho), não consigo reajustá-lo também. Já aconteceu isto com alguém?
  7. Churc, coloquei no começo, depois em outros lugares, e não funcionou. Alguém tem alguma idéia?
  8. Alguém já trabalhou em GIF neste tipo de código?
  9. A procedure adaptada da anterior e esta para jpeg só que dá erro Procedure TfrmPrincipal.CapturarTelaTodaSalvarJPEG(Filename:TFilename); Var JPEG:TJPEGImage; begin JPEG := TJPEGImage.Create; JPEG.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0); Image1.Picture.Assign(JPEG);//o erro está aqui. JPEG.SaveToFile(FileName); JPEG.Free; end; dá erro mesmo colocando Image1.Picture.Bitmap.Assign(JPEG); não encontrei parametros como cf_jPeg quero salvar como jpeg. Será que tem que converter primeiro de bitmap para jpeg par depois entrar com a procedure?
  10. Ok, s3c, Obrigado pelas respostas.
  11. EStou com um form que ao ser mostrado não consigo movê-lo nem pela barra onde está o caption nem pelo menu que aparece no ícone do lado esquerdo. Não sei o que está acontecendo. Olhei todas as propriedades do form e nenhuma foi mexida para que isto acontecesse. Alguém conhece algum código para que eu pudesse colocar no onshow para que ele destravasse? O que tem nele de diferente é que pode iniciar hide no tray, e foi codificado para ao minnimizar fique no tray. Existe alguma função que erradamente usada poderia sabidamente causar isto? Que me lembre não tem mais nada de extraordinário. Alguém tem alguma idéia do que poderia ser. obrigado
  12. Ok, s3c, Mas me diga uma coisa... Você forneceu o código abaixo Procedure TfrmPrincipal.CapturarTelaTodaSalvarBitmap(Filename:TFilename); Var Bmp:TBitmap; begin Bmp := TBitmap.Create; Bmp.LoadFromClipboardFormat(CF_BitMap, Clipboard.GetAsHandle(CF_Bitmap), 0); Image1.Picture.Bitmap.Assign(Bmp) Bmp.SaveToFile(FileName); Bmp.Free; end; Para salvar em forma de bitmap: Você poderia me dizer se para salvar em formato GIF e JPEG, basta trocar as extensões acima, ou seja ficaria: Procedure TfrmPrincipal.CapturarTelaTodaSalvarGIF(JPEG)(Filename:TFilename); Var GIF(JPEG):TGIF(TJPeg); begin GIF(JPEG) := TGIF(JPEG).Create; GIF(JPEG).LoadFromClipboardFormat(CF_BitMap, Clipboard.GetAsHandle(CF_Bitmap), 0); Image1.Picture.Bitmap.Assign(Bmp) Bmp.SaveToFile(FileName); Bmp.Free; end; ou seria algo diferente? Você poderia me dizer como fazer? Outra coisa é em relação a como foi salvo em BITMAP. Existe BMP 256 e BMP TRUE, como mando salvar de uma maneira e de outra? O código que voce forneceu foi para 256 ou TRUE?
  13. Valeu Churc, Muito boa a sua dica. Obrigado Abraços Paulo Nobre
  14. Olá, s3c, Mas o que eu faço para que o desktop vá para o clipboard. Do jeito que o código está nada vai para o clipboard, porisso dá o erro. O que está faltando para que isso aconteça? O que você acha melhor fazer? Tirar o registro? Estou meio confuso!
  15. Existe uma maneira de coibir o aparecimento da mensagem de Warning, só neste projeto em questão, já que não se trata de um programa para LINUX?
  16. S3C, ESTOU TENDO DOIS PROBLEMAS: 1) ACHO QUE NÃO ESTOU SABENDO ALOCAR O CÓDIGO DE MANEIRA CORRETA. APARECE O ERRO DE QUE O FORMATO DO CLIPBOARD NÀO ESTA CORRETO, POIS OU ESTÁ VAZIO OU ESTÁ COM TEXTO, POIS DA MANEIRA COMO ESTOU USANDO O CÓDIGO AO APERTAR PRINT NÀO ESTÁ INDO O DESKTOP PARA O CLIPBOARD. NO ONCREAT COLOQUEI: {== Desabilita a tecla Print Screen ==} RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT ); CRIEI A PROCEDURE(COM O CÓDIGO QUE VOCÊ FORNECEU-ESTÁ NA SEÇÃO PÚBLIC) Procedure TfrmPrincipal.CapturarTelaTodaSalvarBitmap(Filename:TFilename); Var Bmp:TBitmap; begin Bmp := TBitmap.Create; Keybd_Event(VK_Snapshot,0, 0, 0); Bmp.LoadFromClipboardFormat(CF_BitMap, Clipboard.GetAsHandle(CF_Bitmap), 0); Image1.Picture.Bitmap.Assign(Bmp)// o erro acontece aqui pois o clipbarde está vazio ou com um formato diferente do de imagem. Bmp.SaveToFile(FileName); Bmp.Free; end; QUE ESTÁ SENDO CHAMADA PELA PROCEDURE procedure TfrmPrincipal.WMHotKey (var Msg : TWMHotKey); Var Destino:String; Numero:Integer; begin if Msg.HotKey = 500 then begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); Numero:= reg.ReadInteger('Número do último screen salvo')+ 1; Destino:= reg.ReadString('Diretório de Destino')+'\Flash'+IntToStr(Numero)+'.bmp'; If reg.ReadString('Formato')= 'BMP 256' then If reg.ReadString('Capturar')= 'A tela toda' then begin CapturarTelaTodaSalvarBitmap(Destino); end Else If reg.ReadString('Capturar')= 'A janela ativa' then begin CapturarJanelaAtivaSalvarBitmap(Destino); end; //Else If reg.ReadString('Formato')= 'BMP TRUE ' then reg.CloseKey; end; end; QUANDO SAIO DO PROGRAMA E CLICO EM PRINT COLOCO O DESKTOP NO CLIPBOARD(o que mostra não ser do código o problema e sim como estou usando), PORÉM COM UM PROBLEMA: DEMORA MUUUUUUUUITO(2 MINUTOS-ESTE É O OUTRO PROBLEMA) PARA A IMAGEM APARECER NO IMAGE E O ÍCONE DO BITMAP APARECER NO DESTINO ESCOLHIDO(PASTA). Eu achava que a função Keybd_Event(VK_Snapshot,0, 0, 0);já copiava o desktop para a área de tranferencia. VOCÊ CONSEGUE VER ALGO ERRADO? DESCONFIEI QUE DEVERIA COLOCAR ALGO NO EVENTO ONKEYDOW, MAS NÃO SEI COMO. PENSEI EM If Key = VK_SNAPSHOT then WMHOTKEY(?), MAS NÃO CONSEGUI PERCEBER O QUE COLOCAR NO LUGAR DA INTERROGAÇÀO(QUAL O PARÂMETRO). A procedure WMHotkey não está sendo chamada em lugar nenhum apenas está declarada, talvez este possa ser o erro, mas não estou sabendo alocá-la, como mencionei acima.
  17. Estou desenvolvendo, a título de estudo, um programa para capturar telas;total,janela ativa e recorte.Só que é mais difícil do que imaginava. As próximas perguntas, como esta, que postarei aqui no forum, dirão respeito a isto. Espero poder contar com a ajuda do forum para desenvolver este estudo. Consegui a seguinte função para capturar o desktop: procedure TForm1.ScreenCapture(Filename: TFilename); var DHDC: HDC; Buffer : TBitmap; Begin begin DHDC := GetWindowDC(GetDesktopWindow); Buffer := tBitmap.Create; Buffer.Width := Screen.Width; Buffer.Height := Screen.Height; BitBlt(Buffer.Canvas.Handle,0,0,Screen.Width,Screen.Height,DHDC,0,0,SRCCOPY); Buffer.SaveToFile(Filename); Buffer.Free; ReleaseDC(GetDesktopWindow,DHDC); end; End; Gostaria de criar o bitmap(com o nome flash01.bmp) relativo a esta captura num caminho determinado, por exemplo C:\temp e exibí-lo num image. Como poderia fazer isto com função acima? Mesmo alterando FileName:String e colocando 'C:\temp'na chamada da função dá erro. Uma outra função que peguei por aí é a seguinte: function CaptureScreenRect( ARect: TRect ): TBitmap; // // Captura a tela e salva-a em um Bitmap // // Use-a assim: // // Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height))); // var ScreenDC: HDC; begin Result := TBitmap.Create; with Result, ARect do begin Width := Right - Left; Height := Bottom - Top; ScreenDC := GetDC( 0 ); try BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, SRCCOPY ); finally ReleaseDC( 0, ScreenDC ); end; // Palette := GetSystemPalette; end; end; Usando Image1.picture.Assign(CaptureScreenRect(Rect(0,0,Width,Height))); consigo colocar o desktop na image1, porém não consigo salvar image1.Picture.SaveToFile('C:\temp');dá erro. O erro que aparece é o mesmo que aparece com o uso da procedure anteriormente citada: Não é possível criar o arquivo C:\temp, o acesso está negado Em resumo preciso do seguinte: 1) Capturar o desktop 2) Exibir num image 3) Salvar o desktop, num bitmap de nome Flash01.bmp, num diretório pré determinado, por exemplo C:\temp Dá para adaptar a procedure ou a função para fazer isto que preciso? O código abaixo também salva o desktop keybd_event(vk_snapshot,0, 0, 0); {Tela toda.} porém como pegar a tela toda salvar num arquivo .bmp e ainda salvar este arquivo no C:\temp, por exemplo. HELP,HELP,HELP.
  18. Esta foi uma super dica(s3c), pois já havia feito um desvio no programa(If XP...), ou seja,achando eu que era para Xp e não XP, tinha feito uma caixa de dialógo personalizada para XP(usando o Treewiew) e caso não fosse(XP) chamava a caixa padrão via BrowseFor Folders. Alguém poderia pensar porque não colocar tudo chamando via BrowserFor Folders. POde parecer frescura, mas todos os formulários do programa tem uma cor(azul) inclusive a caixa personalizada que criei, porém a do próprio windows vem na cor padrão do sistema. As "únicas" vantagens da do windows são: Alguns segundos de rapidez a mais para abrir e poder colocar um botão Make to folder através de um parÂmetro adicional. Mas acho que poderei criar está possibilidade na minha também. Obrigadão
  19. Ok,s3c, vou testar. Obrigado!
  20. Olá, s3c Os links falam desta função mencionada por você acima. Obrigado por sua atenção.
  21. Para quem se interessou, mas também não sabia... num outro forum me sugeriram estes tópicos, que resolveram meu problema. http://forum.devmedia.com.br/viewtopic.php...42d35a1b08fc5b9 http://forum.devmedia.com.br/viewtopic.php...3aa8d3101c2d1a1 Obrigado Paulo Nobre
  22. Quando abrimos uma Unit de um projeto ela já tem associada a ela algumas outras. Por exemplo a windows que contém diversas funções. Como faço para visualizá-la, ouseja, ver as funções que estão registradas nela?
×
×
  • Criar Novo...