Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Klasse global verfügbar machen? (https://www.delphipraxis.net/131805-klasse-global-verfuegbar-machen.html)

moelski 31. Mär 2009 11:57


Klasse global verfügbar machen?
 
Moin !

Habe da eine Klasse die ich gerne aus jedem Formular raus nutzen würde. Nun könnte ich mir in jedem Formular eine eigene Instanz hernehmen. Aber geht nicht mitunter auch sowas:

Delphi-Quellcode:
program Testprog;

uses
  Forms, SysUtils,
  MainUnit in 'MainUnit.pas' {MainForm},
  KlassenUnit in 'KlassenUnit.pas';

{$R *.res}

var
  TL : TKlasse;

begin
  TL := TKlasse.Create();

  Application.Initialize;
  Application.ShowMainForm     := True;
  Application.MainFormOnTaskBar := True;

  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
end.
Allerdings kommt man dann aus den Unit nicht auf die Variable TL.
Gibts da ein konstrukt mit dem das klappen könnte ?

himitsu 31. Mär 2009 12:00

Re: Klasse global verfügbar machen?
 
Delphi-Quellcode:
var
  TL : TKlasse;
in einer Unit definieren, welche in allen entsprechenden Unit eingebunden ist.

Mithrandir 31. Mär 2009 12:00

Re: Klasse global verfügbar machen?
 
Zitat:

Zitat von moelski
Nun könnte ich mir in jedem Formular eine eigene Instanz hernehmen.

Ist das nicht eigentlich Sinn und Zweck eines Objektes/ einer Klasse? Ansonsten musst du halt die Klasse beim OnCreate deines Hauptformulars erstellen lassen, dann kannst du ja auch von anderen Formularen auf sie zugreifen.

Wenn ich dein Anliegen jetzt richtig verstanden habe... :gruebel:

mkinzler 31. Mär 2009 12:00

Re: Klasse global verfügbar machen?
 
Binde die Unit doch in die Formularunits ein

himitsu 31. Mär 2009 12:04

Re: Klasse global verfügbar machen?
 
jupp, in eines der Formulare könnte man es auch noch einbinden ... da ebenfalls natürlich diese Unit überalle reinmachen ...

oder
Delphi-Quellcode:
unit ...;

interface
  var TL: TKlasse;

implementation

initialization
  TL := TKlasse.Create();

finalization
  if assigned(TL) then TL.Free;

end.
aber TL ist kein guter Name :warn:

moelski 31. Mär 2009 12:08

Re: Klasse global verfügbar machen?
 
Moin !

Das Problem an der Sache ist folgendes ...
Ich habe mir eine Unit geschrieben die meine Anwendung übersetzt. Das funzt auch (dank ein paar Hinweisen hier ausm Forum) erstaunlich gut und reicht für meine Zwecke aus.

Nun würde ich gerne in meiner Anwendung einmal meine Translation Klasse erzeugen. Mit dieser Instanz würde ich dann gerne alles übersetzen. Ich muss aber aus jeder Unit auf die Klasse zugreifen können (Stichwort Hardcoded Strings). Da würde sich eben so eine globale Klasse anbieten.


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