Управление сверху, как может сделать TPanel?
Моя программа выполняет трудоемкую задачу, и я хотел бы отобразить TImage в середине окна приложения, но он не останется сверху - мой VST всегда находится сверху. Тем не менее, когда я использую TPanel, он остается на вершине? Как я могу сделать так, чтобы мой TImage сделал это?
На самом деле, решение, которое применяется ко всем элементам управления, было бы великолепно:)
Спасибо!
2 ответа
Вам нужен оконный элемент управления (то есть элемент управления с дескриптором окна или "правильный" элемент управления) для отображения вашего сообщения, потому что не оконный элемент управления не может быть виден над оконным элементом управления. Самое простое решение - разместить TImage
в TPanel
и установить Image1.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?