Kuunda na kuonyesha hati za OLE katika fomu uk.1. Teknolojia ya OLE (Kiungo cha Kuunganisha na Kupachika).

Ufikiaji 2010 una uwezo wa kuongeza vitu kwenye uwanja na aina Data ya OLE . Katika kesi ambapo aina ya data imetajwa kama OLE (Kuunganisha na Kupachika kitu- kufunga kitu na kupachika), basi Fikia DBMS huokoa nje kitu V faili iliyoshirikiwa hifadhidata, ikitenga kwa uhifadhi wake nafasi nyingi kama kitu hiki kinachukua katika mfumo wa faili tofauti. Chini ya vitu inapaswa kueleweka kama faili zilizoundwa kama programu katika wahariri wa picha, klipu za video, katika programu za MS Office, n.k. Jedwali linapojazwa na data ambayo ni kitu, ujumbe kuhusu programu ambayo inaweza kutumika kufungua kitu hiki hutolewa katika nafasi inayolingana ya shamba na aina ya data ya OLE. Inaonyesha kitu itafanywa tu katika fomu na ripoti.

Kwa kupachika kitu uwanjani na Aina ya data ya OLE unahitaji kufungua meza ndani Hali ya "Mjenzi". Ongeza uwanja mpya, kwa mfano "Picha ya bidhaa." Chagua aina ya data "Uwanja wa Kitu cha OLE", na kisha uhifadhi meza.

Kisha katika hali ya "Jedwali". kwenye mstari wa kuingiza data, bofya kitufe cha haki cha mouse, kwenye menyu inayofungua, chagua mstari na amri, ambayo itafungua sanduku la mazungumzo (Mchoro 3.38, Mchoro 3.39).

Mchele. 3.38 Kuingiza kitu

Mchele. 3.39 Kisanduku cha mazungumzo cha kuongeza kitu kipya kwenye jedwali la Ufikiaji

Kumbuka kuwa kuna chaguzi mbili za kupachika vitu kama data. Fursa ya kwanza hutoa kwa matumizi maombi ya kawaida ili kuunda faili ambayo Access inasaidia, chaguo la pili ni kuingiza kitu , ambayo hukuruhusu kutumia faili yoyote kama chanzo cha data (Mchoro 3.40).

Mchele. 3.40 Kuongeza kitu kipya kwenye jedwali la Ufikiaji kutoka kwa faili

1. Kuunda kitu kutoka kwa faili.

Linapokuja suala la data, ambayo ni vitu kwa hifadhidata, na ni faili za nje, basi unahitaji kuwa na faili hizi. Kwa hivyo, utahitaji kuunda faili kadhaa ili kuona jinsi zinavyoonyeshwa kwenye hifadhidata katika siku zijazo, na pia jaribu kubadilisha faili hizi. Kwa mfano, ikiwa una picha ya kitu kwenye faili Monitor.jpg(jpg- picha ya ulimwengu wote muundo). Ili faili hii ihifadhiwe kwenye hifadhidata, unapaswa kuangalia kisanduku (Mchoro 3.40) "Unda kutoka kwa faili" , baada ya hapo dirisha iliyoonyeshwa kwenye Mchoro 3.41 itaonekana. Kwa kutumia kitufe "Kagua" unapaswa kuchagua faili inayohitajika.

Mchele. 3.41 Kupata faili wakati wa kuunda kitu kwenye hifadhidata

Katika mstari unaolingana wa shamba, kwa mfano, "Picha ya bidhaa" neno litaonekana "Kifurushi", hii inamaanisha kuwa faili imefungwa kwa programu iliyoiunda. Kwa hivyo, wakati wa kutazama hifadhidata, iwe ni swala, fomu au ripoti, mtumiaji ataona picha ya faili kama ikoni, na wakati wa kubofya mara mbili kwenye picha hii, mfumo utapata kwanza programu na kisha kuonyesha. yaliyomo kwenye faili ndani yake (in katika mfano huu picha hii). Isipokuwa ni faili za picha zilizohifadhiwa na kiendelezi .bmp(muundo wa ramani kidogo). Walakini, ikumbukwe kwamba faili zilizoundwa ndani Programu za Microsoft, itaonyeshwa mara moja katika fomu na ripoti. Hitimisho ni rahisi, picha zinaweza kuingizwa kwenye programu kama vile Rangi, Neno, Power Point, na kuhifadhiwa kama faili tofauti, na kisha unganisha kama kitu kwenye hifadhidata. Jaribu kuunda faili nyingi kwa kutumia picha na maandishi wahariri mbalimbali Windows. Kwa mfano, unaweza kufungua hati ya Neno, kuingiza picha kutoka kwa faili, kuongeza maandishi, na kisha kuhifadhi kama: Monitor.docx(Mchoro 3.42).

Mchele. 3.42 Faili ya picha iliyoundwa katika Word

2. Uumbaji wa vitu vipya.

Kwa kuunda vitu vipya kwenye hifadhidata, unapaswa kumaanisha kutumia programu ambayo faili imeundwa na kisha kujumuishwa kwenye uwanja unaoelezea aina ya OLE hii. Ili kuanza modi ya kuunda vitu vipya, unahitaji kufungua meza ndani "Jedwali" mode, chagua chaguo "Unda mpya" katika sanduku la mazungumzo (Mchoro 3.39), na kisha uchague kwenye orodha "Aina ya kitu" (maombi yanayohitajika) Orodha ya programu ambazo Access inasaidia kwa kuunda kitu iko kwenye orodha (Mchoro 3.43), ambayo itafungua baada ya kutekeleza amri. "Ingiza kitu" .

Mchele. 3.43 Orodha ya aina za vipengee vya Ufikiaji vinavyoweza kutumika kuunda faili

Urahisi wa kutumia programu kuunda vitu katika mfumo wa faili ni kwamba katika siku zijazo faili hizi zinaweza kutumika kwa uhuru au kusahihishwa kwenye hifadhidata.

Hebu tuzingatie chaguo la kuunda kitu kwa hifadhidata, kwa kutumia maombi ya rangi

Kwa mfano, ni muhimu kuunda kitu na picha ya kampuni na maandishi, ambayo mtumiaji wa database anaweza baadaye kuchukua nafasi au kusahihisha. Ili kufanya hivyo, unahitaji kuchagua kutoka kwenye orodha Kitu cha Picha cha Bitmap, teknolojia zaidi ya kuunda kitu imeonyeshwa kwenye Mchoro 3.44.

1. Fungua Maombi ya rangi

2. Ingiza picha kutoka kwa faili.

3. Ongeza maandishi (ikiwa ni lazima).

4. Hifadhi kama faili.

5. Funga programu.

Mchele. 3.44 Teknolojia ya kuunda kitu katika programu ya Rangi

Zoezi 3.11

1. Katika meza" Bidhaa»katika hali "Mjenzi" ongeza safu mpya Pamoja na jina "Picha ya bidhaa", aina ya data" Sehemu ya Kitu cha OLE", hifadhi mabadiliko.

2. Katika hali "Jedwali" shambani "Picha ya bidhaa" chagua mstari "Ingiza kitu kutoka kwa faili", chagua (weka nukta) "Unda mpya" na kutoka kwa orodha kunjuzi taja hati Microsoft Word . Hii itafungua mhariri wa maandishi Neno la MS, hapa unahitaji kuingiza picha inayofanana na bidhaa katika mstari huu. Chagua picha kutoka kwa orodha iliyohifadhiwa moja kwa moja kwenye kihariri (kichupo cha "Ingiza", ikoni ya "Picha", kitufe cha "Anza" kwenye kisanduku cha mazungumzo upande wa kulia), au ingiza picha kutoka kwa programu zingine. Unaweza kutumia programu ya Rangi (kitu cha Picha ya Bitmap), ambapo unaweza kuchora bidhaa mwenyewe. Funga faili iliyoundwa, itaunganishwa kiatomati kwenye hifadhidata yako, kwa mstari ambao uliingizwa.

3. Fanya utaratibu huu Kwa mistari yote wako Jedwali "Bidhaa"..

4. Hifadhi mabadiliko yako.

Maswali ya kudhibiti

1. Ni vitu gani vinaweza kuingizwa kwenye hifadhidata na aina ya data ya OLE?

2. Ninawezaje kuingiza picha kwenye meza katika hali ya Jedwali?

3. Picha itaonekana wapi kwenye hifadhidata?

4. Mbinu ya "Unda" ni tofauti vipi? kitu kipya» kutoka kwa njia ya "Unda kutoka kwa faili"?

5. Jinsi ya kuweka faili ya picha ya bidhaa kwenye hifadhidata ikiwa ina ugani .png?

6. Je, inawezekana kuhariri faili ambayo imeingizwa kama kitu kwenye hifadhidata moja kwa moja mfumo wa faili kompyuta?

7. Jinsi ya kuingiza uwasilishaji kwenye hifadhidata?

8. Ni vitu gani vya maombi vinaweza kuingizwa kwenye hifadhidata?

Kagua

Misingi ya OLE

Kitu cha TOLEContainer

Mfano maombi ya OLE

Kuhifadhi kitu cha OLE kwenye hifadhidata

  1. Kagua
  2. Kutoka kwa makala utajifunza maelezo ya msingi kuhusu OLE, baadhi ya mambo kuhusu OLE 2 na OLE Automation. Nakala hii inazungumza juu ya kutumia kitu cha TOLEContainer kuunda programu ya OLE huko Delphi.
  3. Misingi ya OLE
  4. Kabla ya kuingia katika misingi ya OLE, tutahitaji kukagua baadhi ya istilahi.

    Kifupi OLE kinasimama kwa Objects Linked and Embedded J ) Data iliyoshirikiwa kati ya programu inaitwa Kitu cha OLE. Programu ambayo inaweza kuwa na vitu vya OLE inaitwa Chombo cha OLE (Chombo cha OLE). Programu ambayo data inaweza kujumuishwa kwenye kontena la OLE kama kipengee cha OLE kinavyoitwaSeva ya OLE.

    Kwa mfano, MicroSoft Word inaweza kujumuisha picha, sauti na video, na vitu vingine vingi kwenye hati (hati hii wakati mwingine huitwa. hati ya kiwanja ).

    Kama jina linavyopendekeza, vitu vya OLE vinaweza kuunganishwa au kujumuishwa kwenye chombo cha OLE. Katika kesi ya kwanza, data itahifadhiwa kwenye faili kwenye diski, programu yoyote itapata data hii na itaweza kufanya mabadiliko. Katika kesi ya pili, data imejumuishwa kwenye chombo cha OLE na tu itaweza kuona na kurekebisha data hii.

    OLE ni maendeleo zaidi ya wazo la data iliyoshirikiwa kati ya programu. Ikiwa kutumia DDE iliwezekana kufanya kazi na maandishi, basi OLE hurahisisha kuunganisha usindikaji wa aina yoyote ya data kwenye programu. Kama ilivyo kwa DDE, programu ya mteja (chombo cha OLE) inahitaji uwepo wa Maombi ya OLE seva. Kila wakati mtumiaji anapata kitu cha OLE katika programu ya mteja ili kutazama au kuhariri data (kwa kawaida kubofya mara mbili kwenye kitu), programu ya seva inazinduliwa, ambayo data inachakatwa.

    Kwa asili, kuna aina kadhaa za OLE, tofauti katika jinsi seva ya OLE inavyoamilishwa. Toleo la 1 la OLE huendesha seva katika dirisha tofauti. OLE 2 inatekeleza kile kinachoitwakuwezesha na kuhariri mahali. Katika kesi hii, seva inaendesha "ndani" ya programu ya mteja, inarekebisha mtazamo menyu ya mfumo, mstari wa zana, nk Maendeleo ya wazo la OLE yalisababisha kuibukaOle otomatiki - programu ya mteja inaweza kutekeleza sehemu ya msimbo wa seva. Aina ya kitu cha OLE kilichowekwa kwenye programu ya mteja imedhamiriwa na toleo gani la OLE ambalo seva inasaidia.

  5. Kitu cha TOLEContainer
  6. Kitu cha TOLEContainer kinapatikana ukurasa Sehemu ya Paleti za Mfumo na inahitajika ili kuunda programu za kontena za OLE. TOLEContainer huficha ugumu wote unaohusishwa na shirika la ndani la OLE na humpa mpangaji programu kiolesura rahisi. Wacha tujenge programu rahisi kwa kutumia kitu cha OLE. Unda mradi mpya na uweke TOLEContainer kwenye fomu, katika Kikaguzi cha Kitu, bofya mara mbili kwenye mali ya ObjClass au ObjDoc - kidirisha cha kawaida cha Windows "Insert Object" kitaonekana (ona Mtini. 1)

    Maongezi haya yana orodha ya seva zote za OLE zilizosajiliwa kwenye mfumo (usajili hutokea wakati wa usakinishaji wa programu). Aina ya kitu cha OLE huamuliwa na seva unayobainisha. Ikiwa utaunda kitu kipya (Unda Mpya), basi unapobofya OK programu ya seva ya OLE itaanza, ambayo kitu kipya kinaundwa. Baada ya kuondoka kwenye programu ya seva, kitu kipya cha OLE inawasha(kitu kilichopachikwa) kwenye programu. Kitu cha OLE kinaweza kuundwa kwa kutumia faili iliyopo katika umbizo la mojawapo ya seva za OLE. Ili kufanya hivyo, chagua Unda kutoka kwa Faili (ona Mchoro 2)


    Kitu kilichochaguliwa kinaweza kujumuishwa kwenye programu au kuunganishwa kwa kuangalia kipengee cha Kiungo.

    Kwa hiyo, hebu tuunda kitu kipya wakati wa kuunda mradi wetu, kuchagua kwa hili, kwa mfano, Hati ya Microsoft Word (Mchoro 1). Bonyeza Sawa na baada ya MS Word kuanza, andika maandishi yoyote hapo (" Hiki ni kitu cha OLE Hati ya Microsoft Word "). Ili kukamilisha kazi, menyu ina kipengee maalum "Faili|Funga na Urudi kwenye Fomu1" (Win'95+MS Word 7.0). Endesha mradi, itaonekana kama hii:

    Bofya mara mbili kwenye chombo cha OLE - MS Word itazindua na hati kutoka kwa kitu cha OLE, ambacho kinaweza kuhaririwa, na mabadiliko yote yanahifadhiwa kwenye kitu cha OLE.

    Iwapo wakati wa usanifu utachagua kitu cha kujumuisha kwenye kontena la OLE, basi kimeandikwa kabisa katika faili ya fomu (FORM1.DFM) na kisha kukusanywa kuwa faili ya EXE. Katika kesi ya vitu vikubwa sana, hii inaweza kusababisha pause ndefu wakati wa kubuni na hata hitilafu "Nje ya rasilimali". Kwa hiyo, inashauriwa kufanya vitu vikubwa vilivyounganishwa.

  7. Kuhifadhi kitu cha OLE kwenye hifadhidata

Wakati mwingine ni muhimu kuhifadhi vitu vya OLE sio kwenye faili, lakini katika hifadhidata (shamba la BLOB kwenye meza). Bila shaka, katika kwa kesi hii Kipengee cha OLE lazima kipachikwe kwa madhumuni ya kubebeka. Kwa bahati mbaya, katika usambazaji wa kawaida wa Delphi hakuna kitu maalum cha aina ya TDBOLEContainer kwa madhumuni haya, lakini kitu cha OLE kinaweza kuokolewa na kurejeshwa kwa kutumia njia za SaveToStream na LoadFromStream. Kwa mfano:

utaratibu TOLEForm.SaveOLE(Mtumaji: TObject);

BlSt: TBlobStream;

kuanza

Na Jedwali 1 fanya

BlSt:=TBlobStream.Create(BlobField(FieldByName("OLE"))),

bmReadWrite);

OLEContainer.SaveToStream(BlSt kama TStream);

BlSt.Free;

Teknolojia ya OLE

OLE- teknolojia (Kuunganisha na Kupachika kitu- kuunganisha na kupachika kitu) hukuruhusu kuunda hati tata za mchanganyiko ambazo zina aina tofauti za vitu vilivyoundwa na programu tofauti. Kwa hivyo ndani Hati ya maandishi Kwa kutumia kihariri cha Neno, unaweza kuingiza jedwali la Excel, mchoro unaofafanua maandishi, au fomula ya hisabati; kwa mtumiaji itabaki kuwa hati moja. Programu inayohusika na hati iliyojumuishwa kawaida huitwa kontena. Ina muundo tata, kwani inaweza kufanya kazi na vitu vya "mgeni". Programu iliyounda kitu inaitwa seva.

Vyombo na seva zinaweza kusaidia njia mbili za mwingiliano:

    kupachika (utekelezaji) wa vitu. Hii mode ina maana kwamba data ya kitu itahifadhiwa pamoja na hati kuu (kwa mfano, iliyopachikwa Lahajedwali ya Excel itahifadhiwa katika .doc - faili ya mhariri wa Neno).

    kuunganisha vitu. Hati kuu huhifadhi tu rejeleo la kitu ambacho data yake iko katika hati nyingine.

Wakati wa kupachika, kiasi cha nyaraka zilizohifadhiwa huongezeka, hata hivyo, ni rahisi kusonga, wakati unapounganisha, lazima ukumbuke kwamba kubadilisha eneo la faili kunaweza kusababisha viungo vibaya.

Ili kuhariri data zinazohusiana, dirisha tofauti linafungua katika programu ambayo data hii iliundwa, i.e. seva. Wakati wa kutekeleza vitu, unaweza pia kukimbia seva kwenye dirisha tofauti, lakini unaweza pia kuhariri data "mahali", i.e. kwenye dirisha la chombo, ikiwa inaruhusu. Katika kesi hii, chombo lazima kiwe na menyu, na seva iliyoboreshwa "Mahali" itaiongezea kwa amri zake mwenyewe.

Sehemu ya OLEContainer

Kwenye ukurasa wa Mfumo wa palette ya sehemu katika Borland Builder C++ kuna sehemu maalum iliyoundwa kwa kupachika na kuunganisha vitu kutoka kwa programu zingine - OLEContainer.

Mali ya msingi

Mali Jimbo hukuruhusu kuamua hali ya kitu na seva yake. Maana zake:

    osTupu—chombo hakina kitu;

    osImepakia - kitu kwenye chombo, seva haifanyi kazi;

    osRunning - seva inafanya kazi;

    osOpen - OLE - kitu kinafunguliwa kwenye dirisha tofauti la seva;

    osInPlaceActive - kitu kimewashwa "mahali", lakini menyu bado haijabadilishwa. Hii ndio hali ya kati ya kitu hapo awali imejaa kikamilifu seva.

    Kitu cha osUIActive kimewashwa "mahali", menyu inarekebishwa.

Nambari ifuatayo inakuruhusu kufafanua jina la kitu, iliyopakiwa kwenye kontena (AnsiString mali Jina la OleClass), njia ya kufanya kazi na kitu ( Imeunganishwa= kweli - kuunganisha, vinginevyo - kupachika), na pia pata jina la hati iliyounganishwa:

ikiwa (OleContainer1 -> Jimbo != osEmpty)

Lebo2 -> Maelezo = OleContainer1 -> OleClassName;

// Hali ya kontena - nambari kamili kuanzia 0 (osEmpty)

Lebo6 -> Maelezo = OleContainer1 -> Jimbo;

ikiwa (OleContainer1 -> Imeunganishwa)

Lebo4 -> Maelezo = OleContainer1 -> SourceDoc;

mali ya bool RuhusuMahali inafafanua uwezo wa kuhariri kitu kilichopachikwa "mahali". Ikiwa AllowInPlace = true na Iconic = false (sifa ya Iconic huamua ikiwa kitu kinapaswa kuwakilishwa kama aikoni), basi "InPlace" - uhariri unaruhusiwa. Wakati AllowInPlace = uongo, seva itafungua katika dirisha tofauti.

Mali Amilisha Kiotomatiki ina thamani tatu zinazowezekana: aaManual, aaGetFocus, aaDoubleClick na huamua jinsi ya kuwezesha kitu kilichopakiwa kwenye chombo.

Chaguo-msingi Amilisha Kiotomatiki = aaDoubleClick, yaani, kitu kinakuwa amilifu kinapobofya mara mbili. Maana aaGetFocus inafafanua kuwezesha wakati wa kupokea lengo la uingizaji. Wakati Amilisha Kiotomatiki = aaManual Mtayarishaji programu anajibika kwa kuwezesha kitu. Katika kesi hii, unaweza kutumia njia ya DoVerb ya sehemu ya chombo, ambayo inawajibika kwa kupitisha amri kutoka kwa chombo hadi kwa seva. Kwa mfano, unaweza kutumia opereta ifuatayo:

OleContainer1->DoVerb(ovShow); // Onyesha kitu

Mbali na kutuma amri kwa seva, njia za chombo hutoa uundaji, upakiaji na uharibifu wa vitu. Hebu tuendelee kuzizingatia.

Kuunda na kuhifadhi kitu kipya (kupachika)

Uundaji wa kitu kipya unaweza kupatikana kwa kutumia sanduku maalum la mazungumzo IngizaKitu(uingizaji wa kitu) au simu ya njia CreateObject. Katika kesi ya kwanza, mtumiaji huchagua darasa la kitu kutoka kwenye orodha ya mfumo wa vitu vinavyowezekana, na kwa pili, kitu maalum kinaundwa kwa utaratibu.

Ili kutumia kisanduku cha mazungumzo, unaweza kutumia nambari ifuatayo, iliyoko, kwa mfano, katika amri ya menyu "mpya":

AnsiString File_Name; // kutofautiana kutangazwa kimataifa au katika darasa la fomu

ikiwa (OleContainer1-> InsertObjectDialog())

( File_Name = "";

OleContainer1->DoVerb(ovShow);

Katika sanduku la mazungumzo linaloonekana, unahitaji kuweka thamani ya kifungo cha RadioButton ili "Unda mpya", chagua aina ya kitu kinachohitajika kutoka kwenye orodha na ubofye "Sawa".

Kitu kinaweza kuundwa kwa utaratibu kama hii (waendeshaji wanaweza kuingizwa, kwa mfano, kwenye vitu vinavyofanana vya menyu):

    Lahajedwali ya Excel

OleContainer1->CreateObject("Excel.sheet",false);

    Hati ya neno

OleContainer1->CreateObject("Word.Document",false);

Ikiwa unahitaji kuunda kitu ambacho jina la aina yake halijulikani, basi unahitaji kurejelea hati zinazolingana za seva, au uandike programu ya majaribio ambayo hupakia kitu kwa kutumia njia. OleContainer->InsertObjectDialog() na utumie mali ya OleContainer -> OleClassName kuamua jina lake.

Wakati wa kuunda kitu kipya, sindano hutumiwa (kwani faili inahitajika kwa kuunganisha). Katika kesi hii, programu ya chombo inawajibika kwa kuhifadhi data ya kitu. Unaweza kuhifadhi data kwenye faili kwa kutumia mbinu HifadhiToFile (<имя файла>), kwa mfano, kwenye kipengee cha menyu "Faili - Hifadhi..." unaweza kutumia nambari ifuatayo:

utupu __fastcall TForm1::FSaveClick(TObject *Sender)

(ikiwa (Faili_Name=="")

ikiwa (SaveDialog1->Execute())

File_Name = SaveDialog1->FileName;

OleContainer1->SaveToFile(ChangeFileExt(File_Name,"".ole"));

Katika mfano huu, kiendelezi cha faili .ole kinaonyesha kuwa kitu kitahifadhiwa katika muundo maalum tofauti na umbizo la seva. Programu ya seva iliyotenganishwa na kontena haitaweza kusoma data hii.

Kazi BadilishaFileExt ilitumika katika mfano kuchukua nafasi ya kiendelezi cha faili. Wakati wa kutekeleza amri za kuhifadhi na kurejesha data kutoka kwa faili, unaweza kuhitaji vitendaji vingine vya kuchakata majina ya faili:

    BadilishaFileExt(const AnsiString FileName, const AnsiString Extension) - hubadilisha kwa nguvu jina la faili FileName, kuchukua nafasi ya ugani na Ugani;

    Kitendaji cha AnsiString ExtractFileExt(AnsiString FileName) inarudisha ugani wa faili na kwa hiyo inakuwezesha kuangalia aina yake;

    AnsiString ExtractFileName(AnsiString FileName) inarudisha jina la faili lililotolewa kutoka kwa kamba FileName, i.e. baada ya backslash ya mwisho au koloni;

    AnsiString ExtractFilePath(AnsiString FileName)Hurejesha njia ya faili, ikijumuisha kufyeka au koloni ya mwisho;

    AnsiString ExtractFileDrive(AnsiString FileName) hutoa faili ya diski na koloni (kwa mfano, "D:").

Mbinu ya chombo LoadFromFile(<имя файла>) hukuruhusu kupakia kitu kinachokumbukwa kwenye chombo:

__fastcall TForm1 tupu::FOpenClick(TObject *Sender)

ikiwa (OpenDialog1->Execute())

ikiwa (ExtractFileExt(OpenDialog1->FileName)!= ".ole")

File_Name = OpenDialog1->FileName;

OleContainer1->LoadFromFile(File_Name);

OleContainer1->DoVerb(ovShow);

Kuunda kitu kutoka kwa faili (kupachika)

Ili kuunda kitu kutoka kwa faili iliyopo, unaweza kutumia dirisha sawa IngizaKitu, kama ilivyo katika kuunda kitu kipya. Katika kesi ya kupachika, mtumiaji anaweka thamani ya kitufe cha RadioButton "Unda kutoka kwa faili", na kutafuta faili kubofya kwenye kitufe cha "Vinjari ...".

Njia ya kimfumo ya kuunda kitu kutoka kwa faili hutolewa na njia: OleContainer->CreateObjectFromFile(AnsiString<имя файла>,boolIconic).

Vigezo vya njia hufafanua jina faili ya chanzo na hali ya onyesho la kitu (Iconic=true - kitu katika mfumo wa ikoni). Nambari hii inaweza kuingizwa kwenye kipengee cha menyu inayolingana:

batili __fastcall TForm1::FFileClick(TObject *Sender)

ikiwa (OpenDialog1->Execute())

OleContainer1->CreateObjectFromFile(OpenDialog1->FileName,false);

OleContainer1->Paka upya();

Njia OleContainer->Paka rangi upya() husababisha dirisha la chombo kuchorwa upya na, kwa hivyo, data ya kitu kuonekana kwenye skrini.

Kuunda Kitu Kilichounganishwa

Kama ilivyo kwa kupachika, mtumiaji au programu inaweza kuunda kitu kinachohusiana.

Kwa mtumiaji kwenye dirisha Ingiza Kitu unapaswa kufuata hatua za uteuzi wa faili zilizoorodheshwa hapo juu na kwa kuongeza uchague kisanduku cha kuteua cha "Mawasiliano".

Msanidi programu lazima atumie njia: OleContainer->CreateLinkToFile(AnsiString<имя файла>, Picha ya bool).

Kwa kuwa wakati wa kuunganisha kitu kinaweza kuhaririwa tu katika dirisha tofauti, mtumiaji anaweza kufikia menyu ya seva ili kuhifadhi kitu.

Kufanya kazi na seva

Kwa kuwa tu programu iliyounda kitu (seva) inaweza kufanya kazi na data ya kitu, chombo kinaweza kuhitaji ujuzi kuhusu vitendo vinavyowezekana kwenye kitu. Njia DoVerb(int Verb) inahitaji utekelezaji wa moja ya amri, na orodha nzima ya vitendo vinavyowezekana ina mali. ObjectVerbs chombo sehemu. Unaweza kupata orodha hii tu baada ya kupakia kitu kwenye chombo, na, kwa kawaida, kila seva (na, kwa hiyo, kitu) ina orodha yake ya amri.

OvShow mara kwa mara ni mfano wa amri ya OLE iliyohifadhiwa. Kutumia njia ya DoVerb na kigezo cha movShow, ambacho tayari kilijadiliwa katika moja ya sehemu zilizopita, husababisha kufunguliwa kwa seva mara moja.

Nambari ifuatayo inaonyesha orodha ya amri zinazowezekana kwa kitu katika sehemu ya ListBox (amri zimehesabiwa kutoka sifuri) na inauliza kutekeleza amri ya pili kwenye orodha:

ListBox1->Vipengee = OleContainer1->ObjectVerbs;

OleContainer1->DoVerb(1);

Kwa kuongeza, chombo kinaweza kuuliza seva kuhifadhi data ya kitu kama hati katika umbizo la seva. Kwa hili, njia hutumiwa SaveAsDocument(<имя файла>) Hati hii inaweza baadaye kuchakatwa na seva ya programu bila ushiriki wa chombo. Inashangaza, njia hii inaweza kutumika kwa vitu vilivyounganishwa na vilivyowekwa.

Baada ya kumaliza kufanya kazi na kitu, programu inaweza kutolewa OleContainer kwa kupiga njia OleContainer->DestroyObject() - Kuharibu kitu kilichopakiwa. Njia hii inaweza kuitwa kabla ya kupakia kitu kipya au kwa amri ya menyu ya Faili-Toka.

1. Unda programu mpya. Washa fomu kuu Vipengele vifuatavyo vinapatikana:

  • Vipengele vingi vya Lebo

Na sehemu mbili zisizo za kuona:

Mtazamo wa takriban wa dirisha kuu la programu unaonyeshwa kwenye takwimu. Picha (faili iliyo na kiendelezi .bmp) imepakiwa kwenye OleContainer. Hali ya seva: osRunning.

2. Ongeza kijenzi kwenye fomu ambayo itaonyesha habari kuhusu kitu: "haijapakiwa" / "kupachika" / "kufunga".

3. Menyu inapaswa kuwa na amri zifuatazo:

    "Kitu" (InsertDialog, kitu kipya cha Excel, kitu kipya cha Rangi, kilichopachikwa kutoka kwa faili, kilichopachikwa kutoka "jina Maonyesho ya PowerPoint", iliyounganishwa kutoka kwa faili, iliyounganishwa kutoka "jina Hati ya neno", Tekeleza amri);

    "Mali" (Sifa za Kitu, Amri za Seva);

    "Msaada" (Kuhusu mpango).

Hakikisha kuwa vipengee vya menyu vinapatikana tu wakati ambapo vitendo sambamba vinaweza kufanywa. Kwa mfano, kipengee "Kitu"| "Run Command" inaweza kupatikana tu ikiwa kitu kimepakiwa kwenye OleContainer na ListBox imewekwa. amri zinazopatikana seva.

4. Unda vidhibiti vya tukio sambamba kwa amri zote za menyu.

    "Faili" | "Pakia kitu" - kitu kilichohifadhiwa kinapakiwa kutoka kwa faili ya ole.

    "Faili" | "Vunja unganisho" - kuvunja unganisho na kitu;

    "Faili" | "Toka" - kutoka kwa usahihi kutoka kwa programu (ikiwa kulikuwa na unganisho na kitu, vunja);

    "Kitu" | InsertDialog - kitu na njia yake ya kupakia kwenye chombo huchaguliwa kwenye sanduku la mazungumzo na mtumiaji;

    "Kitu" | " Kitu cha Excel»- kitu kipya kinaundwa;

    "Kitu" | " Rangi kitu»- kitu kipya kinaundwa;

    "Kitu" | "Imeingizwa kutoka kwa faili" - jina la faili linatambuliwa na mtumiaji katika sanduku la mazungumzo la OpenDialog;

    "Kitu" | "Imepachikwa kutoka kwa "Jina la Wasilisho la PowerPoint" - wasilisho la slaidi lililoundwa awali linaingizwa kwenye chombo;

    "Kitu" | "Imeunganishwa kutoka kwa faili" - jina la faili limedhamiriwa na mtumiaji kwenye sanduku la mazungumzo la OpenDialog;

    "Kitu" | "Imeunganishwa kutoka kwa "Jina la hati ya Neno" - hati iliyoundwa hapo awali imeingizwa kwenye chombo;

    "Kitu" | "Tekeleza amri" - amri iliyochaguliwa na mtumiaji kwenye ListBox$ inatumwa kwa seva ili kutekelezwa.

    "Mali" | "Sifa ya kitu" - chombo kinaomba kutoka kwa seva jina la kitu, hali ya seva na jina la hati inayohusika, kwa msingi wa habari iliyopokelewa, hitimisho hutolewa: "kitu hakijapakiwa / kuingizwa / wanaohusishwa.” Taarifa iliyopokelewa inaonyeshwa kwenye vipengele vya Lebo ya dirisha kuu la programu.

    "Mali" | "Amri za seva" - orodha ya amri za seva huonyeshwa kwenye sehemu ya ListBox;

    "Msaada" | "Kuhusu programu ..." - dirisha na habari kuhusu programu na mwandishi wake.

5. Fanya majaribio kamili ya programu kwenye vitu na seva mbalimbali.

Teknolojia ya Ole hukuruhusu kuagiza vitu kutoka kwa programu zingine huku ukidumisha miunganisho. Zaidi ya hayo, ikiwa utaingiza picha kutoka kwa programu kama vile Neno au grafu kutoka kwa Excel, itahifadhiwa kwenye faili kama kitu kilichopachikwa, i.e. wakati wa kuhamisha mchoro, hauitaji kuiweka kwenye kumbukumbu na mchoro, kama inahitajika kufanya wakati wa kutumia viungo vya nje kwenye AutoCAD.

Kwenye kichupo cha Ingiza kuna amri ya Kitu cha AutoCAD Ole.

Baada ya kuamsha amri, sanduku la mazungumzo la "Ingiza Kitu" linaonekana.

Hapa unaweza kuunda faili mpya. Katika kesi hii, unapaswa kutaja programu (Photoshop, Microsoft Excel, Neno, Power Point, nk) ambayo utafanya kazi, na, baadaye, weka kitu chako katika AutoCAD au mara moja fanya kazi kwa misingi. faili iliyopo. Kwa mazoezi, chaguo la pili hutumiwa mara nyingi zaidi. Hebu tuangalie kwa undani zaidi.

Katika sanduku la mazungumzo la "Ingiza Kitu", angalia kisanduku cha "Unda kutoka kwa faili", kisha ubofye kitufe cha "Vinjari" ili kuchagua faili inayofaa. Baada ya hatua hizi, njia ya hati yako imeandikwa.

Kuna chaguzi mbili za kuingiza:

1) Kujitegemea - baada ya kuingiza kitu, "kimesimama" kuhifadhiwa kwenye AutoCAD. Na unapobadilisha faili ya chanzo, hakuna mabadiliko yanayotokea kwenye mchoro wako.

2) Kuunganisha faili - katika kesi hii, eneo lao kwenye kompyuta linapaswa kubaki bila kubadilika. Ikiwa njia itabadilika, unganisho utapotea. Kwa hiyo, ni bora kuhifadhi faili hizi kwenye folda moja. Kuunganisha Faili za AutoCAD chagua kisanduku cha kuteua cha "Unganisha" kwenye kisanduku cha mazungumzo cha "Ingiza Vitu".(Mchoro 3).

Mchele. 3 - Kufanya kazi na kitu cha AutoCAD kulingana na faili iliyopo.

Baada ya kubofya Sawa, kitu chako cha ole kinaingizwa ndani nafasi ya kazi AutoCAD. Sasa unaweza kufanya kazi nayo kama vile primitives za kawaida za AutoCAD, kwa mfano, tumia amri za uhariri.

Mchele. 4 - Kitu cha AutoCAD Ole katika mfumo wa picha kutoka kwa Neno.

Ukibofya mara mbili kwenye kitu kama hicho, programu ambayo iliundwa awali (au kuhifadhiwa) itafungua. Katika mfano huu, picha ya kawaida kutoka kwa Neno iliingizwa.

Mchele. 5 - Upatikanaji maoni hukuruhusu kufungua programu ya chanzo (katika kesi hii Neno).

Utekelezaji wa Ole katika AutoCAD kupitia ubao wa kunakili.

Ole AutoCAD: siri na hila.

Katika kozi hii mifano ya vitendo Kazi na Ole-vitu vya AutoCoad inazingatiwa. Muundo wa video unazungumza juu ya:

Chapisha mipangilio ya ubora wa vitu vya ole;

Jinsi ya kuondoa fremu inayounda vitu hivi kwa chaguo-msingi;

Vigezo vya mfumo wakati wa kufanya kazi na ole AutoCAD;

Mchakato wa kubadilisha wa kuingiza vitu vya ole kutoka kwa AutoCAD hadi kwa programu za wahusika wengine.

Naam, kama unaweza kuona, vitu vya ole katika AutoCAD ni teknolojia muhimu sana! Na muhimu zaidi, kutumia kanuni hii inakuwezesha kujibu swali: "Jinsi ya kuingiza picha kwenye AutoCAD bila kiungo?" Sasa unaweza kupachika nembo ya kampuni yako kwa usalama kwenye michoro au usuli wa mradi na usiogope kwamba watumiaji wengine hawataonyesha vitu hivi vya picha.

Sehemu ya TOleContainer hukuruhusu kuweka hati ya OLE kwenye uso wa fomu. Sifa zinazotumika sana za kijenzi hiki ni AutoActivate, ambayo hubainisha jinsi hati ya OLE inavyowezeshwa, Jimbo, ambalo hubainisha hali ya kontena la OLE, na OleClassName, ambalo hubainisha jina la darasa (CLSID) la kitu cha OLE kilicho kwenye chombo. . Inatumika zaidi mbinu zifuatazo ya kipengele hiki:

Ш InsertObjectDialog - huonyesha kisanduku cha kawaida cha mazungumzo ya Kitu kwa kuchagua aina ya hati au kuipakia kutoka kwa faili; w CreateObject - huunda kitu cha OLE; I CreateObjectFromFile - huunda kitu cha OLE kulingana na faili iliyopo iliyo na hati ya OLE na kuiweka kwenye chombo cha OLE;

Katika DestroyObject - huharibu kitu kilichomo kwenye chombo cha OLE.

Wacha tuunde programu rahisi inayoonyesha matumizi ya sehemu ya TOleContainer. Kwa kusudi hili, tutaweka sehemu ya TPanel kwenye fomu na Pangilia mali, sawa na alClient, juu yake - sehemu ya TOleContainer na menyu kuu (unaweza kuunda kitu kipya na Toka vitu ndani yake). Paneli na menyu zinahitajika ili kuonyesha upau wa vidhibiti na menyu za seva za OLE zinazohudumia vitu vinavyoonyeshwa katika kipengele cha TOleContainer. Ikiwa fomu iliyo na sehemu ya TOleContainer ina menyu, menyu ya seva itaambatishwa kwenye menyu ya programu kulingana na sheria za kuunganisha za menyu ya Windows. Ikiwa kipengee cha TOleContainer kinawekwa kwenye kijenzi cha TPanel, cha mwisho kitaonyesha upau wa vidhibiti wa seva (Mchoro 5.1).

Mchele. 5.1. Fomu iliyo na sehemu ya TOleContainer

Hebu tuunde kidhibiti tukio kinachohusishwa na kuchagua kipengee cha menyu ya Kitu Kipya:

Utaratibu TForml.NewlClick(Mtumaji: TObject); anza 01eContai nerl.InsertObjectDi alog: end:

Kwa kuzindua programu na kubofya kifungo, tunapata sanduku la mazungumzo la Kitu cha Weka (Mchoro 5.2).


Mchele. 5.2. Ingiza Sanduku la Maongezi ya Kitu

Orodha iliyotolewa katika kisanduku kidadisi hiki inaorodhesha seva zote za hati za OEE zilizosajiliwa kompyuta hii. Unaweza kuchagua mmoja wao (kwa mfano, Karatasi ya Kazi ya Microsoft Excel). Sasa baada ya bonyeza mara mbili kwenye sehemu ya TOleContainer sehemu ya TPanel itakuwa na paneli Zana za Microsoft Excel na orodha kuu ya programu hii, na chombo cha OLE yenyewe - mpya kitabu cha kazi Excel (Mchoro 5.3).


Mchele. 5.3. Kitu kinachotumika katika chombo cha OLE

Ikiwa aina ya kitu kilichoonyeshwa kwenye kontena la OLE inajulikana mapema, unaweza kutumia njia ya CreateObject ya sehemu ya TOleContainer:

Utaratibu TForml.NewExcelworksheetlBonyeza(Mtumaji: TObject). anza 01eContainerl.CreateObjectC"Excel.Sheet". Uongo): mwisho;

Kigezo cha pili cha njia hii kinabainisha ikiwa ikoni itaonyeshwa ndani ya kontena la OLE.

TAHADHARI -

Ingawa kisanduku cha kidadisi cha Chomeka Kitu kina majina ya seva za hati za OLE pekee, kimsingi seva zozote za COM ambazo zina kiolesura cha mtumiaji zinaweza kuonyeshwa katika vipengee kama hivyo, hasa vipengele vingi. Vidhibiti vya ActiveX. Katika kesi ni muhimu kuonyesha katika OLE-copyspace kiolesura cha mtumiaji Seva ya COM ambayo si seva ya hati ya OLE inapaswa kubainisha CLSID yake kama kigezo cha kwanza cha mbinu ya CreateObject.

Hebu turekebishe programu kwa kuongeza vitu vichache zaidi vya menyu (Mchoro 5.4). Wacha tuunde vidhibiti vya hafla vinavyolingana:

Utaratibu TForml.ShowPropertieslClickCSSender: TObject); anza ikiwa 01 eCOntainerl.01eObjectInterface<>nil kisha 01eContai nerl.ObjectProperti esDi alog else ShowMessage("OleContainer ni tupu"); mwisho; utaratibu TForml.PastespeciallBonyeza(Mtumaji: TObject). anza 01eContai nerl.PasteSpeci alDialog: end

Mchele. 5.4. Menyu ya programu inayotumia kipengele cha TOIeContainer

Wacha tukusanye programu na tuongeze kitu kwenye kontena la OLE wakati wa kukimbia. Kwa kuchagua amri ya Sifa za Maonyesho ya Kitendo cha programu yetu, tunapata kisanduku kidadisi cha kawaida kinachoelezea sifa za kitu cha OLE (Mchoro 5.5).


Mchele. 5.5. Kisanduku cha mazungumzo kinachoelezea sifa za kitu

Baada ya kuweka baadhi ya data kwenye ubao wa kunakili, chagua amri ya Action PasteSpecial ya programu yetu na upate kisanduku cha mazungumzo kuingiza maalum kitu kutoka kwa Bandika clipboard Maalum (Mchoro 5.6).


Mchele. 5.6. Bandika Kisanduku Maalum cha Mazungumzo

Baada ya kuchagua aina ya kitu cha kuingizwa kwenye orodha iliyopendekezwa, tunaweza kuiweka kwenye chombo cha OBE (Mchoro 5.7).


Mchele. 5.7. Matokeo ya kubandika kitu kutoka kwenye ubao wa kunakili