Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Horgonyok
A tartományokat két horgony, egy kezdőhorgony és egy záró horgony tagolja. Egy horgony két karakter közötti képzeletbeli pontban található. A kezdő horgony a horgonyt követő szöveghez, a záró horgony pedig a horgonyt megelőző szöveghez kapcsolódik. A kezdő és a záró horgony is létezhet ugyanazon a helyen. Ebben az esetben a tartomány nulla hosszúságú.
Kezdje például a következő szöveggel:
This is text.
Most alkalmazzon tartományt erre a szövegre a kezdő és a záró horgonyokkal a 0. pozícióban. Vizuálisan a következőképpen jelenik meg:
<anchor></anchor>This is text.
A horgonyok nem foglalnak helyet a szövegen belül. Ez egy nulla hosszúságú tartomány, és a szövege üres.
Most váltsa el a záró horgonyt +3 pozícióban. Vizuálisan a következőképpen jelenik meg:
<anchor>Thi</anchor>s is text.
A kezdő horgony közvetlenül a 0. pozícióban lévő karakter előtt van, a záró horgony pedig közvetlenül a 3. pozícióban lévő karakter után van elhelyezve, mert a záró horgony a jobb 3 helyre került. A szövegtartomány most "Thi".
Ezenkívül a kezdőhorgony nem használható a véghorgony követésére, és a véghorgony nem állítható elő a kezdőhorgony elé.
Horgony gravitációja
Minden horgony rendelkezik egy gravitációs beállítással, amely meghatározza, hogy a horgony hogyan reagál a szöveg beszúrásakor a szövegfolyamba a horgony pozíciójában. Ha a horgony helyzetében beszúrás történik, a horgony helyzetében kiigazítást kell végezni. A gravitáció határozza meg a horgony helyzetének beállítását.
Például:
It is <anchor></anchor>cold today.
Ha a "nagyon" szó a tartomány pozíciójába van beszúrva, a kezdő horgony a beszúrt szó előtt vagy után is elhelyezhető:
It is <anchor>very </anchor>cold today.
-Vagy-
It is very <anchor></anchor>cold today.
A horgony gravitációja határozza meg, hogy a horgony hogyan legyen áthelyezve, amikor a beszúrás a helyén történik. A gravitáció lehet hátra vagy előre.
Ha a horgony gravitációja hátrafelé halad, a horgony a beszúrási ponthoz képest hátrafelé halad, így a beszúrt szöveg követi a horgonyt:
It is <anchor>very </anchor>cold today.
Ha a horgony előrehaladt gravitációval rendelkezik, a horgony előrehalad a beszúráskor (a beszúrási ponthoz képest), hogy a beszúrt szöveg megelőzi a horgonyt:
It is very <anchor></anchor>cold today.
Klónok és biztonsági másolatok
A tartományobjektumok "másolása" kétféleképpen lehetséges. Az első egy klónozási létrehozása a tartományból ITfRange::Clonehasználatával. A második a tartomány biztonsági mentési készítése ITfContext::CreateRangeBackuphasználatával.
A klón egy olyan tartomány másolata, amely nem tartalmaz statikus adatokat. A tartomány horgonyai ki vannak másolva, de a klón továbbra is lefedi a szövegtartományt a környezeten belül. A klónok minden szempontból tartományobjektumok. Ez azt jelenti, hogy a klónozott tartomány szövege és tulajdonságai dinamikusak, és megváltoznak, ha a klónozás által lefedett tartomány szövege és/vagy tulajdonságai megváltoznak.
A biztonsági mentés a biztonsági mentés során statikus adatokként tárolja egy tartomány szövegét és tulajdonságait. A biztonsági másolat az eredeti tartományt is klónozza, hogy nyomon lehessen követni az eredeti tartomány méretének és pozíciójának változásait. Ez azt jelenti, hogy a biztonsági mentési tartomány szövege és tulajdonságai statikusak, és nem változnak, ha a biztonsági mentés által lefedett tartomány szövege és/vagy tulajdonságai megváltoznak.
Például a következő tartomány (pRange) a környezetben:
"This is some <pRange>text</pRange>."
Most készítsen klónt és biztonsági másolatot erről a tartományról:
ITfRange *pClone;
ITfRangeBackup *pBackup;
pRange->Clone(&pClone);
pContext->CreateRangeBackup(ec, pRange, &pBackup);
Most az objektumok a következőket tartalmazzák:
pRange = "text"
pClone = "text"
pBackup = "text"
Most módosítsa a pRange szövegét:
WCHAR wsz[] = L"other words";
pRange->SetText(ec, 0, wsz, lstrlenW(wsz));
Most az objektumok a következőket tartalmazzák:
Context = "This is some other words."
pRange = "other words"
pClone = "other words"
pBackup = "text"
A szöveg beállítása miatt a szöveg a környezeten belül módosult. Emellett a pRange és a pClone véghorgonya is megváltozott. A pClone mostantól "más szavakat" tartalmaz, mivel a szöveg a tartományon belül módosult, és ezeket a módosításokat az összes tartomány nyomon követi. Amikor a pRange és a pClone által lefedett szöveg is megváltozott, a pClone szövege is megváltozott.
A pBackup szövege nem változott az eredeti pRange-ről, mert a biztonsági másolatban lévő adatok (szöveg és tulajdonságok) nem kapcsolódnak a környezethez, és külön vannak tárolva. A biztonsági másolatban található klón valójában megváltozik, de az adatok statikusak.
A biztonsági mentés visszaállításakor a biztonsági mentés a biztonsági másolaton belüli klónra vagy egy másik tartományra is alkalmazható. Ha a biztonsági másolatot a biztonsági másolaton belüli klónra szeretné alkalmazni, adja át NULLITfRangeBackup::Visszaállítás az alábbi kód példában látható módon:
pBackup->Restore(ec, NULL);
Most az objektumok a következőket tartalmazzák:
Context = "This is some text."
pRange = "text"
pClone = "text"
pBackup = "text"
Ha egy másik tartományba szeretné visszaállítani a biztonsági mentést, adjon át egy mutatót a tartományobjektumnak ITfRangeBackup::Restoremeghívásakor. A biztonsági másolatot kapó szöveg és tulajdonságok az új tartományra lesznek alkalmazva. Ha például a fenti példát használja a visszaállítási hívás előtt, a pRange a következőképpen jelenik meg:
LONG lShifted;
pRange->ShiftEnd(ec, -2, &lShifted, NULL);
Most az objektumok a következőket tartalmazzák:
Context = "This is some other words."
pRange = "other wor"
pClone = "other words"
pBackup = "text"
Amikor a pRange véghorgonyát két helyről balra helyezték, a pClone véghorgonya nem változott.
Most állítsa vissza a biztonsági mentést a pRange használatával a következő kód példával:
pBackup->Restore(ec, pRange);
Most az objektumok a következőket tartalmazzák:
Context = "This is some textds."
pRange = "text"
pClone = "textds"
pBackup = "text"
A pRange által lefedett szöveg helyébe "szöveg" lépett, a pClone által lefedett szöveg egy része módosult, a pBackup módosításai pedig a pRange-nak megfelelően módosultak.