2012-05-24 18 views
6

Ich habe ein TForm-Objekt, dessen Höhe größer ist als die erforderliche vertikale Auflösung meines Bildschirms.Screenshot des Formulars, dessen Abmessungen größer als die Bildschirmabmessungen sind

Aus irgendeinem Grund lässt Windows den sichtbaren (Client?) Bereich des Formulars die Bildschirmauflösung nicht überschreiten, so dass vertikale Bildlaufleisten auf meinem Formular angezeigt werden.

Wie bekomme ich ein TBitmap-Bild oder Screenshot des gesamten Formulars (keine Bildlaufleisten, alle Formularkomponenten sichtbar), so dass der gesamte Inhalt des Formulars sichtbar ist?

+0

Versuchen Sie die Methode ['GetFormImage'] (http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TCustomForm.GetFormImage)? ; – RRUZ

+0

Ja, 'GetFormImage' ist das, was wir gerade benutzen. – ardnew

+0

Erstellen Sie zum Beispiel ein 'TForm'-Objekt und platzieren Sie viel vertikalen Inhalt, damit Ihre (aktivierten) vertikalen Bildlaufleisten automatisch angezeigt werden. Die Gesamthöhe des Inhalts sollte Ihre vertikale Bildschirmauflösung überschreiten. Rufen Sie 'GetFormImage' auf, und Sie werden sehen, dass niedrigerer Inhalt verworfen wird. – ardnew

Antwort

8

Zuerst müssen Sie sicherstellen, dass das Formular keine Bildlaufleisten hat. Dafür können Sie einen Event-Handler für FormConstrainedResize schreiben und MaxWidth und MaxHeight an Ihre Bedürfnisse anpassen. Wenn die Formulargröße während des Entwurfs beschränkt ist, legen Sie die erforderliche Breite und Höhe im FormCreate-Ereignis auf die gewünschten Werte fest.

Jetzt können Sie GetFormImage verwenden, um den Screenshot zu erhalten.

+0

Ausgezeichnet, danke. – ardnew