Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FormResize Procedure Funktionier nicht (https://www.delphipraxis.net/115933-formresize-procedure-funktionier-nicht.html)

Timb0 20. Jun 2008 07:48


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

Sherlock 20. Jun 2008 07:53

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

Timb0 20. Jun 2008 07:59

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

RavenIV 20. Jun 2008 08:06

Re: FormResize Procedure Funktionier nicht
 
dann mach mal ein try..ecxept drum rum und lass Dir den Text der Exception anzeigen.

Timb0 20. Jun 2008 09:12

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

RavenIV 20. Jun 2008 09:13

Re: FormResize Procedure Funktionier nicht
 
Zitat:

Zitat von Timb0
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 ?

hääähhhh?
Versteh nur Bahnhof.
Erklär das mal ein Bisschen ausführlicher.

Timb0 20. Jun 2008 09:30

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

RavenIV 20. Jun 2008 09:38

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.

Timb0 20. Jun 2008 09:49

Re: FormResize Procedure Funktionier nicht
 
Also Bei dieser Funktion
Delphi-Quellcode:
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;
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
Delphi-Quellcode:
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;
dann erhalte ich eine Fehlermeldung.

Gruß Timb0

RavenIV 20. Jun 2008 09:53

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 01:31 Uhr.
Seite 1 von 2  1 2      

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