![]() |
FormResize Procedure Funktionier nicht
Morgen an alle,
ich habe im Moment ein Problem. Ich habe eine Form mit FormStyle = fsMDIChild. ICh habe auf diesem Formular ein Pagecontrol. In der Resize Funktion soll nun das Pagecontrol auf die Größe der Form angepasst werden. Sobald ich in der Resizefunktion dem Pagecontrol die entsprechenden Werte zuweise wird die Funktion frühzeitig beendet ohne Fehlermeldung. was habe ich falsch gemacht ? GRuß Timb0 |
Re: FormResize Procedure Funktionier nicht
Woher weisst Du, daß die Function frühzeitig beendet wird?
Vielleicht solltest Du einfach mal debuggen? Also einen Breakpunkt in die erste Zeile dieser Function setzen un dann schrittweise schauen was passiert... Weil so ist das erst mal ein Ratespiel :glaskugel: Sherlock |
Re: FormResize Procedure Funktionier nicht
Daher weiss ich das, ich habe Breakpoints in die Komplette Funktion eingebaut und nach der ersten, der wo die Pagecontrol Eigenschaften verändert werden, wird bei den darauf folgenden Breakpoints nicht gehalten. Dabei Passier nichts. Kommentier ich das aus dann wird an allen anderen Breakpoints ausgeführt.
GRuß Timb0 |
Re: FormResize Procedure Funktionier nicht
dann mach mal ein try..ecxept drum rum und lass Dir den Text der Exception anzeigen.
|
Re: FormResize Procedure Funktionier nicht
Ok ich denke das PRoblem ist, dass ich die Form auf der das PageControll eingebettet ist Dynamisch erzeugen. Was ich raus gefunden habe ist, dass wenn man die grösse die Form ändert und diesen Wert dann abruft dieser sich nicht geändert hat. Ich habe Überhaupt keinen Einfluss mehr auf das Formular wenn ich auf den Zeiger der auf die erstellte Form zeigt zugreife. Was mache ich könnte das sein ?
gruß Timb0 |
Re: FormResize Procedure Funktionier nicht
Zitat:
Versteh nur Bahnhof. Erklär das mal ein Bisschen ausführlicher. |
Re: FormResize Procedure Funktionier nicht
Ok Sorry ist noch was früh für mich.
ALso worum es in meinem Projekt geht: Ich bekomme Messdaten von einer Rechensoftware, diese soll ich auswerten und Plotten. Ich habe dazu eine MDIForm angelegt welche die Daten verwaltet und dazu eine Form entworfen auf der ich ein Pagecontrol und ein Diagramm eingebettet habe. Diese Childformular will ich jetzt dynamisch erzeugen (was auch klappt) und dann während dem laufen der Software dynamisch Pages zum Pagecontrol hizuzufügen. Greife ich während dem Laufen mittels eines Zeigers ( der auf das Spezielle Formular zeigt) auf das Formular zu, dabei reagiert das Formular auf nichts mehr. Jetzt kommte meine Frage von eben ins Spiel. Wenn ich nun bei dem Formular die größe änderen und die gänderten daten dan abfragen will dann kann ich das nur machen wenn ich einen Button auf das Formluar lege und diesem die entsprechende Funktion zuweise. Greif ich über den Vorher angelegten Zeiger auf das Formular zu dann erhalte ich eine Expation die mir verbietet auf diese Adresse zu zu greifen. Und jetzt weiss ich nicht was ich machen könnte. Dynamisch habe ich schon oft steuerelemente hinzugefügt aber noch nie Formular auf denen ich dann wieder was hinzufüge. Kann es vielleicht sein, dass das PRoblem ist das ich quasi in einer Klasse Rumfummel die Dynamisch erzeugt habe womit sich die Zeigerstruktur verändert. Dann würde ich ja nicht mehr mit dem selben Zeiger darauf zugreifen ??? Ich hoffe das ist etwas besser erklärt was mein Probelm ist. GRuß und vielen Dank schonmal Timb0 |
Re: FormResize Procedure Funktionier nicht
Ich erzeuge auch Forms dann, wenn ich sie brauche.
Und greife auch darauf zu und es passiert kein Fehler. Wie erzeugst Du das Formular und die darauf liegenden Komponenten? Zeig vielleicht mal ein Bisschen Code. |
Re: FormResize Procedure Funktionier nicht
Also Bei dieser Funktion
Delphi-Quellcode:
Kann ich noch ganz locker auf das Formular zugreifen. Greif ich dan später auf einen der Zeiger aus der ListFenster zu dann sieht das so aus
procedure TForm1.MenuNeuesFensterClick(Sender: TObject);
var NewItem:TMenuItem; NewForm2:TForm2; str:String; begin str := Inputbox('Name Eingeben','Namen Des Diagramms eingeben',''); if StringlistFenster.IndexOf(str) < 0 then begin Newitem := TMenuitem.create(self); Newitem.caption := str; stringlistFenster.add(str); newitem.OnClick := Form1.DynMenuitem; MenuFenster.add(NEwitem); ListMenuItem.Add(@NEwitem); NewForm2 := TForm2.create(self); NewForm2.caption := str; NEwForm2.Name:=str; NEwForm2.Show; ListFenster.add(@NewForm2); end else ShowMEssage('Der Name Existiert bereits!'); end;
Delphi-Quellcode:
dann erhalte ich eine Fehlermeldung.
PRocedure TForm1.DynMenuitem(Sender:Tobject);
var i:Integer; PForm2:^TForm2; begin i:= MenuFenster.IndexOf((Sender as TMenuItem)); PForm2 := ListFenster.Items[i-2]; PForm2^.Height := 130 end; Gruß Timb0 |
Re: FormResize Procedure Funktionier nicht
Vielleicht verwaltest Du das Array ListFenster ja falsch.
Warum speicherst Du Pointer und nicht TForms? Zeig mal die Definition der Arrays. BTW: Warum greifst Du auf i-2 zu? Vielleicht musst Du auch Dein Konzept neu überdenken? P.S. Bei dem ersten Delphi-Tag in Deinem vorherigen Posting ist was falsch gelaufen. Bitte editieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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