Entwickler-Ecke

Sonstiges (Delphi) - Pointer von Fenstern


Maa83 - Do 27.03.03 17:03
Titel: Pointer von Fenstern
Hallo ihr
ich hab folgendes Problem:

und zwar hab ich ein Fenster auf diesem befindet sich ein Button.
Klicke ich auf diesen Button öffnet sich ein Suchfenster in dem ich einen Datensatzt auswähle. Aus diesem Datensatzt lese ich die IdentNummer aus und geb diese zurück an das erste Fenster und schließe das SuchenDLG wieder.

Das Problem:
wenn ich das SuchenDLG aufrufe wird das erste Fenster auf NIL gesetzt da es sich um MDIChilds handelt...
deshalb muss ich mir den Pointer des Fensters merken.
Wenn ich den Pointer nun wieder zuweise habe ich auch das richtige Fenster wieder, kann die Variablen ansprechen usw.
Nur die Komponeten(Editfelder, ComboBoxen...) auf dem Fenster kann ich nicht ansprechen da diese immer noch aus mir unerfindlichen Gründen auf NIL gesetzt sind!


Tino - Fr 28.03.03 10:57

Hi,

Maa83 hat folgendes geschrieben:
wenn ich das SuchenDLG aufrufe wird das erste Fenster auf NIL gesetzt da es sich um MDIChilds handelt...

Sorry, aber das verstehe ich nicht. Erkläre doch mal bitte was genau Du jetzt machst und warum. Vielleicht gibt es ja eine bessere Möglichkeit Dein Ziel zu erreichen.

Gruß
Tino


Maa83 - Fr 28.03.03 12:44

Ich habs jetzt doch schon selber hinbekommen... :D

man ist das ein sche*** mit den Zeigern in Delphi

Wenns interessiert:

Pointer-Variable vom Typ ^TFenstername deklarieren
PointerVar: ^TFenster;

Pointer zwischensepeichern mit:
PointerVar := @TFenster;

Pointer dem Fenster wieder zuweisen mit:
TFenster := PointerVar^;

Bei diesem Thema merkt man richtig das die Leute von Borland keinen Bock hatten und alles von C übernommen haben... :shock:


Motzi - Fr 28.03.03 13:49

Objekte sind eigenlich schon Pointer, dh du kannst dir das ganz mit referenzieren/dereferenzieren eigentlich sparen!

TForm1 = class(TForm)
...
end;

var
pTempForm: TForm;

pTempForm := Form1; //zwischenspeichern
Form1 := pTempForm; // wieder zuweisen