Управление сверху, как может сделать TPanel? - PullRequest
0 голосов
/ 20 марта 2011

Моя программа выполняет трудоемкую задачу, и я хотел бы отобразить TImage в середине окна приложения, но он не останется сверху - мой VST всегда находится сверху.Тем не менее, когда я использую TPanel, он остается на вершине?Как я могу заставить мой TImage делать это?

На самом деле, решение, которое применимо ко всем элементам управления, было бы великолепно:)

Спасибо!

Ответы [ 2 ]

7 голосов
/ 20 марта 2011

Вам необходим оконный элемент управления (то есть элемент управления с дескриптором окна или «правильный» элемент управления) для отображения вашего сообщения, поскольку не оконный элемент управления не может быть виден над оконным элементом управления,Самое простое решение - поместить 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;

Пример результата http://privat.rejbrand.se/formdraw.png

1 голос
/ 20 марта 2011

TImage не имеет связанного с ним окна, и в этом разница между ним и панелью.

Добавьте панель и поместите изображение внутри панели, то есть родитель изображения является панелью. Затем вы можете вывести изображение на передний план, перенеся панель на передний план.

Ты думал о том, чтобы скрыть свой VST?

...