私のプログラムは時間のかかるタスクを実行しており、アプリケーション ウィンドウの中央に TImage を表示したいのですが、一番上に表示されません。私の VST は常に一番上にあります。しかし、TPanel を使用すると、一番上に表示されたままになりますか? TImageにそれをさせるにはどうすればよいですか?
実際、すべてのコントロールに適用される解決策は素晴らしいでしょう:)
ありがとう!
ウィンドウ化されていないコントロールはウィンドウ化されたコントロールの上に表示できないため、メッセージを表示するには、ウィンドウ化されたコントロール (つまり、ウィンドウ ハンドルを持つコントロール、または「適切な」コントロール) が必要です。最も簡単な解決策は、TImage
を aTPanel
および setImage1.Align := alClient
およびに配置することPanel1.BorderStyle := bsNone
です。
通常のコントロールの上に半透明のビットマップを描画したい場合は、私がいつも行っているように行うことができます。
procedure TForm1.Button1Click(Sender: TObject);
var
bm: TBitmap;
png: TPngImage;
begin
// The form contains a hidden TPanel (somewhere on the form)
// with a TImage (alClient).
// png is a PNG image with an alpha channel
png := TPngImage.Create;
try
png.LoadFromFile('C:\Users\Andreas Rejbrand\Pictures\alpha.png');
// Create bitmap of form and blend PNG on it
bm := GetFormImage;
try
bm.Canvas.Draw(0, 0, png);
Image1.Picture.Bitmap := bm;
finally
bm.Free;
end;
Panel1.Align := alClient;
Panel1.BringToFront;
Panel1.Show;
finally
png.Free;
end;
end;
TImage にはウィンドウが関連付けられておらず、それがパネルとの違いです。
パネルを追加し、画像をパネル内に配置します。つまり、画像の親はパネルです。次に、パネルを前面に持ってくることで、画像を前面に持ってくることができます。
VST を非表示にすることを考えましたか?