Ir para conteúdo
Fórum Script Brasil

Aleksander

Membros
  • Total de itens

    39
  • Registro em

  • Última visita

Posts postados por Aleksander

  1. Olá amigos, uso HTML apenas para fazer arquivos de help, sendo assim nunca publiquei página, desejo publicar uma página e a única parte que tenho dificuldade é "Quais a linhas necessárias no início do código para que a página seja exibida em sites de busca? Já fiz algumas pesquisas mas ainda tenho dúvidas.

    Por exemplo como devo usar a linha Charset=iso e como usar corretamenta a tag meta.

    Se alguém puder de uma forma simples dar uma explicação agradeço.

  2. Correto Jhonas, a questão foi dada como resolvida por mim ao ter recebido o código mas não havia testado, agora que testei e no meu caso funcionou, segue abaixo uma maneira de carregar uma imagem de extensão .BMP de um determinado arquivo usando a API.

    Crie as seguintes variáveis globais:

    hDCImg : HDC;
    hBitImg : HBITMAP; 
    ps : TPAINTSTRUCT;
    rc : TRECT;
    Crie uma procedure para carregar a imagem de um arquivo com o seguinte código:
    hDCSis := GetDC(0);
    hDCImg := CreateCompatibleDC(hDCSis);
    ReleaseDC(0, hDCSis);
    hBitImg := LoadImage(0,'nomedaimagem.bmp', IMAGE_BITMAP, 0, 0,   LR_DEFAULTSIZE or LR_LOADFROMFILE); 
    SelectObject(hDCImg, hBitImg);
    Na função WindowProcedure na msg WM_PAINT use o código:
    BeginPaint(hWin, ps);
    //Chame a procedure criada aqui
    GetClientRect(hWin, rc);
    StretchBlt(ps.hdc, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right-ps.rcPaint.left, ps.rcPaint.bottom-ps.rcPaint.top, hDCImg, 0, 0, rc.right, rc.bottom, SRCCOPY);
    EndPaint(hWin, ps);
    Antes de fechar a aplicação delete os itens:
    DeleteDC(hDCImg);
    DeleteObject(hBitImg);
    Se desejar carregar a imagem de um arquivo .RES troque a linha:
    hBitImg := LoadImage(0,'nomedaimagem.bmp', IMAGE_BITMAP, 0, 0,   LR_DEFAULTSIZE or LR_LOADFROMFILE);
    Por esta:
    hBitImg := LoadBitmap(hInstance,'nomedorecurso’);

    Grande abraço!

  3. Olá amigos, estou fazendo algo parecido com uma barra de ferramentas, gostaria de saber como faço para pegar o nome da janela ativa de qualquer aplicativo, se eu usar application.title eu só pego o nome do meu aplicativo, gostaria que no momento que eu clicasse eu outro aplicativo seja Delphi, Word ou outros o nome aparecesse no caption de um label.

    Grato a todos pela atenção.

  4. Olá amigos, no exemplo abaixo o Label1 fica da seguinte forma 25410320, gostaria que ele ficasse assim 25,4.

    Como posso fazer isso?

    Grato pela atenção.

    procedure TForm1.Button1Click(Sender: TObject);
    var
      S: string;
      Free: Int64;
    begin
      Free := DiskFree(0);
      S := 'Espaço livre em (C): ' + intToStr(Free div 1024);
      Label1.Caption := S;
    end;

  5. Jhonas, esse código que você usou pode ser resumido com:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      AlphaBlendValue:=120;
      AlphaBlend := True;
    end;
    end.

    Ainda não está resolvido mas agradeço a ajuda colega.

    Grande abraço.

  6. Olá amigos, todos os aplicativos que desenvolvo costumo criar uma pasta de ajuda com o passo a passo do uso dos mesmos com várias imagens.

    Para isso uso varios recursos que simulam o PrintScreen, para facilitar meu trabalho uso um form que redimensiono sobre a área desejada para salvá-la, no entanto quando deixo esse form transparente usando o Form1.Brush.Style:=bsClear ao redimensioná-lo ele usa a área de trabalho como se fosse fundo , é horrível.

    Alguém saberia me informar o que posso fazer para resolver isso? Ele salva a imagem perfeitamente, só me incomoda essa distorção visual na hora arrastar e redimensionar.

    Grato a todos pela atenção.

  7. Olá amigos, dessa vez prometo que não vou fazer pergunta sobre imagem.

    Uso o codigo abaixo que o colega Churc me ensinou para iniciar com windows, funciona perfeitamente.

    Desejo colocar um Checkbox onde possa controlar o auto-iniciar, ou seja, com o

    Checkbox1.Checked :=true ativa o auto-iniciar, Checkbox1.Checked :=false desativa

    o auto-iniciar.

    Sei lêr e gravar o valor do registro mas não consegui fazer a ligação.

    Grato pela atenção.

    Auto-iniciar

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    with TRegistry.Create do
    begin
      RootKey := HKEY_CURRENT_USER;
      try
        Openkey('Software\Microsoft\Windows\CurrentVersion\Run', False);
        WriteString('Cadastro', ParamStr(0));
      finally
        Closekey;
        Free;
      end;
    end;
    end;
    lêr e gravar valor
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       with TRegistry.Create do
     begin
       try
       RootKey := HKEY_CURRENT_USER;
       OpenKey('Cad',True);
       WriteBool('Dados',checkbox1.Checked);
       finally
        CloseKey;
        Free;
       end;
     end;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
       with TRegistry.Create do
     begin
       try
         RootKey := HKEY_CURRENT_USER;
         OpenKey('Cad',False);
         checkbox1.Checked:=(ReadBool('Dados'));
       finally
        CloseKey;
        Free;
       end;
     end;
    end;

  8. Pergunto, como posiciono a imagem no topo do Memo?

    a intenção é inserir uma pequena logomarca no Memo o qual uso como formulário para impressão.

    Não seria mais facil e mais pratico voce utilizar um quickreport para isto ?

    Jhonas, já faço uso do Rave para determinados fins, esta questão da imagem no Memo é um caso à parte, de acordo com suas dicas consegui posicionar a imagem em qualquer lugar do Memo inclusive usar todas as propriedades de um Timage, isso foi possível graças ao uso da propriedade Parent.

    Veja como ficou fácil

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with TImage.Create(form1) do
    begin 
    Parent := memo1;
    width:= 50;
    height:= 50;
    left:= 30;
    top:= 30;
    proportional:= true;
    Picture.LoadFromFile('c:\img.bmp');
    end;
    gostaria de saber porque ao inserir a imagem no Memo usando o código abaixo ela se repete várias vezes e o texto fica acima dela
    o motivo é que quando definido um bitmap para a propriedade Brush, ele o usa para o preenchimento do fundo ao invés de usar a cor sólida. O estranho é que este recurso deveria utilizar apenas um bitmap de 8x8 pixel. E pelo que pesquisei, a documentação diz que seria copiado apenas um retângulo deste tamanho a partir do canto superior esquerdo. :huh:
    desejo colocar uma imagem no topo do Memo e abaixo dela inserir o texto, a intenção é inserir uma pequena logomarca no Memo o qual uso como formulário para impressão.
    acho que a melhor opção seria utilizar o componente TRichEdit. vous parlez français? :D Dê uma olhada neste tópico "INSÉRER UNE IMAGE (BITMAP) DANS UN RICHEDIT (RXRICHEDIT)" (não estou gritando, o título está assim mesmo ;)) Não se preocupe, o código está em Inglês. ;) Abraços
    Le Micheus, muito boa esta dica do RichEdit, agora tenho duas questões resolvidas, tanto inserir a imagem no Memo como no RichEdit, passarei a usar o RichEdit devido ao maior número de opções que ele oferece, falta pouco para fechar este tópico. Antes de trocar o Memo pelo RichEdit, resta uma dúvida. Quando testei a dica do Jhonas usei o código abaixo para imprimir o Memo, mas agora que inseri a imagem ela não é impressa, tentei alterar o código mas não consegui imprimir a imagem, somente o texto é impresso. Por uma questão didática, o que faltou inserir neste código para que ele além de se referir as linhas também se refira à imagem? O código usado para imprimir o Memo.
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i, Linha : Integer;
      AltLinha : Integer;
    begin
      Linha := 0;
      Printer.BeginDoc;
      AltLinha := Trunc(Printer.Canvas.TextHeight('My')*1.1);
      for i := 0 to Memo1.Lines.Count - 1 do begin
        Printer.Canvas.TextOut(0, Linha, Memo1.Lines[i]);
        Linha := Linha + AltLinha;
        if Linha >= Printer.PageHeight then begin
          Printer.NewPage;
          Linha := 0;
        end;
      end;
      Printer.EndDoc;
    end;

    Grande abraço a todos e obrigado pela atenção.

  9. Boa tarde amigos, gostaria de saber porque ao inserir a imagem no Memo usando o código abaixo ela se repete várias vezes e o texto fica acima dela , desejo colocar uma imagem no topo do Memo e abaixo dela inserir o texto, a intenção é inserir uma pequena logomarca no Memo o qual uso como formulário para impressão.

    Pergunto, como posiciono a imagem no topo do Memo?

    Como inserir o texto depois da imagem?

    O código tirado de (DicasDelphi)

    procedure TForm1.FormActivate(Sender: TObject);
    var
         Bmp : TBitmap;
    begin
         Bmp :=TBitmap.Create;
         Bmp.LoadFromFile('c:\img.bmp');
         Memo1.brush.Bitmap:=TBitmap.Create;
         Memo1.brush.Bitmap.LoadFromFile('c:\img.bmp');
    end;
    end;

    Grato a todos pela atenção

  10. Olá amigos, ao fazer uma pesquisa sobre zoom relacionada ao meu último post, encontrei um programa chamado Zoomtool, achei interessante o fato de que ao passar o cursor do mouse sobre qualquer cor em qualquer parte da tela o programa captura o código RGB da cor, por exemplo quando o cursor está sobre a cor clBtnFace, a cor é exibida num panel e seu código aparece assim :

    R: 236

    G:233

    B:216

    Gostaria de fazer um programa somente com esta função sem ter que usar programas de terceiros.

    Grato pela atenção

  11. Mestre Sam, de acordo com sua idéia faça o seguinte:

    No photoshop salve suas Layers cada uma com um nome diferente.

    No Corel repita o processo inserir objeto para cada uma delas, (não use o comando importar senão o filtro de importação irá juntar as layers e a imagem virá completa).

    1 - Selecione a imagem, clique em Bitmaps - Converter em bitmap, na resolução deixe com 300 dpi, Cor RGB (24bits), (é preciso fazer a conversão para editar a imagem pelo Corel).

    Marque a opção Suavização de serrilhado e clique em OK

    Repita o procedimento para todas as imagens.

    2 - Selecione a imagem, clique em Bitmaps - Rastrear bitmap - (escolha uma opção onde o resultado seja melhot), por exemplo Logotipo detalhado ou Imagem de alta qualidade.

    Na janela de rastreio marque a opções:

    Remover fundo para que o fundo branco seja excluido.

    O restante você pode visualmente escolher as melhores opções na janela de rastreio.

    Após clicar em Ok a imagem será vetorizada.

    Repita para todas as imagens.

    Boa sorte

  12. Ola..carinha...beleza?

    testei....e a imagem...e ela não inverte e volta novamente...simplismente ela quando bate na borda direita....some...não aparecendo mais... :blush:

    é isto mesmo??

    Grato

    Eder, se você usar imagem com extensão JPG acontecerá isso que você relatou, use imagem com extensão BMP, por exemplo nomedaimagem.bmp.

    No entanto, vou deixar outro código onde a imagem não bate e volta, ela some na direita e reaparece na esquerda, como neste código não há inversão pode usar imagem JPG ou BMP.

    Se não desejar que a barra de Scroll horizontal apareça no Form quando a imagem tocar na borda direita, na propriedade do Form basta deixar HorzScrollBar | Visible como False.

    var
      Form1: TForm1;
      x: Integer = 1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     Timer1.Interval := 10;
     Form1.DoubleBuffered:=True;
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        image1.Left:=image1.Left + x;
        if image1.Left>ClientWidth then
        image1.Left:=ClientWidth - (ClientWidth + Image1.Width);
       end;
    end.

    Boa sorte.

  13. Como você disse que é para um carro, neste caso ele vai voltar de ré, para resolver isso basta você repetir o código para a segunda imagem com o carro invertido deixando-a invisível, assim quando a imagem1 chegar a borda direita do Form ela some e a imagem2 aparece e quando a imagem 2 chegar na borda esquerda ela some e a imagem1 reaparece sucessivamente.

    Aleksander, dá para utilizar a mesma imagem. Basta fazer um flip horizontal da mesma. O procedimento é o mesmo: ao atingir a margem direita ou esquerda é só inverter a imagem - veja como

    with Image1.Picture.Bitmap do
      Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height));
    O código é só este para as duas situações. Abraços
    Micheus, perfeito!! Abraço
    Ola..pessoal. muito Grato pelas ajudas... Gostei muito da dica do Aleksander porém......seguinte.. notei que o carrinho sai da esquerda e vai até a direita...e depois como o Aleksander menciona...ele volta de ré... não teria como ele sair da esquerda e quando chegar na margem direita, ele ir tipo sumindo.....pois senão acho que fica meio esquisito, pois como quando na diteira que ele bica a margem direito, e some rapidinho....... Teria como fazer assim?? valeu...pessoal abraço
    Eder, o colega Micheus resolveu o problema do carro voltar de ré, você vai achar muito interessante, assim que a imagem toca a borda do Form ela é invertida, use uma imagem .BMP.
    ...
    var
      Form1: TForm1;
       x: Integer = 1; 
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Timer1.Interval := 10;
    Form1.DoubleBuffered:=True;
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        Image1.Left:=Image1.Left + x;
        if Image1.Left>ClientWidth - Image1.Width-1 then
          begin
            x := x * -1;
        with Image1.Picture.Bitmap do
        Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height));
                 end;
        if Image1.Left<1 then
          begin
            x := x * -1;
       with Image1.Picture.Bitmap do
       Canvas.CopyRect(Canvas.ClipRect, Canvas, Rect(Width-1, 0, -1, Height));
          end;
      end;
    end.

    Abraço

  14. Olá amigos, uso este código para ampliar minhas imagens, para a imagem não fugir da tela eu a coloco dentro de um Panel, porém ao clicar com o mouse sobre a imagem ocorre o seguinte:

    A imagem é amplidada a partir do canto superior esquerdo, gostaria que ela fosse ampliada a partir do local exato do clique do mouse, assim quando eu desejar visualizar um detalhe na imagem clicaria sobre ele para ampliá-lo.

    Esta é a maneira que uso para ampliar clicando com o botão esquerdo do mouse mas se tiver outra maneira agradeceria a colaboração.

    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
    i: integer;
    begin
       for i:= 1 to 10 do
       form1.Image1.Width:= form1.Image1.Width + 5;
       form1.Image1.height:= form1.Image1.height + 10;
    Para diminuir eu uso um Button pois ainda não aprendi a colocar este código no botão direito do mouse para diminuir.
    var
    i: integer;
    begin
       for i:= 1 to 10 do
       form1.Image1.Width:= form1.Image1.Width - 5;
       form1.Image1.height:= form1.Image1.height - 10;

    Grato a todos pela atenção!

  15. Olá Eder, como os colegas praticamente resolveram a questão vou deixar um exemplo que uso, neste exemplo a imagem vai até a borda do Form e volta.

    ...
    var
      Form1: TForm1;
       x: Integer = 1; 
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     Timer1.Interval := 10;
     Form1.DoubleBuffered:=True;
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        Image1.Left:=Image1.Left + x;
        if Image1.Left>ClientWidth - Image1.Width-1 then
          begin
            x := x * -1;
                 end;
        if Image1.Left<1 then
          begin
            x := x * -1;
          end;
      end;
    end.

    Como você disse que é para um carro, neste caso ele vai voltar de ré, para resolver isso basta você repetir o código para a segunda imagem com o carro invertido deixando-a invisível, assim quando a imagem1 chegar a borda direita do Form ela some e a imagem2 aparece e quando a imagem 2 chegar na borda esquerda ela some e a imagem1 reaparece sucessivamente.

    Boa sorte.

  16. Olá Mestre Sam, faça o seguinte:

    No Corel

    No menu Editar clique em Inserir novo objeto

    Na janela Inserir novo objeto marque a opção Criar do arquivo

    Clique no botão Procurar e localize seu arquivo feito no Photoshop

    (Perceba que ao lado do botão Procurar tem a opção Vincular, mais abaixo explico para que serve)

    Após localizar clique em OK o arquivo será inserido na página

    A opção Vincular funciona da sequinte maneira:

    Se você marcar esta opção, edite o arquivo normalmente no Photoshop e salve.

    No Corel para ele receber as alterações que você fez no Photoshop, selecione a imagem, no menu Editar clique em Vínculos,

    na janela Vínculos clique em Atualizar agora e o arquivo que está no Corel receberá todas as alterações feitas no Photoshop.

    Se não quiser mais que o arquivo tenha vínculo clique em Quebrar vínculo na janela Vínculo.

    (Só quebre o vínculo se não precisar mais editar o arquivo no Photoshop).

    Uma sugestão, salve ao fundo do cartão com as imagens no Photoshop sem as letras e depois insira no Corel, as letras você pode digitar no Corel para facilitar as alterações sem precisar ficar editando no Photoshop sempre que tiver a necessidade de alterar algo.

    Boa sorte.

  17. Olá amigos, tenho 2 questões sobre Barra de progresso.

    Questão 1: Estou usando um arquivo de recurso que toca som .Wav, desejo colocar uma Barra de progresso que acompanhe a execução da música, e um Label que exiba o progresso em porcentagem, não sei como me referir ao arquivo de Recurso para usar a Barra de progresso e o Label.

    A chamada do som Wav.

    {$R *.dfm}
    {$R SomWave.Res}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    PlaySound('SomWave',hInstance,Snd_Async or Snd_Memory or Snd_Resource);
    end;
    end.
    Questão 2: Aqui tenho o código que uso para mp3, consegui colocar uma Barra de progresso. Desejo que ao completar a Barra de progresso o botão Stop do MediaPlayer1 seja clicado, tentei algumas combinações sem resultado. É possível uma Barra de progresso cheia acionar o clique de um botão? A chamada do som mp3
    {$R *.dfm}
    {$R Som.res}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    rStream: TResourceStream;
    fStream: TFileStream;
    fname: string;
    begin
    fname:=ExtractFileDir(Paramstr(0))+'Som.mp3';
    rStream := TResourceStream.Create (hInstance, 'Som', RT_RCDATA);
    try
    fStream := TFileStream.Create(fname, fmCreate);
    try fStream.CopyFrom(rStream, 0);
    finally
    fStream.Free;
    end;
    finally
    rStream.Free;
    end;
    ProgressBar1.Max:=0;
    MediaPlayer1.Close;
    MediaPlayer1.FileName:=fname;
    MediaPlayer1.Open;
    ProgressBar1.Max := mediaPlayer1.Length;
    end;
    
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        ProgressBar1.Position := MediaPlayer1.Position;
    end;
    end.

    Grato a todos pela atenção.

  18. Olá amigos, abaixo tem o exemplo de uma Dll que pequei aqui no forum, troquei algumas letras e inseri o Clear e o SetFocus no Edit, essa Dll possui números e funciona perfeitamenta.

    A Dll:

    Library Serial; 
    function Chave(Senha : integer): integer; export;
    begin
     Senha := 123;
     Chave := Senha; 
     end;
    exports
     Chave;
    begin
    end.
    Para usar:
    Function Chave(Senha : Integer):Integer; external 'Serial.dll';
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    var
    N, C : Integer;
    begin
    N := StrToInt(Edit1.Text);
    C := Chave(StrToInt(Edit1.Text));
    if N = C then
    ShowMessage('Serial válido, você acertou!')
    else
    ShowMessage('Serial inválido!');
    edit1.Clear;
    edit1.SetFocus;
    end;
    end.
    Desejo colocar uma palavra no lugar dos números, funciona e depois dá erro. Fiz assim: A Dll alterada por mim:
    Library Senha;
    function Chave(Senha : string):string; export;
    begin
     Senha := 'Delphi';
     Chave := Senha;
     end;
    exports
     Chave;
    begin
    end.
    Para usar (se funcionasse é claro)
    Function Chave(Senha : string):string; external 'Senha.dll';
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    var
    N, C : string;
    begin
    N :=Edit1.Text;
    C := Chave(Edit1.Text);
    if N = C then
    ShowMessage('Serial válido, você acertou!')
    else
    ShowMessage('Serial inválido!');
    edit1.Clear;
    edit1.SetFocus;
    end;
    end.

    Depois do clique no botão da erro com essa mensagem:

    Project1.exe raised exception class EinvalidPointer with message ‘Invalid pointer operation’. Process stopped. Use Step or Run to continue.

    Pergunto:

    Como onde está o meu erro?

    Grato a todos pela atenção

×
×
  • Criar Novo...