AGB  ·  Datenschutz  ·  Impressum  







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

Formularbreite zur Laufzeit ändern

Ein Thema von BackOrifice · begonnen am 13. Feb 2009 · letzter Beitrag vom 13. Feb 2009
Antwort Antwort
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#1

Formularbreite zur Laufzeit ändern

  Alt 13. Feb 2009, 21:58
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.
Henning
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Formularbreite zur Laufzeit ändern

  Alt 13. Feb 2009, 22:01
Das sollte eigentlich so gehen. Zeig mal den Code
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Formularbreite zur Laufzeit ändern

  Alt 13. Feb 2009, 22:05
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?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#4

Re: Formularbreite zur Laufzeit ändern

  Alt 13. Feb 2009, 22:08
Zitat von jaenicke:
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?
Wahnsinn, das ist es. Warum auch immer; mit frm_NewEvent (ja, dass ist die Variable der Form-Klasse), dann funktioniert es nicht - ohne ja.

Danke euch
Henning
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Formularbreite zur Laufzeit ändern

  Alt 13. Feb 2009, 22:36
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. Self.Width := Width; , aber besser ist es natürlich gleiche Bezeichner zu vermeiden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#6

Re: Formularbreite zur Laufzeit ändern

  Alt 13. Feb 2009, 22:53
Zitat von jaenicke:
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.
zOMG! Genau so ist es..... Automatisch werden ja von Delphi bei neuen Formularen die Variablen der Klasse angelegt - und ich habe das zwar die automatische Erzeugung ausgeschaltet aber nicht die Variable gelöscht

// Danke dir
Henning
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:45 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