AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DFM-Datei automatisch erstellen und zur Laufzeit laden?
Thema durchsuchen
Ansicht
Themen-Optionen

DFM-Datei automatisch erstellen und zur Laufzeit laden?

Ein Thema von BerTa · begonnen am 3. Dez 2004 · letzter Beitrag vom 3. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#1

DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 11:36
Hallo,

ich lege zur Zeit eine grafische Oberfläche auf eine Cobol-Anwendung mit ca. 2000 Text-Masken. Dazu habe ich einen Generator geschrieben, der mir aus den Masken SQL-Scripts erzeugt, mit denen Labels, Edit-Felder und Buttons mit deren Größe und Position usw. in einer MySql-Datenbank hinterlegt werden. Zur Laufzeit werden dann, je nach Cobol-Programm, die entsprechenden Forms dynamisch erzeugt. Das funktioniert zwar, ist aber je nach Rechner und Netzgeschwindigkeit manchmal ein bischen langsam. Deshalb meine Frage: Kann man zur Design-Zeit eine DFM-Datei automatisch erzeugen, aus der Delphi zur Laufzeit die entsprechende Form darstellt?

Vielen Dank für eine evtl. schnelle Hilfe.

Gruss, Börni
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 11:44
Zitat von BerTa:
Hallo,

ich lege zur Zeit eine grafische Oberfläche auf eine Cobol-Anwendung mit ca. 2000 Text-Masken. Dazu habe ich einen Generator geschrieben, der mir aus den Masken SQL-Scripts erzeugt, mit denen Labels, Edit-Felder und Buttons mit deren Größe und Position usw. in einer MySql-Datenbank hinterlegt werden. Zur Laufzeit werden dann, je nach Cobol-Programm, die entsprechenden Forms dynamisch erzeugt. Das funktioniert zwar, ist aber je nach Rechner und Netzgeschwindigkeit manchmal ein bischen langsam. Deshalb meine Frage: Kann man zur Design-Zeit eine DFM-Datei automatisch erzeugen, aus der Delphi zur Laufzeit die entsprechende Form darstellt?

Vielen Dank für eine evtl. schnelle Hilfe.

Gruss, Börni
Du brachst keine DFM-Dateien. Einfach die Controls dynamisch erzeugen.
Das folgende Beispiel erzeugt ein Edit-Feld an der Position 100,100 auf einem Formular:
Delphi-Quellcode:
procedur Button1Click(Sender: TObject);
var
  myEdit: TEdit;
begin
  myEdit := TEdit.Create(self);
  myEdit.Left := 100;
  myEdit.Top := 100;
  myEdit.Parent := self;
// myEdit.OnChange := MyOnEditChange; <- Events verknüpfen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 11:49
Hi Bernhard,

das ist doch genau das was ich mache, ich suche nur nach einer schnelleren Lösung.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 11:53
Erstellst du die Formulare bei Aufruf des jeweiligen oder alle beim Start der Anwendung ?
  Mit Zitat antworten Zitat
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:00
Hi,

ich erstelle die Forms, wenn das entsprechende Programm im Menübaum ausgewählt wird.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:06
Zitat von BerTa:
das ist doch genau das was ich mache, ich suche nur nach einer schnelleren Lösung.
Ich dachte das macht bisher dein COBOL-Programm.

Zur Geschwindigkeit:
- Wieviel Controls sind auf dem Formular?
- Wann werden die Controls erzeugt (im Konstruktor des Formulars oder im OnShow-Event)?

Eine Verwendung einer DFM-Datei ist prinzipbedingt langsamer als das direkte anlegen der Controls im Code, da hier noch Rechenzeit für das Parsern der DFM-Datei benötigt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:12
ist die Datenbank im Lokalen Netz angebunden oder Internet ?

Ich meine das Proggi muss ja auch erstmal an die Daten ran kommen ....

Dann kann man seine SQL abfragen auch noch optimieren (grade bei mysql)


MySQL
SQL-Code:
// MySQL Langsam -> DB2 Genauso schnell wie siehe unten

select a.Feld

from GrosseTabelle a

left join KleineTabelle b

where b.Feld in (1,2,3)

// MySQL und DB2 gleichschnell

select a.Feld

from Kleine Tabelle b

left join GrosseTabelle a

where b.Feld in (1,2,3)
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:13
Hallo Börni!

Der Flaschenhals bei der Geschichte ist sicherlich das Netzwerk und das Auslesen der Control-Properties aus der DB. Vielleicht bringt ein Index in der DB etwas Speed?

Schliesse mich der Frage von Bernhard an: Wieviele Controls sind es denn pro Formular?

Gruss

Der OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:33
Hallo Bernhard,

ich hatte mich nicht ganz klar ausgedrückt, gerade für die Oberfläche brauche ich Delphi, weil mir das in COBOL (reine API-Programmierung) zu stressig ist.

Hier meine Programm-Struktur:

Das Grundprogramm mit Menübaum usw. ist eine Delphi-exe. Beim Auswählen eines Programms wird eine Delphi-Dll XY als MDI-Child aufgerufen, welche den Hintergund mit einem PageControl erzeugt. Danach wird die entsprechende COBOL-Dll aufgerufen. Dessen Anzeigeprogramm (für die alten textbasierten Masken-Dialoge) habe ich so umgebaut, dass eine exportierte Funktion in der selben Delphi-dll XY aufgerufen wird, die mir je nach Programm mehrere TabSheets in dem besagten PageControl erzeugt. Die Komponenten sind halt in MySql-Tabellen hinterlegt, die ich mit der Hilfe von Zeos-Komponenten lese. Bei einer Maske habe ich noch kein Problem, aber wenn ich 4-5 TabSheets mit jeweils ca. 50 Komponenten erzeuge, dann kann's schon etwas dauern...

Gruss Börni
  Mit Zitat antworten Zitat
BerTa

Registriert seit: 31. Aug 2004
Ort: Dinklage
78 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: DFM-Datei automatisch erstellen und zur Laufzeit laden?

  Alt 3. Dez 2004, 12:40
Ich denke nicht dass es unbedingt die Datenbank ist, sicher kann man das noch optimieren. Bei einer lokalen Datenbank habe ich das gleiche Problem. Ich könnte die Beschreibung der Forms auch in einer Textdatei hinterlegen, bloss dann müsste ich diese auf jedem Platz mitinstallieren, damit das Netz nicht so belastet wird. Deshalb war mein Gedanke, eine Maske aus meinen Daten schon vorgenerieren und in der COBOL-DLL mit unterbringen.

Gruss, Börni
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:34 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