2 Views und dessen Speicherung


  • Mod

    Ich verstehe Dich nicht. Rufst Du das Serialize des Dokuments aus dem View auf?

    Wenn das Doc alle (ich betone alle) Daten enthält und man speichert es, wo ist das Problem?
    Wenn Du zwie Views auf zwei Datenbereiche hast, dann müsste auch Dien Dokument 2 Datenbereiche haben!



  • Bitte habt etwas geduld mit mir. 😞

    Martin Richter schrieb:

    Ich verstehe Dich nicht. Rufst Du das Serialize des Dokuments aus dem View auf?

    Wenn das Doc alle (ich betone alle) Daten enthält und man speichert es, wo ist das Problem?
    Wenn Du zwie Views auf zwei Datenbereiche hast, dann müsste auch Dien Dokument 2 Datenbereiche haben!

    verdammt, dann nochmals anders 🙂

    Ich möchte in 2 views daten dargestellt haben. linker view grafikobjecte und rechter view plain text.

    Im Moment klappt das bloss in getrennten Projekten.

    Die Daten liegen im Doc das is richtig so, aber wenn ich nun die ObjectList wegspeichere dann enthält diese ja keinen text. Ich weiß immo noch nicht wie ich das anstellen soll das ich beides weggespeichert bekomme, sowohl den Inhalt der Objectlist als auch plain text und zwar in eine Datei.

    Wenn ich das richtig verstehe gibt es 2 Möglichkeiten.

    1. 2 View und 2 Datenbereiche, dann heißt das aber auch das die Datenbereiche wenn diese gespeichert werden in 2 getrennten dateien liegen oder habe ich da einen Knoten im Kopf?

    2. 2 View und 1 Datenbereich, nur die Darstellung der Daten ist eine andere und da setzte nun meine letzte Frage an ob das geht wenn man nun die Objectlist und ein String Feld in eine struktur packt und die dann serialisiert. Ob das geht ka. Deswegen frag ich ja.

    😞
    Snoop


  • Mod

    Wieso enthält die Objektliste keinen Text? Ich denke alle Daten sind im Dokument. Das hast Du doch geschrieben!
    Wenn der Text auch im Dokument ist wo ist das Problem? Alle Deine Daten aller Deiner Views müssen im Dokument sein. Was ist den daran so schwer? Dann kannst Du 1000 Views haben unterschieldicher Art und Du kannst Speichern.



  • Die Objectliste enthält immo deshalb keinen text weil das ein anderes Project ist. 🙂 Immo sind dort nur koordinaten von Rechtecken und Kreisen drinnen.

    Das ich nun da noch Text reinbekomme ist ja das Problem, was ich hier die ganze Zeit versuche irgendwie zu beschreiben. Wie kriege ich den da noch unter? und wenn der drinnen ist wie bekomme ich die Objecte(rechtecke und kreis) auf die eine Seite und den Text auf das andere view?

    Kann ich der Objectliste einfach den text so anhängen, wenn ja wie weiß das entsprechende view das es nur text oder nur die anderen objecte daratellen soll?


  • Mod

    Ich verstehe es leider immer noch nicht ganz.

    Gehören die Texte zu den Objekten? Hat also jedes Objekt einen eigenen Text? Dann gehört der Text auch in die Objekte zusammen mit den Koordinaten. Dann wäre die Trennung der Objekte vom Text (Du schreibst es ist ein anderes Projekt) ein Fehler!
    Wenn der Text eine Beschreibung ist für das was in dem anderen View ist, dann ist der Text ein eigenes CString im Dokument und wird als erstes vor der Objektliste oder nach der Objektliste in den Stream einbezogen.

    Man kann beim Serialisieren alle möglichen Objekte und Objektlisten hintereinander wegschreiben wenn Sie in der selben Folge wieder gelesen werden. Evtl. besteht Dein Irrtum darin, dass Du denkst, dass beim Serialize des Docs keine weiteren anderen Objekte mehr folgen dürfen. Dem ist nicht so.
    Jedes Objekt serialisiert sich selbst und ist nur für sich selbst verantwortlich. Die Reihenfolge der Objekte bestimmst Du!



  • Also müsste ich dann im Serialize das anders machen als es im Moment ist.

    void CMyDoc::Serialize(CArchive& ar)
    {
    	DrawObjectList.Serialize(ar);
    }
    

    In der Klasse CMyDrawObject:

    virtual void Serialize(CArchive& ar)
    		{ if (ar.IsStoring())
    			ar << Pos;
    			else
    			ar >> Pos;
    		};
    

    So wie das serialize jetzt ist würde wenn man da ein CString mit reinsetzt z.B. so:

    virtual void Serialize(CArchive& ar)
    		{ if (ar.IsStoring())
    			ar << Text << Pos;
    			else
    			ar >> Text >> Pos;
    		};
    

    zu jedem Object ein "Text" gehören oder?

    Wenn nun der Text wie du schon geschrieben hast als Beschreibung zu allem was im linken View zu sehen ist Serialisiert werden soll geht dann sowas?

    void CMyDoc::Serialize(CArchive& ar)
    {
    
            // erst alle einzelnen Objecte aus dem linken View wegspeichern bzw  
            // zurückladen
    	DrawObjectList.Serialize(ar);
    
    	// danach Text wegspeichern bzw laden
    	if (ar.IsStoring())
    	{
    		ar << Text;
    	}
    	else
    	{
    		ar >> Text;
    	}
    
    }
    

  • Mod

    Ja! Genau so ist es!



  • die Variable Text ist dann vom Typ CString und kommt in das Doc und wenn das View den Inhalt braucht wird der über die Referenz auf das Doc geholt und dargestellt oder?


  • Mod

    So ist es, der View ruft GetDocuemnt() auf und kan dann die entsprechende Membervariable oder Funktion aufrufen um sich die Daten zu besorgen.



  • Danke dir für die Geduld und Info's 🙂


Anmelden zum Antworten