Chart használata prezentációban egyszerűen?
Egyik kedves felhasználónktól érkezett az alábbi kérdés: “Chart-ot szeretnénk kimásolni képként prezentációba/dokumentumba. A Ctrl+C és Ctrl+V kombinációval csak az elérést másolja ki „.Models.NarrowAisle.Chart1”. Képmetszővel tudnám kiszedni, de akkor a pontos illesztés és méretre vágás mindig plusz idő, ha ugyanazt a diagramot kell sokszor kivágnom több futtatásnál. Van erre jó, bevált megoldás?”
Ez egy nagyon jó kérdés, amiről egy pár ötlet eszembe jutott, ezek lesznek ebben a cikkben.
Az alapötlet az, hogy a Chart objektumnak van egy CopyBitmapToClipboard metódusa, amelyet különböző módon lehetne felhasználni a fenti feladat megkönnyítésére.
Open kontroll módosítása
Az első ötlet, hogy a Chart objektumnak az Open kontrollját módosítjuk. Amikor a felhasználó megnyitja a Chart dialógusát, akkor rögtön rakja is vágólapra a grafikon képét.

A kód végén a vágólapra másolás után nekünk kell manuálisan megnyitni a dialógusát a Chart objektumnak, ha már felülírtuk a gyári kontrollt.

?.copyBitmapToClipboard(1000, 600)
?.Opendialog
További előnye a copyBitmapToClipboard metódus használatának a manuális módszerekkel szemben, hogy mindig ugyanakkora méretben másolja a képet a vágólapra. Így ha egyszer belőttük a Powerpoint prezentációnkban szükséges képméretet, akkor az mindig megfelelő méretű lesz.

Vágólapra másolás a szimuláció végén
Ezt az ötletet tovább is fejleszthetjük, és a szimulácó végén az endsim metódusba is bele tehetjük a vágólapra másolást.
Hogy ez miért jó és hogyan tudjuk használni? A Windows 10 vagy annál frissebb Windows verziókban használható a vágólap történet. Ezt a Windows billentyű + V kombinációval érhetjük el. Ezen a vágólap történeten megjelenik az összes elem, amit legutóbb a vágólapra másoltunk, és innen ki tudjuk választani, hogy az adott Powerpoint diára melyik képet akarjuk bemásolni. Így, ha az endsim metódus esetében a vágólapra másoljuk az összes grafikont, akkor utána már csak válogatnunk kell a Powerpointban közülük.

Itt még egy trükkk van az endsim metódusban. Ha a CopyBitmaptoClipboard metódusokat egymás után rakjuk közvetlenül, akkor a Plant Simulation “túl gyorsan” másol a vágólapra, így kimaradhatnak képek és nem kerül az összes grafikon a vágólapra. Ezért a másolások közé egy rövid várakozást be lehet illeszteni (a sleep valós időben és nem szimulációs időben vár), így biztos, hogy mindegyik kép felkerül a vágólapra.
Chart.copybitmaptoclipboard(1000, 600)
sleep(1, true)
Chart1.copybitmaptoclipboard(1000, 600)
A sleep idejét a gépünk sebességétől függően növelhetjük vagy csökkenthetjük tesztelés után.