HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2006
1015
t.hamagutiSonEditXでエディタ0解決


t.hamaguti

リンク

2006/10/15(Sun) 00:05:22|NO.2984

「そんぴん」氏のエディタコンポーネント「TSonEdit」を使って
エディタを作ってみました。
ActiveX版を使うのでレジストリに登録しなければなりませんが、
フリーで手に入り、且つHSPからも使える貴重なコンポーネントです。
http://www7a.biglobe.ne.jp/~sigotnin/index.htm

// 以下のコードを使用する前にregsvr32などでレジストリに登録するのをお忘れなく... #const true 1 #const false 0 #define ctype RGB(%1,%2,%3) ((%1&$ff)|((%2&$ff)<<8)|((%3&$ff)<<16)) #define DIID_ISonEditXEvents "{8E97B187-E081-4A17-AA03-33EA6D08B7F8}" #const DISPID_OnUserClientDraw $d3 comres comRet // コントロールの作成 axobj sonEdit, "SonEditXControl.SonEditX", ginfo(12), ginfo(13) sonEdit("Visible") = false // ファイル読み込み sonEdit->"LoadFromFile" "hsptmp" // 各種プロパティの設定 sonEdit("ShowLineNumber") = true sonEdit("ShowRuler") = true sonEdit("ShowRulerCur") = true sonEdit("WordWrap") = false sonEdit("HorzScrollBar") = true // フォントの設定 //dimtype iFontDisp, vartype("comobj") iFontDisp = sonEdit("Font") iFontDisp("Name") = "MS ゴシック" iFontDisp("Size") = 10 delcom iFontDisp sonEdit->"ReDesign" sonEdit("Visible") = true // イベントの登録 comevent sonEditEvent, sonEdit, DIID_ISonEditXEvents, *event stop *event dispId = comevdisp(sonEditEvent) // 描画イベントの発生だけ捕まえてみる if dispId = DISPID_OnUserClientDraw { gosub *on_user_client_draw } return *on_user_client_draw comevarg lStart, sonEditEvent, 0 comevarg lEnd, sonEditEvent, 1 comevarg rLeft, sonEditEvent, 2 comevarg rTop, sonEditEvent, 3 comevarg rRight, sonEditEvent, 4 comevarg rBottom, sonEditEvent, 5 repeat if lStart > lEnd { break } sonEdit->"GetNonWrapStr" lStart findIndex = instr(comRet, 0, "//") if findIndex ! -1 { // コメントが見つかったら色付け@手抜き sonEdit->"SetTxtColor2" findIndex, lStart, strlen(comRet) - findIndex, RGB(0, 0, $ff), RGB($ff, $ff, $ff), false, rLeft, rTop, rRight, rBottom } lStart++ loop return



この記事に返信する


ONION software Copyright 1997-2023(c) All rights reserved.