Visual html szerkesztő saját kezűleg

Tekintsük az általános működési elve ezeket az elemeket. Ahogyan az a szöveg, akkor először létre kell hoznia egy objektum-kiválasztás (nevezzük Range):

IHTMLControlRange interfész speciálisan a különböző műveleteket a kiválasztott objektumok az oldal, azonban ez teljesen lehetetlen, hogy munkát keres egy szöveghozzárendelési - kapsz exkluzív EIntfCastError helyzet egy üzenetet, hogy a kiválasztott felület nem támogatott (ugyanez történik, ha használja IHTMLTxtRange számára kontroll). Ilyen helyzetek elkerülése, a felület bevezetett IHTMLSelectionObject területén Type_: widestring. Attól függően, hogy milyen típusú kiosztás fog tartalmazni „ellenőrzés” vagy „Text” (ha nincs semmi kijelölve, ezen a területen sodezhat „Nincs”). Itt egy egyszerű példa arra, hogyan lehet beszúrni egy képet egy bizonyos helyen, a dokumentum (hogyan lehet megnyitni a dokumentumot Edit módban leírták az első rövid cikk):

eljárás TForm1.SpeedButton13Click (Sender: TObject);
var
CtrlRange: IHTMLControlRange;
TextRange: IHTMLTxtRange;
kezdődik
ha editor.selection.type _ = „ellenőrzés”, majd
kezdődik
CtrlRange: = (editor.selection.createRange mint IHTMLControlRange);
ha nem CtrlRange.queryCommandEnabled (InsertImage "), majd
Application.MessageBox (nem támogatott! ', '');
más
CtrlRange.execCommand (InsertImage "hamis 'C: én filesporshe1.jpg') végén
más
kezdődik
TextRange: = (editor.selection.createRange mint IHTMLTxtRange);
TextRange.execCommand (InsertImage "hamis" C: én filesporshe1.jpg)
végén;
végén;

Megjegyezzük, hogy ha Wedel tárgyat, használja a módszert queryCommandEnabled, hogy megbizonyosodjon arról, hogy ez a kommandó lehet végezni egy dedikált vezérlő. Ez annak a ténynek köszönhető, hogy például egy beépített keret nem lehet helyettesíteni a képen. Tény, hogy egy ellenőrzés nem kötelező, de én még mindig ajánlom, hogy végezze el annak érdekében, hogy elkerüljék a kellemetlen következményekkel jár. Egy másik módszer - queryCommandSupported (CmdID: WideString): logikai lehetővé teszi vyyanit támogatott kommandós, hogy az adat típus kiválasztása. Ugyanazokat a módszereket is IHTMLTxtRange felület, de ebben az esetben nincs szükség.

A táblázatokban a helyzet sokkal slozhneee. Típus ellenőrzések HTMLTable, HTMLRow és HTMLCell szerint dokumentációt a Microsoft, amelynek célja, hogy megteremtse a táblákat a kialakulását oldalakon a szerver oldalon. Ennek megfelelően, ebben az esetben, van néhány nehézség: különösen, hogyan kell hozzáadni a kapott táblázat a dokumentumba (minden esetben semmi nem jött rám). Alternatívaként azt javaslom a következőket: create table HTMLTable típusú, a munka vele, mintha mi hozzon létre egy dokumentumot a kiszolgálón, majd OuterHTML tulajdon. Ez a mező tartalmazza a szöveges ábrázolása egy táblázatot HTML formátumban. Nézzük meg ezt a folyamatot, a példa: eljárás TForm1.SpeedButton14Click (Sender: TObject);
var
Táblázat: HTMLTable;
TextRange: IHTMLTxtRange;
sor: HTMLTableRow;
Col: HTMLTableCol;
i: integer;
kezdődik
ha editor.selection.type_<>„Ellenőrzés”, majd
kezdődik
táblázat: = (editor.createElement ( 'táblázat'), mint HTMLTable);
i: = 0-tól 3 do
kezdődik
sor: = (table.insertrow (i), mint DispHTMLTableRow);
col: = (row.insertCell (0), mint DispHTMLTableCol);
col.width: = '200';
col.style.borderColor: = '# FF0000';
col.innerText: = 'cell #' + inttostr (i);
végén;
table.style.bordercolor: = '# 00FF00';
textrange: = (editor.selection.createrange mint IHTMLTxtRange);
textrange.pasteHTML (table.OuterHTML);
végén;
végén;

var
i, j: integer;
ovTable: OleVariant;
t: HTMLTable;
kezdődik
// A dokumentum táblának kell lennie, le, mint ez:
//

ovTable: = WebBrowser1.OleObject.Document.getElementsByName ( 'MyTable') elem (0).
//WebBrowser1.OleObject.Document.getElementsByName('MyTable „) -
// ez a gyűjtemény elemeinek (több elemet is
// id egyenlő "MyTable"
i: = 0 a (ovTable.Rows.Length - 1) do
j: = 0 a (ovTable.Rows.Item (i) .Cells.Length - 1) do
ovTable.Rows.Item (i) .Cells.Item (j) .InnerText: = 'Új szöveg!';
végén;

Kapcsolódó cikkek