Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Formular an Objekte anpassen (https://www.delphipraxis.net/151945-formular-objekte-anpassen.html)

Delphi-Narr 7. Jun 2010 16:14

Delphi-Version: 2005

Formular an Objekte anpassen
 
Hallo,
ich habe ein Programm, bei dem der Nutzer die größe eines Objekts auf der Form anpassen kann (TImage).
Doch es vergrößert sich nur die Scrollbar, nicht aber die Zeichenfläche (Ich passe erst Höhe und Breite des Timage an, dann fülle ich es neu).
Weiß jemand, woran das leigen könnte???

Liebe Grüße!

s.h.a.r.k 7. Jun 2010 16:20

AW: Formular an Objekte anpassen
 
Ein TImage hat doch keine Scrollbar, daher vergrößerst du irgendwas anderes.

Delphi-Narr 7. Jun 2010 16:29

AW: Formular an Objekte anpassen
 
Nein, das Formular bekommt Scrollbars. Das TImage wird vergrößert (von width 800 auf 1200, was dann größer ist als der Bildschirm:

Delphi-Quellcode:
     Form2.Bild.width:=Breite.value;
     Form2.Bild.height:=hoehe.value;
     Form2.Bild.Canvas.Brush.color:=HGFarbe.brush.color;
     Form2.Bild.canvas.fillrect(rect(0,0,Form2.Bild.width,Form2.Bild.height));
     Form2.show;
     Form3.hide;
Doch das Image wird nicht größer...

DeddyH 7. Jun 2010 16:40

AW: Formular an Objekte anpassen
 
Nimm mal statt des Image eine Paintbox und zeichne in deren OnPaint-Ereignis.

himitsu 7. Jun 2010 16:46

AW: Formular an Objekte anpassen
 
Wenn ein TImage vergrößert wird, dann vergrößert sich nicht deren Inhalt.
(abgesehn von der Stretchgeschiechte, wo das Bild nur verzerrt angezeigt wird)

Wenn dieses also mit angepaßt werden soll, dann mußt du auch noch das enthaltene Bild vergrößern.

Namenloser 7. Jun 2010 16:46

AW: Formular an Objekte anpassen
 
Wie wäre es mit Delphi-Referenz durchsuchenTForm.AutoSize?

DeddyH 7. Jun 2010 16:47

AW: Formular an Objekte anpassen
 
Er hat ja gar kein Bild geladen, sondern zeichnet selbst auf dem Canvas herum (zumindest laut Code).

Namenloser 7. Jun 2010 16:48

AW: Formular an Objekte anpassen
 
Zitat:

Zitat von DeddyH (Beitrag 1026427)
Er hat ja gar kein Bild geladen, sondern zeichnet selbst auf dem Canvas herum (zumindest laut Code).

Ja, aber er verändert trotzdem die Größe des Images.

DeddyH 7. Jun 2010 16:54

AW: Formular an Objekte anpassen
 
Richtig, aber ich bezog mich auf
Zitat:

Doch das Image wird nicht größer...
Logisch, wenn man nicht im richtigen Ereignis zeichnet.

himitsu 7. Jun 2010 16:55

AW: Formular an Objekte anpassen
 
Wenn in TImage kein Bild enthalten ist, dann wird beim Zugriff auf das Canvas ein TBitmap erstellt und .Picture zugewiesen (irgendwo muß die Zeichnung ja rein).
Diese Bitmap bekommt genau die Größe des TImage (halt nur soviel wie nötig).

Bei einer Größenänderung werden aber enthaltene Bilder nimals angepaßt.

Heißt also, wenn man ein TImage in seiner Größe ändert, dann muß auch das enthaltene TBitmap mit angepaßt werden (vorallem bei einer Vergrößerung des TImage, wo das Bitmap dann zu klein wäre), wenn man dieses für eine Zeichenausgabe im kompetten Bereich nutzen will.

Delphi-Narr 7. Jun 2010 16:57

AW: Formular an Objekte anpassen
 
Zitat:

Zitat von DeddyH (Beitrag 1026427)
Er hat ja gar kein Bild geladen, sondern zeichnet selbst auf dem Canvas herum (zumindest laut Code).

Stimmt. Es ist, wenn man das geladene Bild löschen möchte und es in der Größe Breite x Höhe wieder neu haben will. Darum wird erst die Höhe und Breite verändert, dann wird das ganze übermalt...

Auch OnFormCreate wird die Größe angepasst, doch da funktioniert das. Es funktioniert nur nicht, wenn es über die Fenstergröße hinweg vergrößert wird.

Edit: Mit Bild.picture.width:=Breite.value klappt es, danke!!!

Namenloser 7. Jun 2010 16:58

AW: Formular an Objekte anpassen
 
Achso, jetzt verstehe ich, was ihr meint. Ich dachte er wollte verhindern, dass das Formular Scrollbalken bekommt, wenn das Bild vergrößert wird, sondern sich stattdessen selbst an die Größe des Bildes anpasst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz