2010-12-02 2 views

ответ

13

Это действительно возможно. В вашей форме, определить

private 
    { Private declarations } 
    FBitmap: TBitmap; 
    FBrush: HBRUSH; 
protected 
    procedure WndProc(var Message: TMessage); override;  

и сделать

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    FBitmap := TBitmap.Create; 
    FBitmap.LoadFromFile('C:\Users\Andreas Rejbrand\Pictures\AS20Utv.bmp'); 
    FBrush := 0; 
    FBrush := CreatePatternBrush(FBitmap.Handle); 
end; 

и

procedure TForm1.WndProc(var Message: TMessage); 
begin 
    inherited; 
    case Message.Msg of 
    WM_CTLCOLOREDIT, WM_CTLCOLORSTATIC: 
     if (Message.LParam = Edit1.Handle) and (FBrush <> 0) then 
     begin 
     SetBkMode(Message.WParam, TRANSPARENT); 
     Message.Result := FBrush; 
     end; 
    end; 
end; 

Конечно, вы можете обернуть это в компонент самостоятельно, скажем TEditEx. Если у меня будет время, я могу это сделать. (И, заметьте, что нет необходимости покупать дорогой (и, возможно, не то, что высокое качество) компонентов пакета от сторонней компании.)

Custom edit background http://privat.rejbrand.se/editbkg.png

+0

Почему это downvoted? – 2010-12-02 19:44:44

Смежные вопросы