Autor Beitrag
Arne
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 29.12.05 19:47 
Neuer tag - neues Problem - wieder mal

1) Mein Hauptformular (TFormMain) ruft über einen Dropdownmenüeintrag ein Unterformular (TFormDBMain) auf.
Das Ganze mittels:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TFormMain.MenuWorkClick(Sender : TObject);
var
  objDBWorkForm      : TFormDBMain;
begin
  objDBWorkForm := TFormDBMain.Create(FormMain);
  if Assigned(objDBWorkForm) then begin
    objDBWorkForm.ShowModal;
  end;
  objDBWorkForm .Free;
end;


1) Ich habe jetzt mal einen Zähler als Label auf das Hauptformular gepflanzt, um zu sehen, wie oft TFormDBMain.FormCreate aufgerufen wird.
Beim Programmstart (nur TFormMain geöffnet) bereits 1x
Nach dem TFormDBMain.ShowModal bereits 3x
Ich lade etwas über das GUI von TFormDBMain, dann sind es bereits 5x.

Ich habe bei den Ereignissen im Objektinspektor von TFormDBMain bei
OnCreate : FormCreate
OnPain : FormPaint
OnDestroy: FormDestroy

stehen.

Ich bin bisher davon ausgegangen, daß FormCreate einmal für jedes erzeugen aufgerufen wird.
Ohne, daß ich was in dem TFormDBMain anstelle, habe ich schon drei Aufrufe von FormCreate.

Ist das normal, oder hab ich irgendwo einen fehler drin?
Falls das normal ist, wie kann ich dann sicherstellen, daß ein (Form)Create nur einmal je Erzeugung von TFormDBMain aufgerufen wird?

Muß ich den TFormDBMain Konstruktor überschreiben á la
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
constructor TFormDBMain.Create(Owner : TComponent);
begin
  { hier meine Initialisierungen für das Formular }
  inherited Create;
end;


Kann ich in dem Konstruktor überhaupt davon ausgehen, daß die GUI Elemente schon erstellt sind, um Properties (RadioButtons in RadioGroups) vorzubelegen?

BTW: Gibt es eine Übersicht für Dummies, in der die ganzen OnCreate, OnPaint,.... Ereignisse verständlich erklärt sind - die OnlineHilfe ist wohl eher was für Leute, die schon etwas Plan haben.

2) Wie kann ich das "Maximieren" Feld (rechts oben in jedem Fenster zwischen dem Minimieren und Schließen Feld) in meinem Formular disablen? Stichwort wie das Ding in der Win32 API bezeichnet wird, würde zur Not schon genügen.

thanx, Arne
Arne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 29.12.05 20:07 
Problem 1) hat sich teilweise gelöst. es muß wohl so lauten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
constructor TFormDBMain.Create(Owner : TComponent);
begin
  inherited Create;
  { hier meine Initialisierungen für das Formular }
end;


Trotzdem würde mich interessieren, was FormCreate dann eigentlich machen soll?!?!
Manfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Fr 30.12.05 00:05 
Hi!
Regulär werden alle Formulare einer Anwendung beim STart erzeugt. Über {Projekt}{Optionen} im Register "Formulare" kannst Du aber einstellen, welche Formulare tatsächlich erzeugt werden und welche lediglich "Verfügbar" sind.

_________________
Computer können schneller rechnen als wir, deshalb machen sie auch mehr Fehler