![]() |
Auf die Eigenschaften eines Forms zugreifen
Hallo zusammen.
Ich habe gerade festgestellt, dass ich sogar zu dumm zu sein scheine, auf die Eigenschaften (Left, Height, Width) eines Formulares zuzugreifen. Bei VCL Anwendungen konnte man noch schreiben: Form1.Height, bei WinForms geht das offensichtlich nicht mehr. Kann mir bei diesem - wahrscheinlich sehr einfach zu lösenden Problem jemand helfen? Danke schon mal, Stanlay :hi: |
Re: Auf die Eigenschaften eines Forms zugreifen
Delphi-Quellcode:
Self.Left
Self.Top Self.Width Self.Height |
Re: Auf die Eigenschaften eines Forms zugreifen
Herzlichen Dank :thumb:
Aber wieso funktioniert das nicht mit Form1.Height? Würde mich nur so interessieren (man will ja was lernen :) ) Danke nochmal, Stanlay :hi: |
Re: Auf die Eigenschaften eines Forms zugreifen
Weil es keine globale Variable mit dem Namen Form1 gibt.
|
Re: Auf die Eigenschaften eines Forms zugreifen
:wall: Danke für die Erklärung. Ist ja eigentlich logisch :oops:
Man liest sich, Stanlay :hi: |
Re: Auf die Eigenschaften eines Forms zugreifen
Hallo
Und wie funktioniert es wenn ich von einer anderen Form zugreifen will? Die Control steht auf public In der 2 Form unter implementation/uses Homer |
Re: Auf die Eigenschaften eines Forms zugreifen
Zitat:
Ist dein 2. Form nur ein Dialog, der erzeugt und wieder zerstört wird erzeugst du eine lokale Instanz. Soll es zur gesamten Laufzeit bestehen, kannst du es ja als Eigenschaft an dein Hauptform packen (oder wo auch immer es am sinnvollsten ist). Diese ekligen globalen Designer variablen von Delphi sollte man sowieso nicht verwenden. ;) |
Re: Auf die Eigenschaften eines Forms zugreifen
kannst du mir auch sagen wie man das macht?
Bin grade dabei in .net unterzugehen. |
Re: Auf die Eigenschaften eines Forms zugreifen
|
Re: Auf die Eigenschaften eines Forms zugreifen
Hmmm
Ich weiß jetzt nicht ob ich dich verstehe? hier mal was ich eigentlich machen will FCL delphi 2005 MainForm dort habe eine sqlConnection die Steht auf public und jetzt möchte ich in meiner DB-Unit darauf zugreifen. ich dachte es geht wie bei VCL MainForm.sqlConnection.Connectionstring := 'dbirgendwo' |
Re: Auf die Eigenschaften eines Forms zugreifen
Zitat:
Wie übergibst du ihr dein Form: Im Constructor? als Property? ,... Zitat:
Wobei ich zugeben muss: Ich weiß jetzt nicht ob ich dich verstehe? ;) p.s.: Der Code weiter oben war nur als absolut abstraktes Beispiel zum Instanzieren eines Forms gedacht. ;) |
Re: Auf die Eigenschaften eines Forms zugreifen
Hallo
Hier mal was ich habe Meine Haupt_Unit HF_Unit
Code:
unit HF_Unit;
interface uses System.Drawing, System.Collections, System.ComponentModel, System.Windows.Forms, System.Data, System.Data.SqlClient, System.Configuration, DB_Unit; type HF = 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; /// <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-Deklarationen } public Connection1: System.Data.SqlClient.SqlConnection; constructor Create; end; [assembly: RuntimeRequiredAttribute(TypeOf(HF))] 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 HF.InitializeComponent; begin Self.Connection1 := System.Data.SqlClient.SqlConnection.Create; Self.Button1 := System.Windows.Forms.Button.Create; Self.SuspendLayout; // // Connection1 // Self.Connection1.ConnectionString := 'data source="D:\HomersPowerShop\1_Pr' + 'ojekt\1_Programm\DB\DB.mdb";persist security info=False'; // // Button1 // Self.Button1.Location := System.Drawing.Point.Create(248, 240); Self.Button1.Name := 'Button1'; Self.Button1.TabIndex := 0; Self.Button1.Text := 'Button1'; Include(Self.Button1.Click, Self.Button1_Click); // // HF // Self.AutoScaleBaseSize := System.Drawing.Size.Create(5, 13); Self.AutoScroll := True; Self.ClientSize := System.Drawing.Size.Create(744, 542); Self.Controls.Add(Self.Button1); Self.Name := 'HF'; Self.StartPosition := System.Windows.Forms.FormStartPosition.CenterScreen; Self.Text := 'WinForm'; Self.ResumeLayout(False); end; {$ENDREGION} procedure HF.Dispose(Disposing: Boolean); begin if Disposing then begin if Components <> nil then Components.Dispose(); end; inherited Dispose(Disposing); end; constructor HF.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 HF.Button1_Click(sender: System.Object; e: System.EventArgs); begin Datenbank_Verbinden_DBU; Hier die Datenbankverbinden end; end.
Code:
unit DB_Unit;
interface uses System.Drawing, System.Collections, System.ComponentModel, System.Windows.Forms, System.Data, System.IO, System.Data.SqlClient; //Type (öffentlich) //Konstante (öffentlich) //Variabele (öffentlich) //Proceduren (öffentlich) Procedure Datenbank_Verbinden_DBU(); //Functionen (öffentlich) implementation uses HF_Unit; //############################################################################## //############################################################################## // //Datenbank verbinden // //############################################################################## //############################################################################## Procedure Datenbank_Verbinden_DBU(); var db_file_s : String; verbindungs_string_s : String; begin //Datenbank File db_file_s := Application.StartupPath + '\DB\' + 'db.mdb'; if System.IO.File.Exists(db_file_s) then begin verbindungs_string_s := 'data source=' + db_file_s + ';persist security info=False'; HF.Create.Connection1.ConnectionString := verbindungs_string_s; end else begin MessageBox.Show(db_file_s); end; end; end. ich weiß jetzt aber nicht ob "HF.Create.Connection1.ConnectionString" richtig ist |
Re: Auf die Eigenschaften eines Forms zugreifen
ähm nunja...
.Net ist eine reine OOP-Umgebung. Delphi.Net lässt zwar solche Dinge wie lose stehende Funktionen zu, mit .Net Programmierung hat das herzlich wenig zu tun. (sowas war auch schon unter Delphi32 unschön ;) ) Aber da du anscheinend nicht viel für OOP übrig hast... Du brauchst auf jeden Fall kein Formular, genausowenig brauchst du den Name deiner Connection:
Delphi-Quellcode:
In deinem Form:
procedure DatenbankVerbindenDBU(const aConnection: IDbConnection);
var DatabaseFile : string; begin //Datenbank File DatabaseFile := Application.StartupPath + '\DB\db.mdb'; if &File.Exists(DatabaseFile) then aConnection.ConnectionString := System.String.Format('data source={0};persist security info=False' [DatabaseFile]) else MessageBox.Show(DatabaseFile); end;
Delphi-Quellcode:
DatenbankVerbindenDBU(DeineConnection);
|
Re: Auf die Eigenschaften eines Forms zugreifen
dank erstmal
aber das löst nicht mein Problem ich möchte gern aus einer Unit auf die Controls auf einer Form zugreifen wenn ich zB position für Panel, GroupBoxen usw festlege wollte ich das gerne in einer eigenen Unit machen und dann über ein Ereignis (z.B onClick)auf der Form zugreifen gibt es da weg unter net? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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