Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism 2005 net (https://www.delphipraxis.net/58332-2005-net.html)

peter12 5. Dez 2005 18:48


2005 net
 
Suche eine Möglicjkeit wie bei win32
Eine in public deklarierte Variable kann ich in dem Form nützen wenn ich
das form in uses deklariere.
Wie geht das in net.

peter

Taladan 5. Dez 2005 19:32

Re: 2005 net
 
:gruebel: Was meinen? In der Unit wo du eine Variable deklarierst, kannst du sie auch nutzen. Bei Public deklaration kannst du auf den Typen auch aus anderen Typen / Units zugreifen, wenn du diese auch in Form einbindest (uses klausel). Du darfst jedoch nciht vergessen, den typen auch als private Variable in der zweiten Unit zu deklarieren, und dort zu initialisieren. (durch ein .create). Oder meinst du globale Variable? Die gibt es jedoch nicht mehr.

peter12 6. Dez 2005 06:33

Re: 2005 net
 
Gibt es in Net keine möglichkeit einer Variable einen wert zuzuweisen und den dann in allen units zu verwenden.
Gibt es eine alternative wie ich zu Bsp. eine const Verbindungsstring einmal deklariere und
dann in allen units verwenden kann.
peter

Taladan 6. Dez 2005 18:57

Re: 2005 net
 
Du könntest auf einer in einer Unit vorhandenen Komponente zugreifen.

Schau dir dafür mal diesesn Thread an

peter12 8. Dez 2005 10:18

Re: 2005 net
 
[quote]
Schau dir dafür mal diesesn Thread an

Habe versucht es nachzustellen.
Delphi-Quellcode:
unit WinForm4;

interface

uses
  System.Drawing, System.Collections, System.ComponentModel,
  System.Windows.Forms, System.Data;

type
  TWinForm4 = class(System.Windows.Forms.Form)
  {$REGION 'Vom Designer verwalteter Code'}
  strict private
    /// <summary>
    /// Erforderliche Designervariable.
    /// </summary>
    Components: System.ComponentModel.Container;
    Label1: System.Windows.Forms.Label;
    Button1: System.Windows.Forms.Button;
    /// <summary>
    /// Erforderliche Methode zur Unterstützung des Designers -
    /// ändern Sie die Methode nicht mit dem Quelltext-Editor
    /// </summary>
    procedure InitializeComponent;
    procedure Button1_Click(sender: System.Object; e: System.EventArgs);
  {$ENDREGION}
  strict protected
    /// <summary>
    /// Ressourcen nach der Verwendung bereinigen
    /// </summary>
    procedure Dispose(Disposing: Boolean); override;
  private
       function getLabel : string;
    procedure SetLabel(lab : string);

  public
     property Labeltext : string read getLabel write SetLabel;

    constructor Create;
  end;

  [assembly: RuntimeRequiredAttribute(TypeOf(TWinForm4))]

implementation
    uses winform5;
{$AUTOBOX ON}

{$REGION 'Vom Windows Form-Designer erzeugter Code'}
/// <summary>
/// Erforderliche Methode zur Unterstützung des Designers --
/// ändern Sie die Methode nicht mit dem Quelltext-Editor
/// </summary>
procedure TWinForm4.InitializeComponent;
begin
  Self.Label1 := System.Windows.Forms.Label.Create;
  Self.Button1 := System.Windows.Forms.Button.Create;
  Self.SuspendLayout;
  // 
  // Label1
  // 
  Self.Label1.Location := System.Drawing.Point.Create(64, 64);
  Self.Label1.Name := 'Label1';
  Self.Label1.TabIndex := 0;
  Self.Label1.Text := 'Label1';
  // 
  // Button1
  // 
  Self.Button1.Location := System.Drawing.Point.Create(280, 64);
  Self.Button1.Name := 'Button1';
  Self.Button1.TabIndex := 1;
  Self.Button1.Text := 'Button1';
  Include(Self.Button1.Click, Self.Button1_Click);
  // 
  // TWinForm4
  // 
  Self.AutoScaleBaseSize := System.Drawing.Size.Create(5, 13);
  Self.ClientSize := System.Drawing.Size.Create(472, 388);
  Self.Controls.Add(Self.Button1);
  Self.Controls.Add(Self.Label1);
  Self.Name := 'TWinForm4';
  Self.Text := 'WinForm4';
  Self.ResumeLayout(False);
end;
{$ENDREGION}

procedure TWinForm4.Dispose(Disposing: Boolean);
begin
  if Disposing then
  begin
    if Components <> nil then
      Components.Dispose();
  end;
  inherited Dispose(Disposing);
end;

constructor TWinForm4.Create;
begin
  inherited Create;
  //
  // Erforderlich für die Unterstützung des Windows Forms-Designers
  //
  InitializeComponent;
  //
  // TODO: Fügen Sie nach dem Aufruf von InitializeComponent Konstruktorcode hinzu.
  //
end;

procedure TWinForm4.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
with TWinForm5.Create do


    Show();

end;
  function TWinForm4.getLabel : String;
begin
  result := Label1.Text;
end;

procedure TWinForm4.SetLabel(lab : String);
begin
  label1.Text := lab;
end;
end.
Delphi-Quellcode:
Unterfenster
Delphi-Quellcode:
unit WinForm5;

interface

uses
  System.Drawing, System.Collections, System.ComponentModel,
  System.Windows.Forms, System.Data,WinForm4;

type
  TWinForm5 = class(System.Windows.Forms.Form)
  {$REGION 'Vom Designer verwalteter Code'}
  strict private
    /// <summary>
    /// Erforderliche Designervariable.
    /// </summary>
    Components: System.ComponentModel.Container;
    Button1: System.Windows.Forms.Button;
    Label1: System.Windows.Forms.Label;
    /// <summary>
    /// Erforderliche Methode zur Unterstützung des Designers -
    /// ändern Sie die Methode nicht mit dem Quelltext-Editor
    /// </summary>
    procedure InitializeComponent;
    procedure Button1_Click(sender: System.Object; e: System.EventArgs);
  {$ENDREGION}
  strict protected
    /// <summary>
    /// Ressourcen nach der Verwendung bereinigen
    /// </summary>
    procedure Dispose(Disposing: Boolean); override;
  private
    function get_MainForm : TWinForm4;
    property Mainform : TWinForm4 read get_MainForm;
  public
    constructor Create;
  end;

  [assembly: RuntimeRequiredAttribute(TypeOf(TWinForm5))]

implementation

{$AUTOBOX ON}

{$REGION 'Vom Windows Form-Designer erzeugter Code'}
/// <summary>
/// Erforderliche Methode zur Unterstützung des Designers --
/// ändern Sie die Methode nicht mit dem Quelltext-Editor
/// </summary>
procedure TWinForm5.InitializeComponent;
begin
  Self.Button1 := System.Windows.Forms.Button.Create;
  Self.Label1 := System.Windows.Forms.Label.Create;
  Self.SuspendLayout;
  // 
  // Button1
  // 
  Self.Button1.Location := System.Drawing.Point.Create(88, 48);
  Self.Button1.Name := 'Button1';
  Self.Button1.TabIndex := 0;
  Self.Button1.Text := 'Button1';
  Include(Self.Button1.Click, Self.Button1_Click);
  // 
  // Label1
  // 
  Self.Label1.Location := System.Drawing.Point.Create(56, 136);
  Self.Label1.Name := 'Label1';
  Self.Label1.TabIndex := 1;
  Self.Label1.Text := 'Label1';
  // 
  // TWinForm5
  //
  Self.AutoScaleBaseSize := System.Drawing.Size.Create(5, 13);
  Self.ClientSize := System.Drawing.Size.Create(292, 272);
  Self.Controls.Add(Self.Label1);
  Self.Controls.Add(Self.Button1);
  Self.Name := 'TWinForm5';
  Self.Text := 'WinForm5';
  Self.ResumeLayout(False);
end;
{$ENDREGION}
 function TWinForm5.get_MainForm : TWinForm4;
begin
   result := Owner as TWinForm4;
end;
procedure TWinForm5.Dispose(Disposing: Boolean);
begin
  if Disposing then
  begin
    if Components <> nil then
      Components.Dispose();
  end;
  inherited Dispose(Disposing);
end;

constructor TWinForm5.Create;
begin
  inherited Create;
  //
  // Erforderlich für die Unterstützung des Windows Forms-Designers
  //
  InitializeComponent;
  //
  // TODO: Fügen Sie nach dem Aufruf von InitializeComponent Konstruktorcode hinzu.
  //
end;

procedure TWinForm5.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
 mainform.Labeltext := 'DD';
end;
 
end.
[b]
bekomme aber Fehlermeldung mit der icht nichts anfangen Kann
.
Querverweis nicht in der objektinstanz festgelegt.

peter

[edit=Luckie]Delphi-Tags. Mfg, Luckie[/edit]

Taladan 11. Dez 2005 15:22

Re: 2005 net
 
Habe nur relevantes hineingepackt, dies ist eine Unterform. In dieser Variante muß die gesuchte Form der MDIParent sein! Die Unit des Parents muß in der UsesClausel stehen, bei mir UHauptform und das Fenster THauptform.

Anleitung:
Dann wird die Property Mainform deklariert als THauptform. Dies muß eine Property sein, sonnst würde der Getter uns Setter nicht angesprochen werden. Diese werden auch noch in Private deklariert. Als letztes packt man noch flux eine Procedure namens Setter und eine Funktion namens Getter in den Implementation-Teil.

Die Hauptform
Delphi-Quellcode:
unit UUnterform;

interface

uses
  System.Drawing, System.Collections, System.ComponentModel,
  System.Windows.Forms, System.Data, UHauptform;

type
  THauptform= class(System.Windows.Forms.Form)
  private
    function getter : THauptform;
    procedure setter (Form : THauptform);
    property Mainform : THauptform read getter write setter ;
  end;

implementation

uses UBuecher;

function TBuecher.getter : THauptform;
begin
   result := MDIParent as THauptform;
end;

procedure TBuecher.setter(Form : THauptform);
begin
  MDIParent := Form;
end;
Hoffe das reicht. Bei mir funktioneirt es zumindest ;-)


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