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 Formularvererbung aktualisieren (https://www.delphipraxis.net/110447-formularvererbung-aktualisieren.html)

BelugaBlue 18. Mär 2008 08:24


Formularvererbung aktualisieren
 
Gibt es einen "Trick", die Formularvererbung automatisch aktualisieren zu lassen.
Ich bin momentan davon genervt, dass in vererbten Formularen erst die Text-DFM Ansicht (+Speichern) gewählt werden muss, damit das entsprechende Formular "von alleine merkt", dass sich in dem übergeordneten Formular etwas geändert hat.

Hansa 18. Mär 2008 09:40

Re: Formularvererbung aktualisieren
 
Konkretisiere das mal bitte.

SirThornberry 18. Mär 2008 09:49

Re: Formularvererbung aktualisieren
 
Er hat ein Formular das nicht von TForm direkt abgeleitet ist sondern einem Nachfahren (nachfolgend TFormBase genannt). Ändert er jetzt TFormBase sieht er die Änderungen an TForm1 (welches von TFormBase abgeleitet ist) erst wenn er bei TForm1 die DFM-Datei in der Textansicht angeschaut und gespeichert hat. Er will wissen wie er die aktuallisierung anderweitig automatisieren kann.

Hansa 18. Mär 2008 09:59

Re: Formularvererbung aktualisieren
 
Glaube ich eben nicht. :mrgreen: Vermutlich wurden nur Änderungen an der PAS gemacht und das geht eben so nicht. TForm <> "normale" Komponente.

Muetze1 18. Mär 2008 12:44

Re: Formularvererbung aktualisieren
 
Zitat:

Zitat von Hansa
Glaube ich eben nicht.

Schön, aber wieso nicht? Das vom Fragesteller und SirThornberry beschriebene Verhalten ist wirklich so und es ist ein definitves Manko der IDE's. Von daher: wie kommst du zu der Annahme, dass dieses beschriebene Verhalten nicht das eigentliche Problem des Fragestellers ist?

Hansa 18. Mär 2008 15:37

Re: Formularvererbung aktualisieren
 
Warum ? Weil :
  • Spekulation bzw. lediglich Antwortversuch
  • keine Antwort vom Fragesteller kommt
  • nicht reproduzierbar

TForm kann nicht einfach so vererbt werden, wie ein TLabel. Da spielt nämlich die DFM eine gewichtige Rolle und die ist nur für Forms. Deshalb die unbeantwortete Frage nach PAS.

BelugaBlue 18. Mär 2008 15:40

Re: Formularvererbung aktualisieren
 
Nein es wurden keine Änderungen an der pas gemacht.

mkinzler 18. Mär 2008 15:48

Re: Formularvererbung aktualisieren
 
Wie hast du dann das Basisformular geändert?

shmia 18. Mär 2008 16:07

Re: Formularvererbung aktualisieren
 
Die Fälle, bei denen eine Formularvererbung einen wirklichen Nutzen bringt sind eher gering.
Allerdings hat Borland durch seine Objektablage jedem Programmierer den Floh ins Gehirn gesetzt, dass Formularvererbung in gute Sache wäre.
Im Prinzip hat jedes Formular seinen ganz bestimmten Zweck, Ähnlichkeiten oder Wiederverwendbarkeit sind eher gering.

Um einem Programm ein einheitliches Look & Feel zu geben, gibt es auch andere Möglichkeiten:
1.) Frames
2.) Factory-Pattern
Ich verwende z.B. ein NavigatorFrame: das ist ein Panel mit einem DbNavigator und einem Schliesen-Button drauf für viele Formulare, die mit Datasets arbeiten.
Mit dem Factory-Pattern kann man z.B. erreichen, dass jedes Formular noch ein zusätzliches Systemmenu bekommt oder man kann jedem Formular zur Laufzeit ein Icon verpassen, oder ......
Leider hat es Borland versäumt, spezielle Events dafür vorzusehen.
Es wäre wirklich angenehm, wenn die Klasse TApplication ein Event "OnNewForm" hätte.
Dann könnte man hier einen Event-Handler einklinken, der zur Laufzeit für jedes Formular gleich bestimmte Aktionen vornimmt (z.B. Font setzen)
Wenn sich in dieser Richtung weiterbilden möchte: das Stichwort lautet Bei Google suchenaspektorientierte Programmierung

Also ich verwende vererbte Formulare nicht. Auch vererbte Frames machen häufig nur Schwierigkeiten.

BelugaBlue 18. Mär 2008 16:09

Re: Formularvererbung aktualisieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei eine kleine Demo.

Nachtrag. Natürlich finden auch Änderungen an der pas Datei statt. ;-) beispielsweise Namensänderungen.

Die Demo zeigt, wie abgeleitete Formulare nicht automatisch auf beispielsweise Namensänderungen an Komponenten reagieren.

Ein anderes Beispiel ist das Label in der Demo. Im abgeleiteten Formular wurden auf dfm-basis Änderung am Font u.a. forgenommen.
Bei Löschung des Labels "befindet" sich dieses immer noch im abgeleiteten Formular.

Es wäre schön wenn es einen Typ gäbe, wie Änderungen am Basisformular automatisch an vererbte Formulare weitergegeben werden können.

Ich hoffe die Demo ist verständlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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