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
 
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#11

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

  Alt 28. Jan 2009, 09:11
@DJ-SPM: Vor dem Implementation-Teil deklariert man keine Variablen...
Zitat von DJ-SPM:
Delphi-Quellcode:
:
var
  fSettings: file of TSettings;
  dSettings: TSettings;
:
@Hansa: Wenn jetzt noch die unnötige, globale Variable rausfliegt, dann wird das langsam brauchbar...
Zitat von Hansa:
Delphi-Quellcode:
interface

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

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;
    Name: String[30];
    User: String[30];
    Pass: String[50];
  end;

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

implementation

var
  dSettings: TSettings;

function getSesstings:TSesstings;
begin
  Result:=dSettings;
end;

function AssignConfigFile(filename: String): Boolean;
var
  fSettings: file of TSettings;
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;

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.
Aufruf:
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender:TObject);
var frmArtSuch1:TfrmArtSuch1;
begin
  frmArtSuch1:=TfrmArtSuch1.create(Self);
  try
    if frmArtSuch1.ShowModual = mrOK then begin
    end;
  finally
    frmArtSuch1.release;
  end;
end;
Somit wird die Form nur solange im Speicher gehalten, wie sie benötigt wird. Also so oft wie möglich "Verfügbare Formulare" anlegen "Automatisch erzeugen" nur dann wenn es unbedingt sein muss (und das heißt meistens: nur die Hauptform automatisch erzeugen)

So und jetzt könnt Ihr ja wieder auf mich eindreschen...
  Mit Zitat antworten Zitat
 


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 23:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz