AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Resize: Inhalt von MainForm bleibt unverändert

Ein Thema von Nikodel · begonnen am 28. Jan 2019 · letzter Beitrag vom 30. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2      
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#1

Resize: Inhalt von MainForm bleibt unverändert

  Alt 28. Jan 2019, 17:13
Hi,
mein MainForm enthält ganz unten einen TScrollBar über die volle Breite und darüber ein 'Image1: TImage' mit
Align=alBottom, Anchors=[akLeft,akRight,akBottom], AutoSize=false. Der ScrollBar hat die gleichen Einstellungen für Align und Anchors.

Wenn das Programm gestartet und der Inhalt von Image1 erzeugt ist, und ich mit der Mouse das Fenster verbreitere, ändert sich die Größe von Image1 nicht, was ich mit den Einstellungen für Align und Anchors erwartet hätte.
Der ScrollBar wird jedoch automatisch an die neue Breite angepasst.
Wenn ich AutoSize=true setze, dann sehe ich keinen Inhalt in Image1, mit AutoSize=false aber schon.

Natürlich könnte ich mit OnResize von MainForm das alles extra programmieren, aber geht das nicht direkt?
Warum passt sich der ScrollBar an, aber Image1 nicht?
Oder hat mein Delphi XE4 da einen Fehler?

Tipps sind sehr willkommen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#2

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 28. Jan 2019, 17:27
Tipps sind sehr willkommen
Etwas Source-Code auch...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 28. Jan 2019, 19:33
Hallo,
bitte die Pas und die DFM posten als Minimal-Beispiel.

Vielleicht liegt ja dein Image nicht direkt auf dem Form,
sondern auf einem Panel oder was ähnlichem.

PS:
Hab gerade mal mit Delphi XE4 ein neues Projekt erzeugt,
klappt genauso wie erwartet.
Heiko

Geändert von hoika (28. Jan 2019 um 19:43 Uhr)
  Mit Zitat antworten Zitat
28. Jan 2019, 20:01
Dieses Thema wurde am "28. Jan 2019, 20:01 Uhr" von "Luckie" aus dem Forum "Object-Pascal / Delphi-Language" in das Forum "GUI-Design mit VCL / FireMonkey / Common Controls" verschoben.
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#5

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 11:17
Hi,
die gewünschten Dateien, .dfm und .pas, sind in der Anlage zu finden.
Die .pas habe ich jedoch um die großen Teile gekürzt. Aber es befinden sich alle deklarierten Funktionen und Prozeduren darin.

Hoffentlich reicht das so. Wenn nicht, kann ich auch den kompletten Code senden, aber das wollte ich euch ersparen.

Übrigens:
Wenn ich mich hier im Forum anmelde und dann eine Anfrage erstelle oder einen Beitrag beantworte, muss ich mich zum Versenden nochmal anmelden - jetzt z.B. wieder, um den Anhang anzufügen.
Ist das normal?
Angehängte Dateien
Dateityp: zip fuerForum.zip (5,3 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 11:36
Hallo,

object Image1: TImage
Left = 0
Top = 68
Width = 933
Height = 458
Align = alBottom
end

Das seh ich erst mal keine Anchors.

object ScrollBarTage: TScrollBar
Left = 0
Top = 526
Width = 933
Height = 17
Align = alBottom
PageSize = 0
TabOrder = 7
OnScroll = ScrollBarTageScroll
end

und hier auch nichts.

OK, habe dann doch mal Delphi aufgemacht.
Du benutzt Align und Anchors in einem Formular, warum?.
Das würde ich ändern.
Anchors sind ja moderner, also stell das Align auf alNone.
Heiko

Geändert von hoika (29. Jan 2019 um 11:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#7

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 11:42
Und was muss man tun, um das von dir beschriebene Verhalten zu reproduzieren?

Übrigens:
Bist du sicher, daß sich wirklich die Breite des TImage-Controls nicht ändert, oder lediglich deine Zeichenoperationen die neue Breite nicht auswerten?
Zeichnest du überhaupt neu, wenn sich die Breite ändert?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#8

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 12:21
Hab's gerade mal mit Delphi Rio (10.3) ausprobiert und das Form funktioniert wie gewünscht, image1 wird in der Breite geändert wenn das Form resized wird, sein Inhalt (habe mal eine größere Grafik reingeladen) wird nicht geändert, man sieht halt den jeweils in in den sichtbaren Bereich passenden Teil des Bildes.

Align und Anchors sind übrigens nur verschiedene Methoden im Prinzip das Gleiche zu erreichen; Align ist neuer und hat daher Präzedenz. Die Anchors werden nur im DFM-File gespeichert wenn Align auf none gesetzt ist.

Übrigens: wenn dein Ziel ist, ein größeres Bild im Form scrollen zu können fängst Du das falsch an. Dazu brauchst Du eine TScrollbox, in die Du das TImage packst. Die TScrollbox ist alBottom (oder alClient) aligned, das TImage innerhalb der Scrollbox auf Position (0,0) gesetzt, mit Autosize = true und Align = alNone. Die Scrollbox bekommt automatisch Scrollbars wenn das TImage zu groß für die client area der Scrollbox ist und Du kannst dann den sichtbaren Bereich des Images mit den Rollbalken verschieben. Wenn Du das Bild zoomen können willst sollte das wie folgt gehen: Nachdem Du ein Bild geladen hast (mit Autosize = TRUE) setzt Du Autosize of False und Stretch sowie Proportional auf true. Merk Dir Größe des TImage in Feldern des Forms, das ist die Basis für Zoomfaktor 1. Um das Bild zu zoomen berechnest Du die neue Größe des TImage durch Multiplikation der Basisdimensionen mit dem Zoomfaktor und setzt TImage width und height entsprechend.
Peter Below
  Mit Zitat antworten Zitat
Nikodel

Registriert seit: 11. Jan 2019
20 Beiträge
 
Delphi XE4 Professional
 
#9

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 12:51
Hi,

vorab noch eine Info: es handelt sich um ein VCL-Programm, nicht FMX!

Zu hoika:
Die Werte für Align und Anchors gebe ich im Objektinspektor ein. Dabei war wichtig, dass Align=Bottom zuerst für den ScrollBar und dann für Image1 angegeben wurde. In der anderen Reihenfolge hängt der ScrollBar über dem Image1.
Warum in der .dfm Datei nichts für Anchors steht, kann ich nicht sagen. Was soll ich denn sonst noch tun, damit die im Objektinspektor eingegebenen Werte auch alle in der .dfm Datei landen?
Würde es helfen, manuell die Werte einzutragen? - bisher habe ich die .dfm Datei nie angerührt.

Ich hab's auch mit Align=None probiert. Die Größe von Image1 wird auch damit nicht automatisch angepasst.

Zu Uwe Raabe:
Zitat:
Und was muss man tun, um das von dir beschriebene Verhalten zu reproduzieren?
Genau um diese Frage geht es.
Ich könnte natürlich im OnResize von MainForm die Größe von Image anpassen. Nur frage ich mich, wozu die Einstellungen in Align und Anchors dann gut sind, zumal ja der ScrollBar schon automatisch angepasst wird, aber Image1 eben nicht - beide mit den selben Einstellungen für Align und Anchors.

Und die Größe von Image1 wird wirklich nicht angepasst. Der Plot passt sich an die Größe von Image1 an. Nach Vergrößerung des MainForm bleibt der erzeugte Plot - mit neuem Aufruf zum Plotten - unverändert groß.

Zu peterbelow:
Das sind gute Tipps. Leider bin ich noch nicht so fit mit Delphi und vor allem noch nicht mit den vielen Möglichkeiten der Tool-Palette. Ich habe das Zoomen und die entsprechenden Anpassungen des ScrollBars selber programmiert.
Beim nächsten mal weiß ich es dann
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#10

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 29. Jan 2019, 15:18
Zitat:
Und was muss man tun, um das von dir beschriebene Verhalten zu reproduzieren?
Genau um diese Frage geht es.
Also, die Schritte des von dir beschriebenen Verhaltens
Zitat:
Wenn das Programm gestartet und der Inhalt von Image1 erzeugt ist, und ich mit der Mouse das Fenster verbreitere, ändert sich die Größe von Image1 nicht
solltest du schon aufzählen können. Insbesondere, wie man den Part "der Inhalt von Image1 erzeugt ist" erschließt sich mir noch nicht.

Wenn ich ein entsprechend großes JPG in das Image lade, wird das allerdings schon richtig dargestellt, was in diesem Fall heißt, beim Vergrößern sehe ich mehr vom Bild. Damit ist eigentlich die Aussage "ändert sich die Größe von Image1 nicht" schon widerlegt, denn das Control Image1 ändert seine Größe schon. Was sich nicht ändert, ist die Größe seines Inhalts.

Ich könnte natürlich im OnResize von MainForm die Größe von Image anpassen. Nur frage ich mich, wozu die Einstellungen in Align und Anchors dann gut sind, zumal ja der ScrollBar schon automatisch angepasst wird, aber Image1 eben nicht - beide mit den selben Einstellungen für Align und Anchors.

Und die Größe von Image1 wird wirklich nicht angepasst. Der Plot passt sich an die Größe von Image1 an. Nach Vergrößerung des MainForm bleibt der erzeugte Plot - mit neuem Aufruf zum Plotten - unverändert groß.
Dann liste doch bitte exakt alle Schritte auf, die nötig sind, um dieses Verhalten nachzustellen. Mit den bereitgestellten Sourcen konnte ich nämlich keinen Plot hervorzaubern.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz