Autor Beitrag
faux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro
C# (VS 2005), Delphi 7
BeitragVerfasst: Sa 26.11.05 11:28 
Hallo!

Ich programmiere grad ein Programm, welches eine MySQL-Verbindung benötig.
Ich habe zz zwei Forms. Eine heißt MainForm und die andere ConnWindow. MainForm ist klar, denke ich, und in ConnWindow werden die Verbindungsdaten eingegeben.
Ich habe die MySql.Data.MySqlClient.MySqlConnection in der MainForm-Klasse (logisch).
Wie kann ich jetzt eine Verbindung über ConnWindow aufbauen und deren MySQL-Connection in der Variable, welche in der MainForm liegt, speichern?
Ich brauch keinen Code, sondern will nur vom Prinzip wissen, wo ich eine Instanz von ConnWindow erstelle und wie ich dann auf die Variable in MainForm zugreife.

Grüße
Faux
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 27.11.05 03:32 
Hallo!

Ich würde den Konstruktor des ConnWindow so ändern, dass er eine MySQLConnection übergeben bekommt, mit der das ConnWindow dann arbeiten kann. Die Mainform übergibt dann beim Erzeugen des ConnWindow ihre Connection an den Konstruktor.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
faux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro
C# (VS 2005), Delphi 7
BeitragVerfasst: So 27.11.05 10:47 
Das ist eine gute Idee!
Ich denke mal, ich werd das so probieren.

Zwei Fragen hätte ich aber noch.
Ich muss ja eine Variable von Typ ConnWindow deklarieren - klar - auf die ich dann die Instanz leite.
1. Dies muss eine globale Variable sein, oder?
2. Wie weiß ich, wenn ConnWindow die Connection zurück gibt? Soll ich da ein Event auf die in Frage 1 beschriebene Variable setzen, das dann von ConnWindow ausgelöst wird, oder soll ich eine Schleife machen, die solange läuft, bis ConnWindow die Connection zurück gibt?

Danke für die Antwort!

Grüße
Faux
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 27.11.05 13:28 
Zitat:
Das ist eine gute Idee!
Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;)
Zitat:
Zwei Fragen hätte ich aber noch.
Ich muss ja eine Variable von Typ ConnWindow deklarieren - klar - auf die ich dann die Instanz leite.
1. Dies muss eine globale Variable sein, oder?
2. Wie weiß ich, wenn ConnWindow die Connection zurück gibt? Soll ich da ein Event auf die in Frage 1 beschriebene Variable setzen, das dann von ConnWindow ausgelöst wird, oder soll ich eine Schleife machen, die solange läuft, bis ConnWindow die Connection zurück gibt?
Nein und Nein(!)
Das ist doch eine Paradeaufgabe für einen modalen Dialog. ;)
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
using (ConnectionDialog dialog = new ConnectionDialog(deineConnection))
{
  if (dialog.ShowDialog() == DialogResult.Ok)
    deineConnection.Open();
}


Wichtig ist natürlich noch, dass du den parameterlosen Konstruktor behälst, da dir sonst der Desiner ins Gesicht springt.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public ConnectionDialog()
{
  InitializeComponent();
}

public ConnectionDialog(IDbConnection connection)
  : this()//den Konstruktor von oben aufrufen
{
  this.connection = connection;
}
faux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro
C# (VS 2005), Delphi 7
BeitragVerfasst: So 27.11.05 13:55 
user profile iconRobert_G hat folgendes geschrieben:
Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;)

Was soll denn das wieder heißen? :twisted:

Ja, das mit der globalen Variable habe ich auf "mit Event" bezogen. Also einfach ignorieren... :oops:

OK, werd das mit dem Dialog lösen. Das wäre eigentlich die naheliegenste Lösung gewesen. :roll:

Grüße
Faux

NACHTRAG:
SO, eine dumme Frage jagt die andere. :mrgreen:
Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet? :oops:
Wollte mir eigentlich mittels Lutz Roeders Reflector ansehen, wie Microsoft das beim SaveDialog gelöst hat, aber selbst dafür bin ich anscheinden zu dum. :cry:
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 27.11.05 14:48 
user profile iconfaux hat folgendes geschrieben:
user profile iconRobert_G hat folgendes geschrieben:
Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;)
Was soll denn das wieder heißen? :twisted:

Das sollte heißen, dass man nachsichtig mit dir sein muss. Schließlich hat der durchschnittl. Delphianer die Angewohnheit hat alles mit globalen Variablen, dyn. Arrays oder anderen Dingen zu erschlagen, für die er nicht viel nachdenken muss.
Nichts davon funktioniert wirklich gut in .Net-Sprachen. :mrgreen:

Zitat:
Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet?
Gar nicht, ist bereits eine Methode von Form.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 27.11.05 14:51 
user profile iconRobert_G hat folgendes geschrieben:
Das sollte heißen, dass man nachsichtig mit dir sein muss. Schließlich hat der durchschnittl. Delphianer die Angewohnheit hat alles mit globalen Variablen, dyn. Arrays oder anderen Dingen zu erschlagen, für die er nicht viel nachdenken muss.
Manchmal habe ich bei Dir die Befürchtung, Du hast diese dummen Vorurteile wirklich und das ist nicht nur Spaß. :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
faux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro
C# (VS 2005), Delphi 7
BeitragVerfasst: So 27.11.05 15:14 
user profile iconRobert_G hat folgendes geschrieben:
user profile iconfaux hat folgendes geschrieben:
user profile iconRobert_G hat folgendes geschrieben:
Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;)
Was soll denn das wieder heißen? :twisted:

Das sollte heißen, dass man nachsichtig mit dir sein muss. Schließlich hat der durchschnittl. Delphianer die Angewohnheit hat alles mit globalen Variablen, dyn. Arrays oder anderen Dingen zu erschlagen, für die er nicht viel nachdenken muss.
Nichts davon funktioniert wirklich gut in .Net-Sprachen. :mrgreen:

Ist auch gut so!

user profile iconRobert_G hat folgendes geschrieben:
Zitat:
Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet?
Gar nicht, ist bereits eine Methode von Form.

.NET ist mir zu langweilig. Da gibt es ja alles schon... :mrgreen:

Wann wird hier welcher Wert returnt? Also wie kann ich sagen, dass DialogResult.OK oder DialogResult.Cancel returnt wird?

Grüße
Faux
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 27.11.05 16:19 
Zitat:
Wann wird hier welcher Wert returnt? Also wie kann ich sagen, dass DialogResult.OK oder DialogResult.Cancel returnt wird?
Du wirst wohl einen okButton und einen cancelButton auf deinem Dialog haben, oder?
Im ersten setzt du DialogResult af Ok, im zweiten auf Cancel.

btw: @Christian
Der erste Satz war als Stichelei gedacht,im 2. hätte ich vllt "der durchschnittl. Delphianer" gegen "die meisten, die mir untergekommen sind" ersetzen sollen. Ändert aber nicht viel daran, und ja das ist meine Meinung.
Das ist das Problem mit einer Sprache/IDE, die als VB-Killer konzipiert wurde: Man hat einfach viele Fast-VB'ler...
faux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36

Win XP Pro
C# (VS 2005), Delphi 7
BeitragVerfasst: So 27.11.05 16:49 
user profile iconRobert_G hat folgendes geschrieben:
Zitat:
Wann wird hier welcher Wert returnt? Also wie kann ich sagen, dass DialogResult.OK oder DialogResult.Cancel returnt wird?
Du wirst wohl einen okButton und einen cancelButton auf deinem Dialog haben, oder?
Im ersten setzt du DialogResult af Ok, im zweiten auf Cancel.

No comment. :mrgreen:

Danke.