Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Form mit prozeduren und funktionen als Vorlage speichern? (https://www.delphipraxis.net/182393-form-mit-prozeduren-und-funktionen-als-vorlage-speichern.html)

erich.wanker 21. Okt 2014 10:05

Form mit prozeduren und funktionen als Vorlage speichern?
 
Hallo Leute,

ich habe eine kurze Frage:

Delphi XE4 Professional - Ist es möglich, dass ich ein Fenster mit diversen visuellen Komponenten und den dazugehörigen proceduren als Vorlage abspeichere?

Gehen tut´s um ein "Fenstergrunddesign" .. Farbige Panels, Buttons, DBFelder und so weiter - die ich Zig-mal brauche..

Vielen Dank für Hinweise

Erich

Sir Rufo 21. Okt 2014 10:09

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Als Vorlage in einem oder mehreren Projekten?

Wenn du die Form in dein Projekt aufnimmst, dann kannst du einfach von diesem Formular ein neues erstellen, welches dann alles erbt.

Stevie 21. Okt 2014 10:11

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Rechtsklick aufs Form und "Add to Repository..." auswählen.

Geht aber auch ohne das, wenn du das Basisform in deinem Projekt einbindest und dann über File-New->Other... unter "Inheritable Items" das entsprechende Form auswählst.

erich.wanker 21. Okt 2014 10:14

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Danke für deine schnelle Antwort Sir Rufo :-)

.. in einem Projekt
.. und wie speichere ich diese TForm ab - und wo kann ich dann eine "Kopie" aufrufen ?

UPDATE:

All right .. vielen Dank Stevie .. werd ich mal ausprobieren

Vielen Dank und schöne Grüße aus dem Salzburgerland ..

Der schöne Günther 21. Okt 2014 10:28

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Ist das nicht genau das richtige für die "Objektablage"? Ich habe sie nie ausprobiert, möglicherweise liege ich total daneben...

bernau 21. Okt 2014 10:48

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1276794)
Ist das nicht genau das richtige für die "Objektablage"? Ich habe sie nie ausprobiert, möglicherweise liege ich total daneben...

Wenn diese Vorlage nur in einem Projekt verwendet wird, dann nicht.

Wenn ich diese Vorlage in vielen Projekten verwenden möchte, dann ja.

Hansa 14. Apr 2015 15:18

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von bernau (Beitrag 1276795)
Zitat:

Zitat von Der schöne Günther (Beitrag 1276794)
Ist das nicht genau das richtige für die "Objektablage"? Ich habe sie nie ausprobiert, möglicherweise liege ich total daneben...

Wenn diese Vorlage nur in einem Projekt verwendet wird, dann nicht.

Wenn ich diese Vorlage in vielen Projekten verwenden möchte, dann ja.

Au Mann, es ist immer noch entsetzlich. :mrgreen: Objektorientierte Programmierung wird im Jahr 2015 immer noch nicht richtig verstanden. :shock: Wenn ich in einem Projekt mehrere Forms habe, dann ist es doch zumindest sinnvoll, elementare Gemeinsamkeiten in eine Vorlage zu verfrachten. Und dann eben immer die als Grundgerüst zu verwenden. Und genau dazu dient die Objektablage (engl.: Repository). D.h. man baut sich eine Form mit allen visuellen Komponenten, allen Tastatur/Maus-Behandlungsroutinen und schiebt das Teil in die Objektablage. Wenn ich jetzt lediglich 2 Forms habe, dann lohnt es sich schon, die aus der Objektablage heraus zu vererben. Bei mehreren Projekten geht das natürlich auch.

Alternativen : 1. cut and paste. im OOP Zeitalter : bekloppt. 2. Alles doppelt und 3-fach von Hand machen. Irgendwo wird dann wohl eine Form rauskommen, bei der irgendwas anders ist "wie sonst" weil irgendwas vergessen wurde. Also: dto. 3. unnötigerweise die Objektablage mit eigenen Klassen etc. nachbilden und mit dem Krempel rumhantieren, DFM von Hand bearbeiten usw.

Das alles hat vor allem noch folgenden Nachteil : der Enduser will immer alles möglichst gleich und vor allem gleich bedienbar haben. Manchmal will er aber doch etwas geändert haben. Z.b. passt einem die Farbe des Datums nicht und das steht immer rechts oben in grün auf den Forms. Jetzt will der das aber lila und besser links oben. Was nun ? Entweder ich gehe alle Forms durch und ändere das ab, oder aber ich mache das einmalig in der Vorlage der Forms.

bernau 14. Apr 2015 15:38

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von Hansa (Beitrag 1297721)
Au Mann, es ist immer noch entsetzlich. :mrgreen: Objektorientierte Programmierung wird im Jahr 2015 immer noch nicht richtig verstanden. :shock:

Schon ein paar Stunden alt, der Thread. :lol:

Du beziehst dich auf meinen Beitrag. Wo habe ich etwas von Copy/Paste geschrieben? Bei mir wird alles abgeleitet und nichts kopiert.

p80286 14. Apr 2015 15:45

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von Hansa (Beitrag 1297721)
Au Mann, es ist immer noch entsetzlich. :mrgreen: Objektorientierte Programmierung wird im Jahr 2015 immer noch nicht richtig verstanden. :shock: Wenn ich in einem Projekt mehrere Forms habe, dann ist es doch zumindest sinnvoll, elementare Gemeinsamkeiten in eine Vorlage zu verfrachten. Und dann eben immer die als Grundgerüst zu verwenden. Und genau dazu dient die Objektablage (engl.: Repository).

Zum einen scheint "objektablage" so etwas wie ein Zwischenspeicher zu sein, wer braucht so etwas schon? Mit den Informationen, die Du herüber geschoben hast, ergibt das alles einen etwas anderen Sinn, und plötzlich hat man das, was man eigentlich die ganze Zeit gesucht hat.

und ja! das stimmt:
Zitat:

Objektorientierte Programmierung wird im Jahr 2015 immer noch nicht richtig verstanden.
Vielleich liegt's ja daran, das viele Programmierer nicht "objektorientiert" denken können/wollen. Und z.B. das Wort "Informationhiding" zu benutzen ist doch wesentlich einfacher als es auch wirklich zu machen!


Gruß
K-H

P.S.
Zitat:

Zitat von bernau (Beitrag 1297725)
Du beziehst dich auf meinen Beitrag. Wo habe ich etwas von Copy/Paste geschrieben? Bei mir wird alles abgeleitet und nichts kopiert.

Ich denke nicht, dasa war eher allgemein gemeint!

bernau 14. Apr 2015 17:54

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von p80286 (Beitrag 1297728)
Zitat:

Zitat von bernau (Beitrag 1297725)
Du beziehst dich auf meinen Beitrag. Wo habe ich etwas von Copy/Paste geschrieben? Bei mir wird alles abgeleitet und nichts kopiert.

Ich denke nicht, dasa war eher allgemein gemeint!

Puh. Da bin ich aber froh ;-)

Hansa 14. Apr 2015 20:57

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Moin bernau, ist das tatsächlich zu hoch ?

Der "schöne Günther" sagt das :

Zitat:

Zitat von Der schöne Günther (Beitrag 1276794)
Ist das nicht genau das richtige für die "Objektablage"?

Daraufhin kam von Dir diese Antwort :

Zitat:

Zitat von bernau (Beitrag 1276795)
Wenn diese Vorlage nur in einem Projekt verwendet wird, dann nicht.

Ich erkläre daraufhin, dass die Formular-Vererbung sehr wohl bereits ab 2 Formularen Sinn macht und warum und auch in nur einem Projekt. Wo liegt da das Verständnisproblem ?

Zitat:

Zitat von bernau (Beitrag 1297725)
Wo habe ich etwas von Copy/Paste geschrieben? Bei mir wird alles abgeleitet und nichts kopiert.

Also nochmals : der erste Absatz bezieht sich auf Deine Aussage, die Objektablage sei nur für projektübergreifende Forms. Dass Du copy/paste verwendest steht doch nirgends. Jedenfalls nichts von mir. Seltsam ist allerdings dann doch folgendes : du sagst jetzt . "Bei mir wird alles abgeleitet" und kennst die Objektablage anscheinend nicht ? Zumindest aus der Praxis nicht ?

Vermutlich liegt das an dem Wort "Objektablage". Für die Amis dürfte "Repository" genauso abstrakt rüberkommen. Warum nennen die das ganze Gebiet nicht einfach "Formular-Vererbung" ? Dann hätten ca. 95 % der Delphi Programmierer, die das nicht kennen, zumindest eine grobe Vorstellung davon, was das sein könnte. Davon würde wohl die Hälfte diese Technik dann auch verwenden.

bernau 14. Apr 2015 22:22

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von Hansa (Beitrag 1297752)
Moin bernau, ist das tatsächlich zu hoch ?

Nö. ;-)

Also noch mal gaaanz langsam zum mitlesen.


Es gibt Forms, die sind universell und die kann ich in vielen Projekten gebrauchen. Die Dinger kommen in die Objektablage.


Dann gibt es Forms, die haben für ein Projekt spezielle Funktionen. Diese Funktionen möchte ich gerne vererben, damit andere Formulare diese verwenden können. Ich kann natürlich auch irgendwelche Komponenten drauf klatschen, damit diese direkt im abgeleiteten Form verwendet werden.

Dazu lege ich das Form (Ich nenne es jetzt einfach mal WupptiForm) einfach ganz normal an und füge die Funktionen und/oder Komponenten hinzu. Dann auf der Toolpalette gaaaanz nach unten blättern (Achtung: Geht nur wenn du auf der Quellcode-Ansicht bist). Dort gibt es den Abschnitt (Bei Delphi 2007) "Delphi Projekte / Vererbbare Elemente". Dort werden alle Forms aufgelistet, die ich im Projekt angelegt habe. Dort suche ich die WupptiForm. Doppelklick drauf und schon habe ich ein neues Formular, welches vom Wupptiform abgeleitet ist. Perfekte Formvererbung. Nix Objektablage.

Das Wuppti-Ding gehört für mich nicht in die Objektablage. Sonst habe ich nach dem zehnten Projekt die Objektablage zugemüllt.

Nichts anderes habe ich in meinem ersten Post geschrieben. Nur etwas kürzer.


Zitat:

Zitat von Hansa (Beitrag 1297752)
Vermutlich liegt das an dem Wort "Objektablage". Für die Amis dürfte "Repository" genauso abstrakt rüberkommen. Warum nennen die das ganze Gebiet nicht einfach "Formular-Vererbung" ? Dann hätten ca. 95 % der Delphi Programmierer, die das nicht kennen, zumindest eine grobe Vorstellung davon, was das sein könnte. Davon würde wohl die Hälfte diese Technik dann auch verwenden.

In beiden Fällen ist es Formular-Vererbung. Einmal mit Objektablage/Repository und einmal ohne.

Zitat:

Zitat von Hansa (Beitrag 1297752)
Dass Du copy/paste verwendest steht doch nirgends. Jedenfalls nichts von mir.

Och. Folgendes hast du geschrieben:

Zitat:

Zitat von Hansa (Beitrag 1297752)
Alternativen : 1. cut and paste. im OOP Zeitalter : bekloppt.

Das hast du als alternative angegeben, wenn man die Objektablage nicht verwendet. Habe ich dann auf mich bezogen. Aber p80286 hat mich schon aufgeklärt.

Dejan Vu 15. Apr 2015 05:46

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von bernau (Beitrag 1297756)
Zitat:

Zitat von Hansa (Beitrag 1297752)
Dass Du copy/paste verwendest steht doch nirgends. Jedenfalls nichts von mir.

Och. Folgendes hast du geschrieben:
Zitat:

Zitat von Hansa (Beitrag 1297752)
Alternativen : 1. cut and paste. im OOP Zeitalter : bekloppt.


Hansa hat recht. copy <> cut :stupid:

Hansa: Du hast Fenstervererbung, OOP und die Repository in deinem Beitrag etwas missverständlich in einen Topf geworfen, das ist alles. Nun kann man daraus einen Worte-auf-die-Goldwaage-und-dann-im-Mund-verdrehen-Thread machen. Oder nicht.
Konzentrier dich lieber auf OOP. Da gibt es noch genug zu lernen ;-)

bernau 15. Apr 2015 08:10

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Zitat:

Zitat von Dejan Vu (Beitrag 1297759)
Hansa hat recht. copy <> cut :stupid:

Und ich zitiere das auch noch :oops:

Hansa 15. Apr 2015 13:49

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@bernau, es gibt mind. 3 Möglichkeiten eine Form in die sogenannte Objektablage zu verfrachten. 1. Rechtsklick auf Form -> Der Objektablage hinzufügen 2. oben auf Tools klicken -> Vorlagenbibliotheken -> RAD-Studio Objektablage -> hinzufügen 3. wie von Dir gesagt, Toolpalette -> veerbbare Elemente usw. Das Ergebnis ist dann jedesmal, dass die Form in der Objektablage steht. Siehe Screenshot im Anhang. Bei Emba wird allerdings die Nomenklatur vernachlässigt. Das ist schon etwas undurchsichtig, dass die Forms aus der Objektablage dann betitelt sind unter "Objektgalerie". Aber egal, hinter dem Ganzen steckt lediglich folgendes :

Delphi-Quellcode:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Unit2;

type
  TForm3 = class(TForm2)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

end.
Da sieht man, dass die Form3 ein Abkömmling von Form2 ist.

Und die sieht so aus :

Delphi-Quellcode:
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm2 = class(TForm)
    Button1: TButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.
Obwohl die Form3 keinen Button deklariert : es gibt ihn aber. Der ist nämlich von Form2 geerbt. Ich kann den aber z.B. nur für Form3 verschieben. Um das Ganze zu verstehen muss man sich aber mal die DFMs ansehen :
Delphi-Quellcode:
object Form2: TForm2
  Left = 0
  Top = 0
  Caption = 'Form2'
  ClientHeight = 282
  ClientWidth = 418
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 40
    Top = 40
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
  end
end
In der Form3-DFM sieht man dann, was die Objektablage gemacht hat :

Delphi-Quellcode:
inherited Form3: TForm3
  Caption = 'Form4'
  ExplicitWidth = 434
  ExplicitHeight = 320
  PixelsPerInch = 96
  TextHeight = 13
  inherited Button1: TButton
    Left = 168
    Top = 152
    ExplicitLeft = 168
    ExplicitTop = 152
  end
end
Da ist alles inherited. Der inherited Button ist nur deshalb vorhanden, weil ich den auf der Form3 verschoben habe. D.h. die Koordinaten sind für Form3 geändert in der DFM. Das ist das was die Objektablage macht. Wenn ich nun z.B. ein neues Label auf die Form2 lege, dann hat Form3 automatisch auch eins usw.

bernau 15. Apr 2015 15:32

AW: Form mit prozeduren und funktionen als Vorlage speichern?
 
:wall: Ich geb's auf.


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