Announcement

Collapse
No announcement yet.

Tool zur dynamischen Erzeugung von Formularen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tool zur dynamischen Erzeugung von Formularen

    Hi,

    in meinem Programm befinden sich sehr komplexe Formulare mit vielen Komponenten, die ich mit der IDE zusammengestellt habe. Die Windowsresourcen werden daher zur Laufzeit sehr knapp (unabhängig vom Arbeitsspeicher).

    Kennt jemand ein Tool, welches ein in der IDE erzeugtes Formular in eine Variante konvertieren kann, die die dynamische Erzeugung der Komponenten zu Laufzeit benutzt?

    Mir ist klar, dass man das auch alleine hinkriegen kann. Es wäre aber eine enorme Erleichterung.

    Vielen Dank

    Detlef Fricke

  • #2
    Hi

    Die User/GDI-resourcen sind das Problem, also die alloziertend Fensterhandles = USER und Zeichenobjecte = hDC, hPEN, HRGN usw = GDI. Diese lassen sich nur reduzieren indem sie zerstört werden. Delphis Control-Mechanismus kapselt genau das, so daß man ohne weiteres ein unsichtbares Formular und dessen Childrens als Object im Speicher liegen hat aber die KEINE fensterhandles besitzt. Nach den unsichtbarmachen einfach mal Form.DestroyHandle aufrufen.
    Auch solltest Du die automatische Erstellung aller Formulare beim Starten der APP entfernen und erst zur Laufzeit Deine Form's erzeugen.
    Einfach mal in die Projektoptionen->erste Page schauen. Dort sollte im Normalfall nur das MainForm in der linken Listbox stehen.

    Gruß Hage

    Comment


    • #3
      Hi,

      vielen Dank für Deine Hinweise. Tut mir leid, dass ich jetzt erst reagiere, aber die Limitsperre von T-Online hat mich für ein paar Tage Offline gemacht.

      Der Sachverhalt mit den Resourcen war mir im wesentlichen klar, deswegen wollte ich sie bei Bedarf ja dynamisch erzeugen und dann wieder freigeben. In meinem Formular liegen bisher etliche Panels mit jeweils etlichen Controls in einem Teil des Fensters übereinander und werden bei Bedarf nach vorne geholt.

      Wenn ich Dich richtig verstanden habe, würde es ausreichen die Eigenschaft visible auf false zu setzen, um die Resourcen solange frei zu geben, wie man sie nicht braucht. Oder meintest Du mit sichtbar etwas anderes?

      Mit freundlichen Grüßen

      Detlef Frick

      Comment


      • #4
        Hi

        Jain, "nach dem Panel.Visible := False, mal Panel.DestroyHandle" aufrufen.

        Gruß Hage

        Comment


        • #5
          Hi,

          vielen Dank, probieren wir mal.

          Detle

          Comment

          Working...
          X