![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вот есть у меня TMEMO. Кто-нить знает, как поставить на фон красивую картинку? Поиск по гуглу сказал, что нельзя. Я придумал только немного "странный" метод - по событию OnPaint в DC формы отрисовывать картинку, а поверх нее текст. В принципе работает, поглючивает, но довести до идеала думаю можно. НО может возможно как-нить попроще? 
		
	
		
		
		
		
			
		
		
		
		
		
			Или может есть другой компонент, который являет собой по сути МЕМО, но с возможностью ставить картинку? Последний раз редактировалось Bargest, 30.11.2010 в 19:40.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Только так: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	http://www.sql.ru/Forum/actualfile.aspx?id=3889623 Код: 
	  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    procedure MemoWndProc(var Message: TMessage); 
  public
    { Public declarations }
  end;
var
  Form1	: TForm1;
  Bmp	: TBitmap;
  FMemoInstance : Pointer; 
  FPrevMemoProc : Pointer; 
implementation
{$R *.DFM}
procedure TForm1.MemoWndProc(var Message: TMessage); 
var 
  PS		: TPaintStruct;
  DC		: HDC;
  I, Y		: Integer;
begin 
  with Message do 
    case Msg of 
      WM_PAINT :
      begin
	DC := BeginPaint(Memo1.Handle, PS);
	SetBkMode(DC, TRANSPARENT);
	SelectObject(DC, Memo1.Font.Handle);
	StretchBlt(DC, 0, 0, Memo1.Width, Memo1.Height, Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, SRCCOPY);
	Y := 1;
	for I := 0 to Memo1.Lines.Count - 1 do
	begin
	  TextOut(DC, 1, Y, PChar(Memo1.Lines[i]), Length(Memo1.Lines[i]));
	  inc(Y, abs(Memo1.Font.Height) + 2);
	end;
	DeleteObject(Memo1.Font.Handle);
	EndPaint(Memo1.Handle, PS);
      end;
    else 
      Result := CallWindowProc(FPrevMemoProc, Form1.Memo1.Handle, Msg, wParam, lParam); 
    end; 
end; 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Bmp := TBitmap.Create;
  Bmp.LoadFromResourceName(hInstance, 'ICE');
  FMemoInstance := MakeObjectInstance(MemoWndProc); 
  FPrevMemoProc := Pointer(GetWindowLong(Memo1.Handle, GWL_WNDPROC)); 
  SetWindowLong(Memo1.Handle, GWL_WNDPROC, Longint(FMemoInstance)); 
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if Memo1.HandleAllocated then
    SetWindowLong(Memo1.Handle, GWL_WNDPROC, Longint(FPrevMemoProc));
  Bmp.Free;
end; | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Мда. Значит, кроме как ручной отрисовкой текста никак 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	  ладн, поразбираюсь с TRichView | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А, так TRichView - сторонний? я нашел в стандартных ток TRichEdit, и в нем нет ничего похожего на Picture, Image, Bitmap, Background и т.п. Если сторонний - то все же лучше юзать MEMO... 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А может CoolMemo ? Там есть свойство TransparencyLevel и если под ним разместить картинку получится довольно красиво... 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Да TRichView сторонний, причем последние версии платные (но он очень удобен, им пользуются создатели аськи и скайпа, это так, для сравнения, чтоб понял что к чему). У него есть функции почти все, что есть в ворде (вставка картинок, ссылок в текст, и т.д.). И с ним меньше мороки (старые версии досих пор остались бесплатными, и они вполне тебя устроят). 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	А если использовать стандартный мемо, то сильно уж много мороки...  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 да уж. А не подскажете, старые версии - это до какой? и пойдут ли они на DelphiXE? 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Не знаю до какой версии, но могу выслать исходники последней бесплатной версии (скажите куда выложить). 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 лучше всего на почту <адрес удален>  
		
	
		
		
		
		
			
		
		
		
		
		
			![]() Последний раз редактировалось Bargest, 01.12.2010 в 01:23.  |