Autor Beitrag
Grüner58
Hält's aus hier
Beiträge: 2

Win 2000 Server. Win 2000 Prof, Win XP Prof
Delphi 2005 Prof, C# (VS 2003 Architekt)
BeitragVerfasst: Di 11.10.05 20:16 
Leuts,
ich weiß zwar, wie man in Delphi(ich verwende Delphi 2005) .NET Daten aus Tabellen bzw XML-Files ausliest und weiterverarbeitet. Aber wie macht man das eigentlich mit Variablen, die via Tastatur in ein Textfeld eingegeben werden sollen? Der Anwender will (einfaches Beispiel) den Radius eines Kreises eingeben und das Programm soll anschließend auf Knopfdruck den Umfang und den Durchmesser ausgeben. Entweder deklariere ich die Variablen am falschen Platz oder verwende die falsche Komponente zur Dateneingabe. Ich weiß, das Problem ist profan. Doch wälze ich die Handbücher hin und her, und genau das wird nicht erklärt. Natürlich könnte man o.g. Beispiel auch als Console programieren. Das schaffe ich problemlos. Aber ich möchte bei einem anstehenden Projekt mit mehreren Variableneingaben doch lieber auf WinForms zurückgreifen. Vielen Dank für die Hilfe.


Moderiert von user profile iconChristian S.: Topic aus .NET verschoben am Mo 24.10.2005 um 01:08
Master_BB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Fr 21.10.05 12:03 
hm ganz einfach wie beim alten delphi mit kleinen unterschieden.

Ok wir haben eine WinForm auf der Eine "RadiusInputTextBox" platziert ist
was der EditBox aus Delphi W32 entspricht.
Dann greifen wir einfach auf den eingegebenen Text durch
RadiusInputTextBox.Text zu.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  ARadius : Int32;
begin
  try
    ARadius := Convert.ToInt32(RadiusInputTextBox.Text);
  except
    ARadius := 0;
  end;
end;


aja wenn im RadiusInputTextBox.Text kein gültiger Int steht wirft Convert glaub cih ne
exception daher try except drum und du hast sozusagen gleich eine kontrolle ob auch
ein gültiger wert eingegeben wurde.

greetz
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: So 23.10.05 23:40 
In .Net gibt es dafür DataBinding. ;)
Dein Wert wird ja sicher nicht einfach so im Nirgendwo rumliegen. Du hast sicherlich eine Klasse, die den Radius als read/write Property hat und eine readonly Property für den Umfang hat, right?

Ich hoffe, das kommt D.Net hoffentlich nahe genugIst von einem anderen Pascal dialekt umgewandelt[/meta]. ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  KreisUmfangsDings = public class
  private
    procedure get_Umfang: Integer;
  public
    property Radius : Integer;
    property Umfang : Integer read get_Umfang;      
  end;

implementation

procedure KreisUmfangsDings.get_Umfang: Integer;
begin
  result := Integer(2 * (Math.PI * Radius));
end;


Nehmen wir nun an, du hast eine RadiusTextBox und ein UmfangLabel auf deinem Form, dann kannst du beide einfach an das KreisUnfangsDings binden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
kreisDings := KreisUmfangsDings.Create();
  
RadiusTextBox.DataBindings.Add('Text', kreisDings, 'Radius');
UmfangLabel.DataBindings.Add('Text', kreisDings, 'Umfang');


Das Übernehmen der Werte verhält sich ähnlich wie bei den DB-Aware Controls von früher, Esc setzt den Wert zurück, Verlassen des Controls schreibt den Wert in das KreisDings.
Dadurch siehst du sofort den Umfang im Label. (Die Property Umfang errechnet sich ja aus Radius ;) )

Ich hoffe mal das war nicht zuuuu abstrakt... :oops:

btw: Beim nächsten Mal .Net-Dinge über das C#-Forum schreiben, den Beitrag hier habe ich zum Bleistift nur zufällig gesehen. ;) Hier gehören IMHO nur Dinge rein, die speziell und ausschließlich auf Delphi.Net beschränkt sind. ;)
Einloggen, um Attachments anzusehen!