Entwickler-Ecke
WinForms - C#: einfache Tabelle (ohne DB)
JayK - Fr 09.09.05 20:08
Titel: C#: einfache Tabelle (ohne DB)
Hallo,
ich habe ein C# Programm programmiert (#develop), dass per Intervallschachtelung die Quadratwurzel einer natürlichen Zahl annähert. Ich möchte jetzt, die Daten die ich ausgeben will (Intervall, Intervalllänge, Nährungswert, Probe) in einer Tabelle anordnen.
Wie mache ich das am einfachsten?
Das Zeuch in C# kennt das Wort Tabelle anscheinend nur in Verbindung mit Datenbank :roll: mit der mein Prog aber nix zu tun hat.
Da ich vorher noch nicht mit Grids gearbeitet habe, bitte ich auch im Codebeispiele.
Schonmal Danke im vorraus
JayKModeriert von
raziel: Topic aus .NET verschoben am Sa 17.09.2005 um 22:07
JayK - Sa 10.09.05 11:20
Als Tabellen-Kompo hab ich nur DataGrid gefunden und das brauch ein DataSource. Über die Hilfe bin ich dann auf DataTable gestoßen, aber damit komm ich irgendwie nicht zurecht. :(
Pls Help!
Marauder - Sa 10.09.05 19:13
Im Grunde ist das ganz einfach. Unter .NET kann jede Komponente an fast alles gebunden werden.
In deinem Fall kommt aber ein Array nicht in Frage. DU hast zwei Möglichkeiten:
1. Eine eigene Klasse, dass folgende Beispiel ist für Delphi, sollte aber einfach umzusetzen sein:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| type rDat = class private iID : System.Int32; bAktiv : System.Boolean; sVorname : System.&String; sName : System.&String; procedure wID(ID:System.int32); function rID():System.int32; procedure wAktiv(Aktiv:System.Boolean); function rAktiv():System.Boolean; procedure wVN(Vorname:System.String); function rVN():System.String; procedure wNa(Name:System.String); function rNa():System.String;
constructor create (ID:System.int32;Aktiv:System.boolean;Vorname:System.String;Name:System.String);
published property ID : System.Int32 read rID write wID; property Aktiv : System.Boolean read rAktiv write wAktiv; property Vorname : System.&String read rVN write wVN; property Name : System.&String read rNa write wNa; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure rDat.wID(ID:System.int32); begin; iID := ID; end; function rDat.rID():System.int32; begin; Result := iID; end; procedure rDat.wAktiv(Aktiv:System.Boolean); begin; bAktiv := Aktiv end; function rDat.rAktiv():System.Boolean; begin; Result := bAktiv; end; procedure rDat.wVN(Vorname:System.String); begin; sVorname := Vorname end; function rDat.rVN():System.String; begin; Result := sVorname; end; procedure rDat.wNa(Name:System.String); begin; sName := Name end; function rDat.rNa():System.String; begin; Result := sName; end;
Constructor rDat.Create (ID:System.int32;Aktiv:System.boolean;Vorname:System.String;Name:System.String); begin; inherited Create; iID := ID; bAktiv := Aktiv; sVorname := Vorname;sName := Name; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs); var aDaten : ArrayList;
begin DataGrid1.DataSource := NIL; DataGrid1.CaptionText := 'DataGrid mit Arraylist'; DataGrid1.GridLineStyle := DataGridLineStyle.Solid ;
aDaten := Arraylist.Create; aDaten.Add(rDat.create (1,false,'Hansi','Hase')); aDaten.Add(rDat.create (2,true ,'Tilo' ,'Tester')); aDaten.Add(rDat.create (3,true ,'Karl' ,'Krötentöter')); aDaten.Add(rDat.create (4,false,'Peter','Pan')); DataGrid1.DataSource := aDaten;
combobox1.DataSource := NIL; combobox1.DisplayMember := NIL; combobox1.ValueMember := NIL; combobox1.items.Clear; combobox1.DataSource := aDaten; combobox1.DisplayMember := 'Name'; combobox1.ValueMember :='ID';
Listbox1.DataSource := NIL; Listbox1.DisplayMember := NIL; Listbox1.ValueMember := NIL; Listbox1.Items.Clear; Listbox1.DataSource := aDaten; Listbox1.DisplayMember := 'Name'; Listbox1.ValueMember :='ID'; end; |
Das zweite Beispiel ist mit einer DataTable:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs); var dt : DataTable; rw : DataRow; dv : DataView; a : integer; begin DataGrid1.DataSource := NIL; DataGrid1.CaptionText := 'DataGrid mit DataView'; DataGrid1.GridLineStyle := DataGridLineStyle.Solid ;
dt := datatable.Create; dt.Columns.Add ('ID', System.Type.GetType('System.Int32')); dt.Columns.Add('(String 1)', System.Type.GetType('System.String')); dt.Columns.Add('(String 2)', System.Type.GetType('System.String')); dt.Columns.Add('(Double)', System.Type.GetType('System.Double')); dt.Columns.Add('(Integer)', System.Type.GetType('System.Int64'));
for a := 0 to 50 do begin rw := dt.NewRow ; rw.Item ['ID'] := a; rw.Item ['(String 1)'] := 'Spalte 1 ' + a.ToString ; rw.Item ['(String 2)'] := 'Spalte 2 ' + a.ToString ; rw.Item ['(Double)'] := a / 0.3 ; rw.Item ['(Integer)'] := a * 123 ; dt.Rows.Add(rw); end;
dv := DataView.Create (dt); DataGrid1.DataSource := dv;
end; |
Die Beispiele stammen übrigens aus meinem Buch, ist schon im Vorverkauf, kommt ab Oktober:
"Delphi goes .NET"
:wink:
Schleichwerbung ist bestimmt verboten, gell? :D
JayK - Sa 10.09.05 22:11
Marauder hat folgendes geschrieben: |
Das zweite Beispiel ist mit einer DataTable:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs); var dt : DataTable; rw : DataRow; dv : DataView; a : integer; begin for a := 0 to 50 do begin rw := dt.NewRow ; rw.Item ['ID'] := a; rw.Item ['(String 1)'] := 'Spalte 1 ' + a.ToString ; | |
Hmm. Bei mir hat System.Data.DataRow keine Eigenschaft Item :? höchstens ItemArray.
Marauder hat folgendes geschrieben: |
Die Beispiele stammen übrigens aus meinem Buch, ist schon im Vorverkauf, kommt ab Oktober:
"Delphi goes .NET" |
:shock: Du bist Buchautor? Geil. ;)
Marauder hat folgendes geschrieben: |
Schleichwerbung ist bestimmt verboten, gell? :D |
Ja freilich! :mrgreen:
Marauder - So 11.09.05 01:18
.NET Version? Meins ist die 1.1 mit ServicePacks... :wink:
Ausserdem... glaub nicht alles was die IDE's Dir sagen, Delphi zeigt oft nicht das an, was
man erwartet, funktioniert aber trotzdem, wenn man es ausprobiert.
Teilweise zeigt es sogar Fehler, wo gar keine sind, zum Beispiel bei Arrays und equal, da steht
dann FEHLER! VERKEHRT! GEHT NICHT! (Frei übersetzt) -läuft aber trotzdem alles.
Also wenn du auch 1.1 verwendest, sollte auf jeden Fall DataRow vorhanden sein... :D
Zitat: |
Du bist Buchautor? Geil. |
Ja, und Ende des Jahres gibt's das Datenbankkompendium von mir, alles was Ihr noch nie
über die 6 wichtigsten Datenbanken wissen wolltet...
Also "Delphi goes Databases" da ist dann alles drin, wie man Sie einrichtet, anspricht und verwendet.
Ntürlich auch solche Sachen wie Datenbindungen, Datenbanken anbinden ohne sie zu binden, etc...
Fang ich im Oktober an.
JayK - So 11.09.05 19:27
Marauder hat folgendes geschrieben: |
.NET Version? Meins ist die 1.1 mit ServicePacks... :wink: |
Ich hab auch 1.1 mit dt. Lng-Pack.
Marauder hat folgendes geschrieben: |
Ausserdem... glaub nicht alles was die IDE's Dir sagen, Delphi zeigt oft nicht das an, was man erwartet, funktioniert aber trotzdem, wenn man es ausprobiert. |
Ich benutzte aber #develop :tongue:
Und es lässt sich ja nicht kompilieren. (C# --> Microsofts C#-Compiler csc.exe) :-(
C#-Compiler hat folgendes geschrieben: |
'System.Data.DataRow' enthält keine Definition für 'Item'(CS0117) |
Marauder hat folgendes geschrieben: |
Also wenn du auch 1.1 verwendest, sollte auf jeden Fall DataRow vorhanden sein... :D |
DataRow ist ja auch da.
Aber die Eigenschaft/wasweißich DataRow.
Item gibts bei mir nicht.
Marauder - So 11.09.05 22:47
Ja, das scheint bei C# etwas anders zu sein... in der MSDN steht's so drin:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| DataTable myTable; myTable = MakeNamesTable(); DataRow myRow; myRow = myTable.NewRow(); myRow["fName"] = "John"; myRow["lName"] = "Smith"; myTable.Rows.Add(myRow); |
Anscheinend geht man nur bei Delphi über die Item-Auflistung... :wink:
Wobei.. bei C# macht man ja eigentlich auch nichts anderes, man schreibt nur das "item" nicht...
Moderiert von
raziel: Code- durch C#-Tags ersetzt
JayK - Mo 12.09.05 17:33
Danke jetzt klappt es. :D
PS. viel Erfolg mit deinem Buch ;-)
Marauder - Mo 12.09.05 17:37
Na also... :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!