Entwickler-Ecke

Andere .NET-Sprachen - Fenstergröße aus TWinForm auslesen?


Neidhard von Reuental - Mo 09.01.06 11:30
Titel: Fenstergröße aus TWinForm auslesen?
Hi, ich hab gestern Abend mein neues Delphi2006 installiert und wollt mir gleich mal die .NET entwicklung ansehen. Habe vorher immer mit Delphi7 gearbeitet und hab schon ein Problem beim auslesen der aktuellen Fenstergröße :/

Ich möchte die Größe einer PictureBox der des Fensters anpassen. Das sollte doch nicht so ein Problem sein.
Mit folgendem Code habe ich es versucht.

Delphi-Quelltext
1:
2:
  PictureBox1.Width:=TWinForm.Width;
  PictureBox1.Height:=TWinForm.Height;

Die Eigenschaften Width und Height gibt es aber bei TWinForm nicht also bekomme ich einen Fehler. Laut Hilfe sollten diese aber Vorhanden sein.
TWinForm ist abgeleitet von System.Windows.Forms.Form

Wie kann ich nun die Fenstergröße ermitteln?
Schon mal danke für Eure Hilfe

Moderiert von user profile iconChristian S.: Highlight- durch Delphi-Tags ersetzt


Delete - Mo 09.01.06 11:56

Mit CSharp klappt es. Das heißt, die beiden Eigenschaften sind abgreifbar:

C#-Quelltext
1:
MessageBox.Show(String.Format("{0}, {1}"this.Width, this.Height));                    

this ist vergleichbar mit dem self von Delphi und bezieht sich in dem Fall auf das aktuelle Formular.

Alternativ dazu gäbe es auch noch:

C#-Quelltext
1:
MessageBox.Show(String.Format("{0}, {1}"this.Size.Width, this.Size.Height));                    


Oder die einfachste Variante zum Anpassen der Größe deiner PictureBox an das Fenster:

C#-Quelltext
1:
pictureBox1.Dock = DockStyle.Fill;                    

Das kannst du auch im Objektinspektor machen.


Neidhard von Reuental - Mo 09.01.06 12:06

Den Bezeichner "this" gibt es in Delphi.Net nicht
Die Dock-Eigenschaft auf Fill stezen geht :) Würde aber trotzdem gern noch wissen wound wie ich die Breiten- und Höheneigenschaft auslesen kann.


Christian S. - Mo 09.01.06 12:17

Du rufst die Breite von TWinForm ab. Das ist die Klasse, nicht die Instanz. Das kann nicht gehen.


Neidhard von Reuental - Mo 09.01.06 12:47

das ist schon richtig, TWinForm ist aber auch der eingetragene Name im Onjektinspektor.

Ok, hab nun den Zugriff auf die Werte durch "Self" bekommen. Thx :)


Christian S. - Mo 09.01.06 13:30

Ja, natürlich ist das der Name im OI, aber für die Klasse. Trotzdem wird da sicherlich eine Instanz mit Namen WinForm1 oder so erstellt.


Neidhard von Reuental - Mo 09.01.06 13:56

Nee, im Code habe ich nichts derartiges gefunden. WinForm1 etc. hab ich alles probiert und immer "Unbekannter Bezeichner" zurück bekommen.


Christian S. - Mo 09.01.06 14:09

Ah, Du hast Recht. Eine Instanz wird trotzdem angelegt (irgendwie muss ich mich ja retten :mrgreen:):

Delphi-Quelltext
1:
Application.Run(TWinForm.Create);                    

Sie wird nur nicht mehr in eine globale Variable gestopft, was ich sehr gut finde!


Delete - Mo 09.01.06 14:11

user profile iconNeidhard von Reuental hat folgendes geschrieben:
Den Bezeichner "this" gibt es in Delphi.Net nicht

Ach? :roll: Na ja, nicht dass ich dir das in meinem Beitrag nicht auch schon gesagt hätte, aber okay.


Neidhard von Reuental - Mo 09.01.06 16:13

upps, das hab ich wohl überlesen.