PageContoll->ActivePage->SaveToMetafileEnh und LoadFrom...



  • Hallo in die Runde,

    Info: habe ein PageControl und ein paar Seiten (TabSheet´s) in denen, jeweils eine Chart (TeeChart) Komponente liegt. Auch liegt auf dem Form je ein OpenDialog und SaveDialog die beide mit dem Objektinspektor eingestellt wurden, sowie die Filter *.emf aufweisen.

    Problem:
    Nun bekomme ich es nicht geregelt einzele TabSheet´s bzw. den aktuellen als MetafileEnh abzuspeichern, und abgespeicherte wieder darzustellen.
    Auch eine Copy ins Clipboard gelingt mir auch noch nicht.

    Wäre nett wenn ich da etwas hilfe bekommen würde.

    Danke

    gil 😃



  • Du musst die Komponenten auf dem aktiven TabSheet "abklappern" und jeweils prüfen, ob es sich um ein TChart handelt.
    Siehe die FAQ unter "Komponenten - Zugriff nicht durch Namen".



  • Hallo Jansen,

    danke für die Info, aber wieso alles abklappern nach TChart wenn ich nur TChart´s habe? Und nur immer das aktuelle sichtbare TabSheet abspeichern möchte? Bzw. mit dem OpenDialog wieder einlesen möchte?

    mfg
    gil 😕



  • Wenn du ganz sicher bist, dass du nur ein TChart auf der Seite haben wirst kannst du natürlich auch mit einem absoluten Index arbeiten.

    Wenn du später aber feststellen solltest, dass du vielleicht doch noch gern ein Label oder eine CheckBox etc. auf dem TabSheet hättest, dann musst du den Code (teilweise) neu schreiben. Warum also nicht gleich die universelle Variante wählen?



  • Hallo Jansen,

    sorry gestern Abend musste ich Hals über Kopf weg. Ja du hast schon recht.
    Schaute mir dein Vorschlag in der FAQ nochmals an, dabei wird meine Verwirrung aber immer größer, Hilfe! 🤡 Komme trotzt allem nicht in die Pötte.
    Poste dir/euch mal den bisherigen Code für OpenClick Aktion:

    void __fastcall TForm1::SB_OeffnenClick(TObject *Sender)
    {
       if(OpenDialog1->Execute())
       {
          TTabSheet *pPage = new TTabSheet(this);
          pPage->PageControl = PageControl1;
          pPage->TabVisible = (true);
          pPage->Align = alClient;
          pPage->Caption = ExtractFileName(OpenDialog1->FileName);
    
          BitBtn_Schliessen->Visible = true;
          BitBtn_Schliessen->Caption =  ExtractFileName(OpenDialog1->FileName);
          PageControl1->SelectNextPage(true); // Selektiert den neuen Sheet
       }
          //LoadFromMetfileEnh(OpenDialog1->FileName);
    }
    

    Damit wird zur Laufzeit (jeweils) ein neues Sheet mit Reiterkarte angelegt, der BitBtn ist dafür da das geladene Teil wieder los zu werden. Was ich da absolut nicht raffe ist wie kann ich das Teil sichtbar machen, also bis jetzt wird eine neues leeres Sheet dargestellt?????. Wenn ich evtl, das Loading mal begriffen habe könnte das mit saving und copyclipboard auch funzen.

    Wie auch immer hatte es schon mal mit der Notebook Komponente fast am laufen, da ich aber schön brav bin und auf die Hilfe von BCB gehört habe, die mir empfohlen hat eine PageControl Komponente einzusetzen, sitze ich irgendwie in einem Tunnel ohne Licht fest.

    Gruss
    gil 🙂


Log in to reply