Steuerelemente oben, wie es tpanel tun kann?
Frage
Mein Programm erledigt eine zeitaufwändige Aufgabe, und ich möchte in der Mitte des Anwendungsfensters einen Zeitplan anzeigen, aber es bleibt nicht oben - meine VST ist immer oben. Wenn ich jedoch ein TPANEL benutze, bleibt es oben? Wie kann ich meinen Timage dazu bringen, das zu tun?
Tatsächlich wäre eine Lösung, die für alle Steuerungen gilt, großartig :)
Vielen Dank!
Lösung
Du brauchst ein Fenstersteuerung (Das heißt, ein Steuerelement mit einem Fenstergriff oder einer "richtigen" Steuerung), um Ihre Nachricht anzuzeigen, da eine nicht erwinderte Steuerung über einem Fenstersteuerung nicht sichtbar sein kann. Die einfachste Lösung ist, die zu platzieren TImage
in einem TPanel
und set Image1.Align := alClient
und Panel1.BorderStyle := bsNone
.
Wenn Sie eine halbtransparente Bitmap über Ihre gewöhnlichen Steuerelemente zeichnen möchten, können Sie es so tun, als ob ich es immer tun kann:
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;
Andere Tipps
Ein Timage hat kein Fenster, das damit verbunden ist, und das ist der Unterschied zwischen ihm und dem Panel.
Fügen Sie ein Panel hinzu und legen Sie das Bild in das Panel, dh das übergeordnete Bild des Bildes ist das Panel. Dann können Sie das Bild nach vorne bringen, indem Sie das Feld nach vorne bringen.
Hast du darüber nachgedacht, deine VST zu verbergen?