Einzelnen Beitrag anzeigen

Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

ObjectList.Assign klappt nicht immer.

  Alt 23. Nov 2012, 07:38
Hi,

ich habe eine etwas merkwürdiges Problem. Ich versuche das mal zu beschreiben.

Ich habe eine ObjectList (Gruppen: TGruppenList) mit Objecten, die ihrerseits wiederum eine ObjectList (Mitarbeiter: TMitarbeiterlist) beinhalten.

Nun will ich folgendes machen:
Die Daten eines Objects von Guppen samt Mitarbeiter an ein Unterformular weitergeben, dort ggf. bearbeiten und dann ggf. wieder zurückspeichern.
Die Variablen der vom Gruppenelement übergebe ich in Editfelder und die Objectlist Mitarbeiter übergebe ich in eine eigene ObjectList des Bearbeitungsformulars.

Ist die MitarbeiterList zu beginn leer funktioniert es auch so, wie erwartet. Sind dort aber schon Objecte vorhanden, so werden diese zwar an Bearbeitungsformular übergeben, aber kommen leer wieder zurück. Ist ein bischen blöd zu bescheiben, deswegen mal ein bischen Source.

Der Aufruf der Berabeitungsform:
Delphi-Quellcode:
  frm_gruppebearbeiten.guid:=frm_main.gruppen[0].guid;
  frm_gruppebearbeiten.edt_name.Text:=frm_main.gruppen[0].name;
  frm_gruppebearbeiten.edt_grnr.Text:=frm_main.gruppen[o].grnr;
  frm_gruppebearbeiten.mmo_beschreibung.Lines.Text:=frm_main.gruppen[0].Beschreibung;
  frm_gruppebearbeiten.mitglieder.Assign(frm_main.gruppen[0].Mitglieder); //<-- Das Funktioniert, ich kann auf die Daten in Unterform zugreifen
  if frm_gruppebearbeiten.ShowModal=mrOk then
  begin
    frm_main.gruppen[0].name:=frm_gruppebearbeiten.edt_name.Text;
    frm_main.gruppen[0].Beschreibung:=frm_gruppebearbeiten.mmo_beschreibung.Lines.Text;
    frm_main.gruppen[0].Mitglieder.Clear; //<-- Hab ich mal hinzugefügt, bringt aber keine Änderung
    frm_main.gruppen[0].Mitglieder.Assign(frm_gruppebearbeiten.mitglieder); //<-- Hier werden die Daten wohl nicht richtig zurückgegeben.
                                                                                             // Es sind zwar alle Elemente vorhanden, aber sie sind leer.
    frm_main.gruppen[0].SaveToDB;
    LeseGruppen(True);
  end;
Die Units, in denen die ObjectListen erstellt werden, lege ich mal als Anhang bei.

Ich habe bestimmt irgendwo einen Fehler gemacht, aber ich finde den einfach nicht. Soweit ich weiß erstellt Assign ja eine Kopie der Object. Demnach müßte es ja eigentlich funktionieren.
Angehängte Dateien
Dateityp: pas ugruppen.pas (11,3 KB, 5x aufgerufen)
Dateityp: pas umitarbeiter.pas (11,8 KB, 5x aufgerufen)
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat