AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Form überall wiederverwenden? Dafür Unit?
Thema durchsuchen
Ansicht
Themen-Optionen

Form überall wiederverwenden? Dafür Unit?

Ein Thema von TheMiller · begonnen am 26. Jan 2009 · letzter Beitrag vom 28. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Form überall wiederverwenden? Dafür Unit?

  Alt 26. Jan 2009, 17:29
Hallo,

ich glaube, der Titel ist ein bissl blöd, aber mir fiel nicht besseres ein.

Mein Anliegen ist folgendes: Ich programmiere ziemlich viele verschiedene Anwendungen für verschiedene Leute und auch Firmen. Dazu habe ich natürlich einmal eine Basis entwickelt und passe die Programme dann nur noch an.

Nun habe ich eine Unit erstellt, die viele Funktionen, die ich oft benötige enthält. Jetzt merke ich, dass ich oft Adressen suchen und anzeigen lassen muss. Ohne jetzt viel Aufwand zu betreiben, würde ich die Unit um eine Prozedur erweitern, die eine neue Form erstellt. Auf diese kann man dann die Adressen suchen und auswählen. Ist das ok so?

Ich habe schon ein Plugin-System, welches auf DLL-Forms basiert. Eine DLL-Form möchte ich dazu nicht benutzen, da es - gerade bei kleineren Programmen - bequemer ist, einfach nur diese Unit einzubinden.

Ist dieses Vorhaben so ok?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 26. Jan 2009, 17:42
Ich wüsste auf die Schnelle nichts, was dagegenspräche.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 26. Jan 2009, 18:55
Zitat von DJ-SPM:
Ist dieses Vorhaben so ok?
ich würd auch mal sagen

es funktioniert und was funktioniert ist OK

du kannst ja auch innerhalb eines Projektes die Units (auch welche mit Forms drin) in verschiedene Verzeichnisse verteilen ... und ob das nun ein gemeinsames Verzeichnis (für verschiedene Anwendungen) ist, ist dabei egal
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 26. Jan 2009, 19:09
Gut. Dann bedanke ich mich und lege mal los:

Danke!
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 26. Jan 2009, 19:42
Zitat von Titel:
Form überall wiederverwenden? Dafür Unit?
Von mir kommt dazu ein klares : Nein, so nicht ! Benutze keine Unit, sondern gleich eine Form. Erstelle eine Grundform, bei der alles grundsätzlich sowieso einzustellende bereits vorhanden ist. Insbesondere Tastatur/Maus-Events, Farben etc. Leite von dieser Form Deine Suchform ab. Die hat dann bereits das notwendigste geerbt und muss dann lediglich um diese Suchfunktion erweitert werden. Wenn irgendwas visuelles ins Spiel kommt, z.B. hier Edit usw. zum Suchen, dann besser so machen. Stichwort : Objektablage (Repository) insbesondere da "inherited;"

Edit : himitsu nicht genau gelesen : wer in der Lage ist, das bis zu einem gewissen Grad allgemeingültig zu halten, der benutzt für eventuell zig Programme ein gemeinsames Vorlagen-Verzeichnis. Repository (= Vorratsraum, Lagerraum ) ist wesentlich besseres Wort, als Objektablage. Dort lagern dann diverse Forms und bei neuem Projekt fischt man sich das am Besten passende als Vorlage da raus. Da ist möglicherweise immense Zeitersparnis drin. Einmal machen, einmal austesten und immer wieder verwenden !
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 26. Jan 2009, 22:07
Danke für die Antwort.

Aber was genau meinst du mit Auslagern? Wie mache ich das? Habe das glaub ich nicht ganz verstanden. Die Unit könnte ich doch überall einbinden und von dem Formobjekt ein neues Form ableiten etc... wo ist der UNterschied?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 27. Jan 2009, 00:24
Was wohin auslagern ? Ich lege mir lediglich einen Vorratsraum (Verzeichnis) an, in dem alle sinnvollen Formulare für eigene Projekte zur möglichen Wiederverwendung gespeichert werden. Dieser Raum wird immer mehr bestückt. Also : neue Komponenten, neue Events, wobei immer das bereits vorhandene benutzt wird und fertig.

Zitat von DJ-SPM:
Die Unit könnte ich doch überall einbinden und von dem Formobjekt ein neues Form ableiten etc... wo ist der UNterschied?
Zeige mir mal kurzen Quelltext davon, wie das konkret gemacht werden soll. Auch die Suche wird definitiv bei Eingabe der Stichwörter einiges ausspucken.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 27. Jan 2009, 00:50
Die Unit kann ich gerne mal zeigen. Aber allerdings erst morgen abend. Vorher habe ich leider keine Zeit...

Danke und bis dann!
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#9

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 27. Jan 2009, 18:32
Hallo,

hier mal meine Unit "ProgUtils". (Sie ist eine Library für Codestücke, die ich im ganzen Programm (mehrere PlugIns (DLLForms)) immer wieder verwende)

Delphi-Quellcode:
unit ProgUtils;

interface

uses
  StdCtrls, ComCtrls, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  ZConnection, Graphics, SysUtils, DumbCrypt, Messages, Dialogs, Forms,
  Classes;

  function AssignConfigFile(filename: String): Boolean;
  function InitDBConnection(ZConnection: TZConnection): Boolean;

type
  TSearchContactForm = class(TForm)
    SearchField: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure SearchFieldKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private

  public

  end;


  TSettings = record
    skin: String[100];
    color: TColor;
    boxcolor: TColor;
    logo: String[255];
    winstart: Boolean;
    host: String[100];
    port: Integer;
    Name: String[30];
    User: String[30];
    Pass: String[50];
  end;

var
  fSettings: file of TSettings;
  dSettings: TSettings;

implementation

function AssignConfigFile(filename: String): Boolean;
begin
  {...}
end;

function InitDBConnection(ZConnection: TZConnection): Boolean;
begin
  {...}
end;

procedure TSearchContactForm.SearchFieldKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ShowMessage('SD');
end;

procedure TSearchContactForm.FormCreate(Sender: TObject);
var
  Form1: TForm;
  SearchField: TEdit;
begin
  Form1:=TSearchContactForm.Create(nil);
  with Form1 do
  begin
    Left:=202;
    Top:=111;
    BorderStyle:=bsNone;
    Caption := 'Adresssuche';
    ClientHeight := 543;
    ClientWidth := 655;
    Color := clWhite;
    Font.Color := clWindowText;
    Font.Height := -11;
    Font.Name := 'MS Sans Serif';
    Font.Style := [];
    KeyPreview := True;
    OldCreateOrder := False;
    PixelsPerInch := 96;
  end;

  SearchField:=TEdit.Create(nil);
  with SearchField do
  begin
    Left := 64;
    Top := 16;
    Width := 225;
    Height := 21;
    TabOrder := 1;
    //SearchField:=SearchFieldKeyDown(nil);
  end;
end;

end.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Form überall wiederverwenden? Dafür Unit?

  Alt 28. Jan 2009, 02:36
War so in etwa zu erwarten. Alles ist zur Not doppelt und dreifach vorhanden und fest im Quelltext verankert. Die IDE wird dadurch in großen Teilen unbrauchbar gemacht. Bitte gucken (nicht ganz klares blieb stehen) :

Delphi-Quellcode:
interface

uses
  StdCtrls, ComCtrls, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  ZConnection, Graphics, SysUtils, DumbCrypt, Messages, Dialogs, Forms,
  Classes, UNITTCONTACTFORM;

  function AssignConfigFile(filename: String): Boolean;
  function InitDBConnection(ZConnection: TZConnection): Boolean;

type
  TSearchContactForm = class(TContactForm)
    SearchField: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure SearchFieldKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private

  public

  end;


  TSettings = record
    skin: String[100];
    color: TColor;
    boxcolor: TColor;
    logo: String[255];
    winstart: Boolean;
    host: String[100];
    port: Integer;
    N
ame: String[30];
    User: String[30];
    Pass: String[50];
  end;

var
  fSettings: file of TSettings;
  dSettings: TSettings;
  frmSearchContactForm: TfrmSearchContactForm; // erzeugt durch Datei -> neu -> andere ...

implementation

function AssignConfigFile(filename: String): Boolean;
begin
  {...}
end;

function InitDBConnection(ZConnection: TZConnection): Boolean;
begin
  {...}
end;

procedure TSearchContactForm.SearchFieldKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ShowMessage('SD');
end;
Tja, was ist das ? Eine abgeleitete Form. Alles aus der Ursprumgs-Unit ist ja bereits bekannt. Es werden nur noch die Änderungen innerhalb der neuen Form extra neu deklariert. Das kann im OI gemacht werden und steht dann in der DFM.

Nun gut, ca. 2 Mausklicks, dann siehts (bei mir) so aus wie im Anhang. Erzeugter Quelltext :

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TfrmArtSuch1 = class(TfrmArtSuch)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmArtSuch1: TfrmArtSuch1;

implementation

{$R *.dfm}

procedure TfrmArtSuch1.FormCreate(Sender: TObject);
begin
  inherited;

end;

end.
Das ist auch eine Suchform, die öfters und in diversen Projekten gebraucht wird. Das noch leere FormCreate kam eben hier dazu. Die Buttons etc. wurden schon im Vorgänger in Etwa richtig positioniert, die Schriftart auf fett gesetzt usw.

[edit=Luckie]Anhang ausgetauscht. Mfg, Luckie[/edit]
Miniaturansicht angehängter Grafiken
unbenanntjpg_139.jpg  
Gruß
Hansa
  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 17:00 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