Formularbreite zur Laufzeit ändern
Nabend!
Ich habe ein Formular, welches auf der rechten Hälfte erweiterte Einstellungen anzeigt. Beim OnCreate Ereignis wird nur die linke Hälfte angezeigt (also ist die Breite nur noch die Hälfte der eigentlichen Breite). Dann dachte ich zum Anzeigen der erweiterten Einstellungen an einen Button, der die rechte Seite anzeigen lassen soll, den ich beim OnClick einfach die Anweisung frm_NewEvent.Width := 850; ausführen lasse. Allerdings kriege ich genau zu der Anweisung eine Zugriffsverletzung. Wie löse ich das Problem? Danke. |
Re: Formularbreite zur Laufzeit ändern
Das sollte eigentlich so gehen. Zeig mal den Code
|
Re: Formularbreite zur Laufzeit ändern
Der Quelltext an sich ist schon richtig. Wenn exakt diese Zeile nicht geht und frm_NewEvent das richtige Formular ist, dann lässt das eigentlich nur den Schluss zu, dass du ein Speicherproblem hast. D.h. dass du Speicher überschreibst, der eigentlich andere Daten enthält. Eine mögliche Ursache wären dann dynamische Arrays.
Aber wenn es das Formular selbst ist, dann dürfte das frm_NewEvent in dem Befehl eigentlich nicht nötig sein. Wie wäre es, wenn du einfach nur Width := 850; schreibst, geht es dann? |
Re: Formularbreite zur Laufzeit ändern
Zitat:
Danke euch :thumb: |
Re: Formularbreite zur Laufzeit ändern
Ich vermute, dass du eine Instanz des Formulars erstellst und anzeigst, die aber nicht in der Variablen landet. Oder dass eine weitere Instanz erstellt wird, so dass z.B. eine automatisch erstellte Instanz nicht mehr in der Variablen liegt, usw.
Da gibt es viele Erklärungen. Grundsätzlich ist jedenfalls die Angabe der Variablen bei einem Zugriff aus einer Methode des Formulars nicht nötig, deshalb sollte man es auch weglassen. Falls es absichtlich mal mehrere Instanzen gibt zum Beispiel. Wenn, dann kannst du Self benutzen, falls du den Zugriff auf das eigene Formular deutlich machen willst (bei gleichen Namen, z.B. einem Parameter Width für die aktuelle Methode). Also z.B.
Delphi-Quellcode:
, aber besser ist es natürlich gleiche Bezeichner zu vermeiden.
Self.Width := Width;
|
Re: Formularbreite zur Laufzeit ändern
Zitat:
// Danke dir :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 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