Ir para conteúdo
Fórum Script Brasil
  • 0

Posicionar Imagem no Memo


Aleksander

Pergunta

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

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
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 ?

outros comentarios sobre o assunto:

http://www.activedelphi.com.br/forum/viewt...639057af78dbea7

http://forum.clubedelphi.net/viewtopic.php...d0b071186815741

http://www.activedelphi.com.br/forum/viewt...a10cce4578636f6

http://forum.clubedelphi.net/viewtopic.php...d605f0bab949df7

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0
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.

Link para o comentário
Compartilhar em outros sites

  • 0
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.

Observe que este procedimento apenas "disse" ao Image para desenhar-se na área (canvas) pertencente ao Memo. O componente Memo em si, não tem qualquer compromisso com a impressão da imagem. É diferente de quando você adicionar uma imagem em um documento RTF (uso do RichEdit) porque ele é incorporado ao documento (não é uso de Parent) e, em teoria, a impressão deve ocorrer sem problemas. Se houver restrição do componente, mas ao abrir o documento pelo Word, você verá que a imagem está lá e daí, com certeza, imprimirá. (já citei algumas ref. sobre o RichEdit em um tópico recente)

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?
Como você está imprimindo "na mão", falta apenas acrescentar a impressão do componente Image. Voce deve usar o canvas da impressora para imprimir a imagem na posição desejada.

Voce pode usar duas opções:

1) desenhar a imagem dentro de uma área retangular definida - tamanho ajustado ao retângulo: Printer.Canvas.StretchDraw(Rect, Image1);

2) desenhar a imagem na posição especificada - tamanho original: Printer.Canvas.Draw(x, y, Image);

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...