home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 November / VPR9711A.ISO / VPR_DATA / Special / Html102 / html102.lzh / HTMLMode.DAS < prev    next >
Text File  |  1996-07-03  |  46KB  |  1,755 lines

  1. '********************************************************************
  2. '                        HTML mode for Dana
  3. '                                 (C) RIM-Arts software 1995,1996
  4. 'ver 1.00    rel. 95/11
  5. 'ver 1.01    rel. 95/12
  6. 'ver 1.02    rel. 96/6 フレーム対応、「ネットスケープで見る」コマンド
  7. '********************************************************************
  8.  
  9. Declare Proc OpenURL Lib "DanaInet.DLL" (url$)
  10.  
  11. Const CONVERT_JIS = True
  12. '--------------------------------------------------------------------
  13. ' 拡張子が htm, htmlのファイルについては、JIS<->SJISの変換を読込み時
  14. ' と保存時に行います。ただし、これはCPUの遅いマシンでは若干時間を要す
  15. ' るため、変換をさせたくないときや、英語のホームページを作るので変換の
  16. ' 必要がないときは、CONVERT_JIS = Falseに設定して下さい。
  17. '--------------------------------------------------------------------
  18. Const WIN32S = False
  19. '--------------------------------------------------------------------
  20. ' Win32sでお使いの場合 True にして下さい。
  21. '--------------------------------------------------------------------
  22.  
  23. Const HTMLVER = 3
  24. '--------------------------------------------------------------------
  25. ' HTMLのバージョンを指定して下さい。ただし、2より小さい値は2と同じ
  26. ' 意味しか持ちません。
  27. '--------------------------------------------------------------------
  28.  
  29. Const NETSCAPE = True
  30. '--------------------------------------------------------------------
  31. ' NetScape 拡張を使う時は True にして下さい。
  32. ' 但し、<CENTER>など、あまりに良く使われるタグは、これをFalseにしても
  33. ' 使えるようになっています。
  34. '--------------------------------------------------------------------
  35.  
  36. Const T_HEADSIZE1 = 1
  37. Const T_HEADSIZE2 = 2
  38. Const T_HEADSIZE3 = 3
  39. Const T_HEADSIZE4 = 4
  40. Const T_HEADSIZE5 = 5
  41. Const T_HEADSIZE6 = 6
  42. Const T_PREFORMAT = 7
  43. Const T_CENTER    = 8
  44. Const T_BLINK     = 9
  45. Const T_COMMENT   = 10
  46.  
  47. Const T_DIVISION  = 11
  48. Const T_BLOCKQUOTE= 12
  49. Const T_EMPHASIS  = 13
  50. Const T_STRONG    = 14
  51. Const T_CITATION  = 15
  52. Const T_CODE      = 16
  53. Const T_SAMPLE    = 17
  54. Const T_KEYBOARD  = 18
  55. Const T_VARIABLE  = 19
  56. Const T_DEFINITION= 20
  57. Const T_ADDRESS   = 21
  58.  
  59. Const T_FONTSIZE1 = 31
  60. Const T_FONTSIZE2 = 32
  61. Const T_FONTSIZE3 = 33
  62. Const T_FONTSIZE4 = 34
  63. Const T_FONTSIZE5 = 35
  64. Const T_FONTSIZE6 = 36
  65. Const T_FONTSIZE7 = 37
  66. Const T_FONTCOLOR = 38
  67. Const T_FONTBOLD  = 39
  68. Const T_FONTITALIC= 40
  69. Const T_FONTFIX   = 41
  70. Const T_FONTUNDER = 42
  71. Const T_FONTSTRIKE= 43
  72. Const T_FONTSUB   = 44
  73. Const T_FONTSUPER = 45
  74.  
  75. Const T_FONTBIG   = 51
  76. Const T_FONTSMALL = 52
  77.  
  78. Const T_FONTBASE1 = 61
  79. Const T_FONTBASE2 = 62
  80. Const T_FONTBASE3 = 63
  81. Const T_FONTBASE4 = 64
  82. Const T_FONTBASE5 = 65
  83. Const T_FONTBASE6 = 66
  84. Const T_FONTBASE7 = 67
  85.  
  86. Const T_REPEAT = 99
  87.  
  88. Const T_LINKHTTP  = 101
  89. Const T_LINKFTP   = 102
  90. Const T_LINKFILE  = 103
  91.  
  92. Const T_LINKIMAGE = 111
  93. Const T_LINKINLINE= 112
  94.  
  95. Const T_LIST       = 201
  96. Const T_NUMLIST    = 202
  97. Const T_MENULIST   = 203
  98. Const T_DIRLIST    = 204
  99. Const T_DEFLIST    = 205
  100. Const T_LISTITEM   = 206
  101.  
  102. Const T_PARAGRAPH = 301
  103. Const T_PARABREAK = 302
  104. Const T_PARAHORZ  = 303
  105.  
  106. Const T_LEFT      = 401
  107. Const T_RIGHT     = 402
  108. Const T_AMP       = 403
  109. Const T_QUOTE     = 404
  110. Const T_SPACE     = 405
  111. Const T_TRADEMARK = 406
  112. Const T_COPYRIGHT = 407
  113.  
  114. Const T_TABLE = 501
  115. Const T_TABLEHEAD = 502
  116. Const T_TABLEDATA = 503
  117. Const T_TABLEROW = 504
  118. Const T_CAPTION = 505
  119.  
  120. Const T_FORM     = 601
  121. Const T_SUBMIT   = 602
  122. Const T_RESET    = 603
  123. Const T_TEXT     = 604
  124. Const T_PASSWORD = 605
  125. Const T_CHECKBOX = 606
  126. Const T_RADIO    = 607
  127. Const T_SELECT   = 608
  128. Const T_TEXTAREA = 609
  129.  
  130.  
  131. Const T_MAILADDRESS = 901
  132. Const T_HEADER   = 902
  133. Const T_TITLE    = 903
  134. Const T_BODY     = 904
  135. Const T_FRAMESET = 905
  136. Const T_FRAME    = 906
  137. Const T_NOFRAME  = 907
  138.  
  139.  
  140. Const T_INPUTTAG = 990
  141.  
  142. Const T_NETSCAPE = 996
  143. Const T_TAGDELETE = 997
  144. Const T_TEMPLATE = 998
  145. Const T_EXIT     = 999
  146.  
  147. Const VK_RBUTTON = &H02
  148. Const VK_ESCAPE = &H1B
  149. Const VK_RETURN = &H0D
  150.  
  151. Const MB_YESNO = &H04
  152. Const MB_YESNOCANCEL = &H03
  153. Const MB_ICONQUESTION = &H20
  154. Const MB_DEFBUTTON1 = &H0
  155. Const MB_DEFBUTTON2 = &H100
  156.  
  157. Const IDOK = 1
  158. Const IDCANCEL = 2
  159. Const IDYES = 6
  160. Const IDNO = 7
  161.  
  162. Const STATE_INIT        = 0
  163. Const STATE_BEFORE_OPEN = 1
  164. Const STATE_AFTER_OPEN  = 2
  165. Const STATE_BEFORE_SAVE = 4
  166. Const STATE_AFTER_SAVE  = 5
  167. Const STATE_KEY_PRESS   = 8
  168. Const STATE_CHAR        = 9
  169.  
  170. Dim hMenu%
  171. Dim hMenuBase%
  172. Dim hMenuChar%
  173. Dim hMenuFont%
  174. Dim hMenuForm%
  175. Dim hMenuHead%
  176. Dim hMenuLink%
  177. Dim hMenuList%
  178. Dim hMenuOther%
  179. Dim hMenuFrame%
  180. Dim hMenuPara%
  181. Dim hMenuSize%
  182. Dim hMenuSpec%
  183. Dim hMenuTable%
  184.  
  185. Declare Proc ChooseColor Lib "ComDlg32" Alias "ChooseColorA" (cc%) As Integer
  186. Declare Proc wsprintf Lib "User32" Alias "wsprintfA" (s$, fmt$, ..)
  187. Declare Proc GetProfileString Lib "Kernel32" Alias "GetPrivateProfileStringA" (sec$, key$, def$, buf$, nbuf%, fname$)
  188. Declare Proc WriteProfileString Lib "Kernel32" Alias "WritePrivateProfileStringA" (sec$, key$, def$, fname$)
  189.  
  190. Static address$                ' mail address
  191. Static nNum%                ' temporary counter
  192. Static nRpt%                ' previous tag
  193.  
  194. Main ()
  195.  
  196.     Select Case .DanaState
  197.     Case STATE_INIT
  198.         MenuInit()
  199.         StayResident()
  200.     Case STATE_KEY_PRESS
  201.         OnKeyPress(.ParmA, .ParmB)
  202.     Case STATE_CHAR
  203.         OnChar(.ParmA)
  204.     Case STATE_AFTER_OPEN
  205.         OnAfterOpen()
  206.     Case STATE_BEFORE_SAVE
  207.         OnBeforeSave(.ParmStrA)
  208.     Case STATE_AFTER_SAVE
  209.         OnAfterSave()
  210.     Case Else
  211.     End Select
  212.  
  213. End
  214.  
  215. '/////////////////////////////////////////////////////////
  216. ' Message handlers
  217.  
  218. '///////////////////////////////
  219. ' Key pressed
  220. Proc OnKeyPress(nKey%, nShift%)
  221.     Dim cmd$
  222.     cmd$ = KeyToCmd(nKey, nShift)
  223.  
  224.     If nKey = VK_ESCAPE Or nKey = VK_RBUTTON Then
  225.         HTMLMain()
  226.         .ParmA = 0    ' Default key should be ignored.
  227.     Else If nKey = VK_RETURN Then
  228.         If nShift = &H20 Then
  229.             AddEnd("P")
  230.             .ParmA = 0
  231.         Else If nShift = &H40 Then
  232.             AddEnd("BR")
  233.             .ParmA = 0
  234.         End If
  235.     Else If cmd$ = "Repeat" Then
  236.         HTMLDispatch(T_REPEAT)
  237.         .ParmA = 0
  238.     End If
  239. End Proc
  240.  
  241. '///////////////////////////////
  242. ' Char input
  243. Proc OnChar(nChar%)
  244.  
  245. End Proc
  246.  
  247. '///////////////////////////////
  248. ' After open file
  249. Proc OnAfterOpen()
  250.     If CONVERT_JIS = False Then Return
  251.     If .FileType = "HTM" Or .FileType = "HTML" Then
  252.         JisToSjisText()
  253.     End If
  254. End Proc
  255.  
  256. '///////////////////////////////
  257. ' Before save file
  258. Proc OnBeforeSave(strName$)
  259.     If CONVERT_JIS = False Then Return
  260.     Dim Lower$
  261.     Lower$ = LCase$(strName$)
  262.     If InStr(Lower$, ".htm") Or InStr(Lower$, ".html") Then
  263.         SjisToJisText()
  264.     End If
  265. End Proc
  266.  
  267. '///////////////////////////////
  268. ' After save file
  269. Proc OnAfterSave()
  270.     If CONVERT_JIS = False Then Return
  271.     If .FileType = "HTM" Or .FileType = "HTML" Then
  272.         JisToSjisText()
  273.     End If
  274. End Proc
  275.  
  276. '//////////////////////////////////////////////////////////////////
  277. ' Initialize Main Menu
  278. Proc MenuInit()
  279.     Dim fp%
  280.     Dim s$
  281.     address$ = Space(256)
  282.     GetProfileString("HTML", "Address", "", address$, 256, .HomePath + "DanaInet.INI")
  283.     If address$ = "" Then
  284.         GetProfileString("Mail", "Address", "", address$, 256, .HomePath + "DanaInet.INI")
  285.     End If
  286.     hMenu = NewMenu()
  287.     AddMenuItem(hMenu, "繰り返し(&R)", T_REPEAT)
  288.     hMenuChar = AddMenuItem(hMenu, "文字(&C)", 0)
  289.         hMenuHead = AddMenuItem(hMenuChar, "見出し(&H)", 0)
  290.             AddMenuItem(hMenuHead, "サイズ&1", T_HEADSIZE1)
  291.             AddMenuItem(hMenuHead, "サイズ&2", T_HEADSIZE2)
  292.             AddMenuItem(hMenuHead, "サイズ&3", T_HEADSIZE3)
  293.             AddMenuItem(hMenuHead, "サイズ&4", T_HEADSIZE4)
  294.             AddMenuItem(hMenuHead, "サイズ&5", T_HEADSIZE5)
  295.             AddMenuItem(hMenuHead, "サイズ&6", T_HEADSIZE6)
  296.         If HTMLVER >= 3 Then
  297.             AddMenuItem(hMenuChar, "仕切り(&D)", T_DIVISION)
  298.         End If
  299.         AddMenuItem(hMenuChar, "整形済(&P)", T_PREFORMAT)
  300.             AddMenuItem(hMenuChar, "中央(&C)", T_CENTER)
  301.         If NETSCAPE = True Then
  302.             AddMenuItem(hMenuChar, "点滅(&L)", T_BLINK)
  303.         End If
  304.         AddMenuItem(hMenuChar, "強調(&E)", T_EMPHASIS)
  305.         AddMenuItem(hMenuChar, "更に強調(&T)", T_STRONG)
  306.         AddMenuItem(hMenuChar, "引用(&A)", T_CITATION)
  307.         AddMenuItem(hMenuChar, "ソースコード(&O)", T_CODE)
  308.         AddMenuItem(hMenuChar, "サンプル(&S)", T_SAMPLE)
  309.         AddMenuItem(hMenuChar, "キーボード(&K)", T_KEYBOARD)
  310.         AddMenuItem(hMenuChar, "変数(&V)", T_VARIABLE)
  311.         AddMenuItem(hMenuChar, "コメント(&M)", T_COMMENT)
  312.     hMenuFont = AddMenuItem(hMenu, "フォント(&N)", 0)
  313.         If NETSCAPE = True Then
  314.             hMenuSize = AddMenuItem(hMenuFont, "サイズ(&Z)", 0)
  315.                 AddMenuItem(hMenuSize, "サイズ&1", T_FONTSIZE1)
  316.                 AddMenuItem(hMenuSize, "サイズ&2", T_FONTSIZE2)
  317.                 AddMenuItem(hMenuSize, "サイズ&3", T_FONTSIZE3)
  318.                 AddMenuItem(hMenuSize, "サイズ&4", T_FONTSIZE4)
  319.                 AddMenuItem(hMenuSize, "サイズ&5", T_FONTSIZE5)
  320.                 AddMenuItem(hMenuSize, "サイズ&6", T_FONTSIZE6)
  321.                 AddMenuItem(hMenuSize, "サイズ&7", T_FONTSIZE7)
  322.             AddMenuItem(hMenuFont, "色(&C)...", T_FONTCOLOR)
  323.         End If
  324.         AddMenuItem(hMenuFont, "ボールド(&B)", T_FONTBOLD)
  325.         AddMenuItem(hMenuFont, "イタリック(&I)", T_FONTITALIC)
  326.         AddMenuItem(hMenuFont, "固定幅(&T)", T_FONTFIX)
  327.         If HTMLVER >= 3 Then
  328.             AddMenuItem(hMenuFont, "アンダーライン(&U)", T_FONTUNDER)
  329.             AddMenuItem(hMenuFont, "削除線(&S)", T_FONTSTRIKE)
  330.             AddMenuItem(hMenuFont, "下付き文字(&R)", T_FONTSUB)
  331.             AddMenuItem(hMenuFont, "上付き文字(&P)", T_FONTSUPER)
  332.             AddMenuItem(hMenuFont, "大きなフォント(&L)", T_FONTBIG)
  333.             AddMenuItem(hMenuFont, "小さなフォント(&M)", T_FONTSMALL)
  334.         End If
  335.         If NETSCAPE = True Then
  336.             hMenuBase = AddMenuItem(hMenuFont, "基本サイズ(&A)", 0)
  337.                 AddMenuItem(hMenuBase, "サイズ&1", T_FONTBASE1)
  338.                 AddMenuItem(hMenuBase, "サイズ&2", T_FONTBASE2)
  339.                 AddMenuItem(hMenuBase, "サイズ&3", T_FONTBASE3)
  340.                 AddMenuItem(hMenuBase, "サイズ&4", T_FONTBASE4)
  341.                 AddMenuItem(hMenuBase, "サイズ&5", T_FONTBASE5)
  342.                 AddMenuItem(hMenuBase, "サイズ&6", T_FONTBASE6)
  343.                 AddMenuItem(hMenuBase, "サイズ&7", T_FONTBASE7)
  344.         End If
  345.     hMenuLink = AddMenuItem(hMenu, "リンク(&K)", 0)
  346.         AddMenuItem(hMenuLink, "HTTP(&H)...", T_LINKHTTP)
  347.         AddMenuItem(hMenuLink, "FTP(&T)...", T_LINKFTP)
  348.         AddMenuItem(hMenuLink, "ファイル(&F)...", T_LINKFILE)
  349.         AddMenuItem(hMenuLink, "インライン画像ファイル(&I)...", T_LINKIMAGE)
  350.         AddMenuItem(hMenuLink, "インライン画像ソース(&S)...", T_LINKINLINE)
  351.     hMenuList = AddMenuItem(hMenu, "リスト(&L)", 0)
  352.         AddMenuItem(hMenuList, "通常(&L)", T_LIST)
  353.         AddMenuItem(hMenuList, "番号付き(&N)", T_NUMLIST)
  354.         AddMenuItem(hMenuList, "メニュー型(&M)", T_MENULIST)
  355.         AddMenuItem(hMenuList, "名簿型(&R)", T_DIRLIST)
  356.         AddMenuItem(hMenuList, "定義型(&D)", T_DEFLIST)
  357.         AddMenuItem(hMenuList, "項目(&I)", T_LISTITEM)
  358.     hMenuPara = AddMenuItem(hMenu, "段落(&P)", 0)
  359.         AddMenuItem(hMenuPara, "強制改行(&R)", T_PARABREAK)
  360.         AddMenuItem(hMenuPara, "段落(&P)", T_PARAGRAPH)
  361.         AddMenuItem(hMenuPara, "罫線(&H)", T_PARAHORZ)
  362.     hMenuSpec = AddMenuItem(hMenu, "特殊文字(&S)", 0)
  363.         AddMenuItem(hMenuSpec, "<(&L)", T_LEFT)
  364.         AddMenuItem(hMenuSpec, ">(&G)", T_RIGHT)
  365.         AddMenuItem(hMenuSpec, "アンパサンド(&A)", T_AMP)
  366.         AddMenuItem(hMenuSpec, Chr(34) + "(&Q)", T_QUOTE)
  367.         AddMenuItem(hMenuSpec, "スペース(&S)", T_SPACE)
  368.         AddMenuItem(hMenuSpec, "登録商標(&R)", T_TRADEMARK)
  369.         AddMenuItem(hMenuSpec, "著作権表示(&C)", T_COPYRIGHT)
  370.     If HTMLVER >= 3 Then
  371.         hMenuTable = AddMenuItem(hMenu, "テーブル(&T)", 0)
  372.             AddMenuItem(hMenuTable, "テーブル(&T)...", T_TABLE)
  373.             AddMenuItem(hMenuTable, "テーブル行(&R)", T_TABLEROW)
  374.             AddMenuItem(hMenuTable, "キャプション(&C)", T_CAPTION)
  375.             AddMenuItem(hMenuTable, "テーブルヘッダ(&H)", T_TABLEHEAD)
  376.             AddMenuItem(hMenuTable, "テーブルデータ(&D)", T_TABLEDATA)
  377.     End If
  378.     hMenuForm = AddMenuItem(hMenu, "フォーム(&F)", 0)
  379.         AddMenuItem(hMenuForm, "フォーム(&F)...", T_FORM)
  380.         AddMenuItem(hMenuForm, "送信ボタン(&S)...", T_SUBMIT)
  381.         AddMenuItem(hMenuForm, "リセットボタン(&R)...", T_RESET)
  382.         AddMenuItem(hMenuForm, "テキスト(&T)...", T_TEXT)
  383.         AddMenuItem(hMenuForm, "パスワード(&P)...", T_PASSWORD)
  384.         AddMenuItem(hMenuForm, "チェックボックス(&C)...", T_CHECKBOX)
  385.         AddMenuItem(hMenuForm, "ラジオボタン(&D)...", T_RADIO)
  386.         AddMenuItem(hMenuForm, "選択ボックス(&L)...", T_SELECT)
  387.         AddMenuItem(hMenuForm, "テキストエリア(&A)...", T_TEXTAREA)
  388.     hMenuFrame = AddMenuItem(hMenu, "フレーム(&A)", 0)
  389.         AddMenuItem(hMenuFrame, "フレームセット(&S)", T_FRAMESET)
  390.         AddMenuItem(hMenuFrame, "フレーム(&F)", T_FRAME)
  391.         AddMenuItem(hMenuFrame, "ノーフレーム(&N)", T_NOFRAME)
  392.     hMenuOther = AddMenuItem(hMenu, "その他(&O)", 0)
  393.         AddMenuItem(hMenuOther, "メール宛先(&A)...", T_MAILADDRESS)
  394.         AddMenuItem(hMenuOther, "ヘッダ(&H)", T_HEADER)
  395.         AddMenuItem(hMenuOther, "タイトル(&T)", T_TITLE)
  396.         AddMenuItem(hMenuOther, "ボディ(&B)", T_BODY)
  397.         AddMenuItem(hMenuOther, "タグ入力(&O)...", T_INPUTTAG)
  398.     AddMenuItem(hMenu, "", -1)
  399.     AddMenuItem(hMenu, "ネットスケープで見る(&B)...", T_NETSCAPE)
  400.     AddMenuItem(hMenu, "タグ除去(&E)...", T_TAGDELETE)
  401.     AddMenuItem(hMenu, "テンプレート(&M)...", T_TEMPLATE)
  402.     AddMenuItem(hMenu, "HTMLモードの終了(&X)", T_EXIT)
  403. End Proc
  404.  
  405. '//////////////////////////////////////////////////////////////////
  406. ' HTML command call
  407. Proc HTMLMain()
  408.     Dim nC%
  409.     Dim sCsr$
  410.  
  411.     If .BlkDisp = False Then
  412.         Dim nSaveCol%
  413.         nSaveCol% = .Column
  414.         Silent()
  415.  
  416.         nC = GetCurrentChar()
  417.         Do
  418.             If .CsrX > 0 Then
  419.                 Command("CsrLeft")
  420.             Else
  421.                 Exit Do
  422.             End If
  423.             nC = GetCurrentChar()
  424.             If nC = Asc(">") Then Exit Do
  425.             If nC = Asc("<") Then
  426.                 Command("CsrRight")
  427.                 sCsr$ = GetCursorWord()
  428.                 NoSilent()
  429.                 InTag(sCsr$)
  430.                 GotoThere(0, nSaveCol)
  431.                 Return
  432.             End If
  433.         Loop While True
  434.  
  435.         GotoThere(0, nSaveCol)
  436.         NoSilent()
  437.     End If
  438.  
  439.     Dim nRC%
  440.     nRC = DoMenu(hMenu)
  441.     HTMLDispatch(nRC)
  442. End Proc
  443.  
  444. Proc HTMLDispatch(nRC%)
  445.  
  446.     If nRC = T_REPEAT Then
  447.         nRC = nRpt
  448.     Else
  449.         If nRC <> -1 Then nRpt = nRC
  450.     End If
  451.  
  452.     Select Case nRC
  453.     Case -1
  454.     Case T_HEADSIZE1
  455.         AddTag("H1")
  456.     Case T_HEADSIZE2
  457.         AddTag("H2")
  458.     Case T_HEADSIZE3
  459.         AddTag("H3")
  460.     Case T_HEADSIZE4
  461.         AddTag("H4")
  462.     Case T_HEADSIZE5
  463.         AddTag("H5")
  464.     Case T_HEADSIZE6
  465.         AddTag("H6")
  466.     Case T_PREFORMAT
  467.         AddParaTag("PRE")
  468.     Case T_CENTER
  469.         AddTag("CENTER")
  470.     Case T_BLINK
  471.         AddTag("BLINK")
  472.     Case T_DIVISION
  473.         AddTag("DIV")
  474.     Case T_BLOCKQUOTE
  475.         AddTag("BLOCKQUOTE")
  476.     Case T_EMPHASIS
  477.         AddTag("EM")
  478.     Case T_STRONG
  479.         AddTag("STRONG")
  480.     Case T_CITATION
  481.         AddTag("CITE")
  482.     Case T_CODE
  483.         AddTag("CODE")
  484.     Case T_SAMPLE
  485.         AddTag("SAMP")
  486.     Case T_KEYBOARD
  487.         AddTag("KBD")
  488.     Case T_VARIABLE
  489.         AddTag("VAR")
  490.     Case T_DEFINITION
  491.         AddTag("DFN")
  492.     Case T_ADDRESS
  493.         AddTag("ADDRESS")
  494.     Case T_COMMENT
  495.         AddCmt()
  496.     Case T_FONTSIZE1
  497.         AddFontSize(1)
  498.     Case T_FONTSIZE2
  499.         AddFontSize(2)
  500.     Case T_FONTSIZE3
  501.         AddFontSize(3)
  502.     Case T_FONTSIZE4
  503.         AddFontSize(4)
  504.     Case T_FONTSIZE5
  505.         AddFontSize(5)
  506.     Case T_FONTSIZE6
  507.         AddFontSize(6)
  508.     Case T_FONTSIZE7
  509.         AddFontSize(7)
  510.     Case T_FONTBASE1
  511.         AddBaseSize(1)
  512.     Case T_FONTBASE2
  513.         AddBaseSize(2)
  514.     Case T_FONTBASE3
  515.         AddBaseSize(3)
  516.     Case T_FONTBASE4
  517.         AddBaseSize(4)
  518.     Case T_FONTBASE5
  519.         AddBaseSize(5)
  520.     Case T_FONTBASE6
  521.         AddBaseSize(6)
  522.     Case T_FONTBASE7
  523.         AddBaseSize(7)
  524.     Case T_FONTCOLOR
  525.         AddFontColor()
  526.     Case T_FONTBOLD
  527.         AddTag("B")
  528.     Case T_FONTITALIC
  529.         AddTag("I")
  530.     Case T_FONTFIX
  531.         AddTag("TT")
  532.     Case T_FONTUNDER
  533.         AddTag("U")
  534.     Case T_FONTSTRIKE
  535.         AddTag("S")
  536.     Case T_FONTSUB
  537.         AddTag("SUB")
  538.     Case T_FONTSUPER
  539.         AddTag("SUP")
  540.     Case T_FONTBIG
  541.         AddTag("BIG")
  542.     Case T_FONTSMALL
  543.         AddTag("SMALL")
  544.     Case T_LIST
  545.         AddList("UL")
  546.     Case T_NUMLIST
  547.         AddList("OL")
  548.     Case T_MENULIST
  549.         AddList("MENU")
  550.     Case T_DIRLIST
  551.         AddList("DIR")
  552.     Case T_DEFLIST
  553.         AddDefList()
  554.     Case T_LISTITEM
  555.         AddTops("LI")
  556.     Case T_PARABREAK
  557.         AddEnd("BR")
  558.     Case T_PARAGRAPH
  559.         AddEnd("P")
  560.     Case T_PARAHORZ
  561.         InsertString("<HR>" + Chr(10))
  562.     Case T_LEFT
  563.         InsertString("<")
  564.     Case T_RIGHT
  565.         InsertString(">")
  566.     Case T_AMP
  567.         InsertString("&")
  568.     Case T_QUOTE
  569.         InsertString(""")
  570.     Case T_SPACE
  571.         InsertString(" ")
  572.     Case T_TRADEMARK
  573.         InsertString("®")
  574.     Case T_COPYRIGHT
  575.         InsertString("©")
  576.     Case T_TABLE
  577.         AddTable()
  578.     Case T_TABLEHEAD
  579.         AddTag("TH")
  580.     Case T_TABLEDATA
  581.         AddTag("TD")
  582.     Case T_TABLEROW
  583.         AddParaTag("TR")
  584.     Case T_CAPTION
  585.         AddTag("CAPTION")
  586.     Case T_FORM
  587.         AddForm()
  588.     Case T_SUBMIT
  589.         AddButton("SUBMIT")
  590.     Case T_RESET
  591.         AddButton("RESET")
  592.     Case T_TEXT
  593.         AddText("TEXT")
  594.     Case T_PASSWORD
  595.         AddText("PASSWORD")
  596.     Case T_CHECKBOX
  597.         AddCheck("CHECKBOX")
  598.     Case T_RADIO
  599.         AddCheck("RADIO")
  600.     Case T_SELECT
  601.         AddSelect()
  602.     Case T_TEXTAREA
  603.         AddTextArea()
  604.     Case T_LINKHTTP
  605.         AddRef(InputBox("URLを入力して下さい", "", "http://"))
  606.     Case T_LINKFTP
  607.         AddRef(InputBox("URLを入力して下さい", "", "ftp://"))
  608.     Case T_LINKFILE
  609.         AddRef(GetOpenFile("*.*"))
  610.     Case T_LINKIMAGE
  611.         AddImage()
  612.     Case T_LINKINLINE
  613.         AddInline()
  614.     Case T_MAILADDRESS
  615.         AddAddress()
  616.     Case T_HEADER
  617.         AddParaTag("HEAD")
  618.     Case T_TITLE
  619.         AddTag("TITLE")
  620.     Case T_BODY
  621.         AddParaTag("BODY")
  622.     Case T_INPUTTAG
  623.         AddTag(InputBox("タグ記号を入力して下さい", "", ""))
  624.     Case T_FRAMESET
  625.         AddParaTag("FRAMESET")
  626.     Case T_FRAME
  627.         AddFrame()
  628.     Case T_NOFRAME
  629.         AddParaTag("NOFRAME")
  630.     Case T_NETSCAPE
  631.         Command("SaveFile")
  632.         Dim strPathName$
  633.         Dim I%
  634.         Dim nC%
  635.         strPathName$ = .PathName
  636.         For I = 0 To Len(strPathName$) - 1
  637.             nC = LodB(strPathName$, I)
  638.             If nC = Asc(":") Then
  639.                 StoB(strPathName$, I, Asc("|"))
  640.             Else If nC = Asc("\") Then
  641.                 StoB(strPathName$, I, Asc("/"))
  642.             End If
  643.         Next I
  644.         OpenURL("file:///" + strPathName$)
  645.     Case T_TAGDELETE
  646.         TagDelete()
  647.     Case T_TEMPLATE
  648.         AddTemplate()
  649.     Case T_EXIT
  650.         WriteProfileString("HTML", "Address", address$, .HomePath + "DanaInet.INI")
  651.         DiscardMenu(hMenu)
  652.         Terminate()
  653.     End Select
  654. End Proc
  655.  
  656. '//////////////////////////////////////////////////////////////////
  657. ' Delete Tags
  658. Proc TagDelete()
  659.     Dim s$, t$
  660.     s$ = GetSelected()
  661.     If s$ = "" Then Return
  662.     If MsgBox("選択範囲のタグを消去します.よろしいですか?", "", MB_YESNO) = IDNO Then
  663.         Return
  664.     End If
  665.     t$ = s$
  666.     Dim Is%, It%, nC%
  667.     Dim bInTag%
  668.     Is = 0
  669.     It = 0
  670.     While True
  671.         nC = LodB(s$, Is)
  672.         Is = Is + 1
  673.         If nC = &H00 Then
  674.             StoB(t$, It, nC)
  675.             Exit While
  676.         End If
  677.         If bInTag = True Then
  678.             If nC = &H3E Then
  679.                 bInTag = False
  680.             End If
  681.         Else
  682.             If nC = &H3C Then            '<
  683.                 bInTag = True
  684.             Else
  685.                 StoB(t$, It, nC)
  686.                 It = It + 1
  687.             End If
  688.         End If
  689.     Wend
  690.     DelSelect()
  691.     InsertString(t$)
  692. End Proc
  693.  
  694. '//////////////////////////////////////////////////////////////////
  695. ' Template
  696. Proc AddTemplate()
  697.     Dim mask$
  698.     Dim title$
  699.     mask$ = ".html"
  700.     If WIN32S Then mask$ = ".htm"
  701.     Dim n%
  702.     Dim f$
  703.     f$ = GetOpenFile("*" + mask$)
  704.     n = InStr(f$, ".")
  705.     If n Then
  706.         n = n - 1
  707.     Else
  708.         n = Len(f$)
  709.         f$ = f$ + mask$
  710.     End If
  711.     FileOpen(f$)
  712.     Dim rc%
  713.     If .TotLine > 1 Then
  714.         rc = MsgBox("新規ファイルではありません" + Chr(10) + "破棄してよろしいですか?", "", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2)
  715.         If rc = IDYES Then
  716.             Command("SelectAll")
  717.             DelSelect()
  718.         Else
  719.             Return
  720.         End If
  721.     End If
  722.     title$ = Left(.FileName, n)
  723.     title$ = InputBox("タイトルを入力して下さい", "", title$ + " Home Page")
  724.     address$ = InputBox("あなたのメールアドレスを入力して下さい", "", address$)
  725.     InsertString("<HTML>" + Chr(10) + "<HEAD>" + Chr(10) + "<TITLE>" + title$ + "</TITLE>" + Chr(10) + "</HEAD>" + Chr(10))
  726.     InsertString("<BODY>" + Chr(10))
  727.     InsertString("<CENTER><H2>" +  title$ + "</H2></CENTER><P>" + Chr(10))
  728.     InsertString("<HR>" + Chr(10))
  729.     InsertString(Chr(10) + "<!-- Main Subject -->" + Chr(10) + "<P>" + Chr(10) + Chr(10))
  730.     InsertString("<HR>" + Chr(10))
  731.     InsertString("<ADDRESS><A HREF=" + Chr(34) + "mailto:" + address$ + Chr(34) + ">")
  732.     InsertString("<" + address$ + "></A></ADDRESS><BR>" + Chr(10))
  733.     InsertString("</BODY>" + Chr(10) + "</HTML>")
  734.     FindBack("<!-- Main Subject -->", "")
  735.     Command("CsrLeft")
  736.     Command("CsrRight")
  737. End Proc
  738.  
  739. '//////////////////////////////////////////////////////////////////
  740. ' Add Table
  741. Proc AddTable()
  742.     If .BlkDisp = False Then
  743.         InsertString("<TABLE BORDER>" + Chr(10) + Chr(10) + "</TABLE>" + Chr(10))
  744.         Return
  745.     End If
  746.     Dim bCap%
  747.     Dim bHead%
  748.     If MsgBox("選択された一行目をキャプションにしますか?", "", MB_YESNO | MB_ICONQUESTION) = IDYES Then
  749.         bCap = True
  750.     Else
  751.         bCap = False
  752.     End If
  753.     If MsgBox("各ブロックの一行目をヘッダにしますか?", "", MB_YESNO | MB_ICONQUESTION) = IDYES Then
  754.         bHead = True
  755.     Else
  756.         bHead = False
  757.     End If
  758.  
  759.     Silent()
  760.  
  761.     Dim nTopL%, nBotL%, nLine%, I%
  762.     nTopL = .BlkBegL
  763.     nBotL = .BlkEndL
  764.     If .BlkEndC = 1 Then nBotL = nBotL-1
  765.     JumpLine(nTopL)
  766.     GotoThere(0, 1)
  767.     InsertString("<TABLE>" + Chr(10))
  768.     nLine = nTopL + 1
  769.     nBotL = nBotL + 1
  770.     Dim hLine%, sLine$
  771.     hLine = GetCurrentLine()
  772.     If bCap = True Then
  773.         sLine$ = LoadThisLine(hLine)
  774.         sLine$ = "<CAPTION>" + sLine$ + "</CAPTION>"
  775.         Command("DeleteAfter")
  776.         InsertString(sLine$)
  777.         nLine = nLine + 1
  778.         JumpLine(nLine)
  779.         GotoThere(0, 1)
  780.     End If
  781.     Dim bInBlock%
  782.     Dim TD$
  783.     bInBlock = False
  784.     Do While nLine <= nBotL
  785.         TD$ = "TD"
  786.         If bInBlock = False Then
  787.             InsertString("<TR>" + Chr(10))
  788.             bInBlock = True
  789.             nLine = nLine + 1
  790.             nBotL = nBotL + 1
  791.             If bHead = True Then
  792.                 TD$ = "TH"
  793.             End If
  794.         End If
  795.         hLine = GetCurrentLine()
  796.         sLine$ = LoadThisLine(hLine)
  797.         If sLine$ = "" Then
  798.             sLine$ = "</TR>"
  799.             bInBlock = False
  800.         Else
  801.             sLine$ = "<" + TD$ + ">" + sLine$ + "</"+ TD$ + ">"
  802.         End If
  803.         Command("DeleteAfter")
  804.         InsertString(sLine$)
  805.         nLine = nLine + 1
  806.         JumpLine(nLine)
  807.         GotoThere(0, 1)
  808.     Loop
  809.     If bInBlock = True Then
  810.         InsertString("</TR>" + Chr(10))
  811.     End If
  812.     InsertString("</TABLE>")
  813.     NoSilent()
  814.     SelectCancel()
  815.     Refresh()
  816. End Proc
  817.  
  818. '//////////////////////////////////////////////////////////////////
  819. ' Add Form
  820. Proc AddForm()
  821.     Dim Action$
  822.     Dim Form$
  823.     Dim nTopL%, nBotL%
  824.     Silent()
  825.     If .BlkDisp = True Then
  826.         nTopL = .BlkBegL
  827.         nBotL = .BlkEndL
  828.         If .BlkEndC = 1 Then nBotL = nBotL-1
  829.     Else
  830.         nTopL = .LineNoL
  831.         nBotL = .LineNoL
  832.     End If
  833.     JumpLine(nTopL)
  834.     Command("BegLine")
  835.     Action$ = InputBox("アクションを入力して下さい。", "", "mailto:" + address$)
  836.     Form$ = "<FORM METHOD=" + Chr(34) + "POST" + Chr(34) + " "
  837.     Form$ = Form$ + "ACTION=" + Chr(34) + Action$ + Chr(34) + ">" + Chr(10)
  838.     InsertString(Form$)
  839.     nBotL = nBotL + 1
  840.     JumpLine(nBotL)
  841.     SelectCancel()
  842.     Command("InsertAft")
  843.     Form$ = "</FORM>"
  844.     InsertString(Form$)
  845.     NoSilent()
  846.     Command("MakeMid")
  847. End Proc
  848.  
  849. '//////////////////////////////////////////////////////////////////
  850. ' Add Submit/Cancel Button
  851. Proc AddButton(t$)
  852.     Dim s$
  853.     Dim v$
  854.     v$ = InputBox("キャプションを入力して下さい", "", "")
  855.     s$ = "<INPUT TYPE=" + Chr(34) + t$ + Chr(34)
  856.     If v$ <> "" Then
  857.         s$ = s$ + " VALUE=" + Chr(34) + v$ + Chr(34)
  858.     End If
  859.     s$ = s$ + "><P>" + Chr(10)
  860.     InsertString(s$)
  861. End Proc
  862.  
  863. '//////////////////////////////////////////////////////////////////
  864. ' Add Text Box
  865. Proc AddText(t$)
  866.     Dim s$
  867.     Dim n$, v$
  868.     nNum = nNum + 1
  869.     n$ = InputBox("フィールド名を入力して下さい", "", t$ + Str(nNum))
  870.     v$ = InputBox("初期値を入力して下さい", "", "")
  871.     s$ = "<INPUT NAME=" + Chr(34) + n$ + Chr(34) + " TYPE=" + Chr(34) + t$ + Chr(34)
  872.     If v$ <> "" Then
  873.         s$ = s$ + " VALUE=" + Chr(34) + v$ + Chr(34)
  874.     End If
  875.     s$ = s$ + "><P>" + Chr(10)
  876.     InsertString(s$)
  877. End Proc
  878.  
  879. '//////////////////////////////////////////////////////////////////
  880. ' Add Check Box
  881. Proc AddCheck(t$)
  882.     Dim s$
  883.     Dim n$, v$
  884.     nNum = nNum + 1
  885.     n$ = InputBox("フィールド名を入力して下さい", "", t$ + Str(nNum))
  886.     v$ = InputBox("初期値を入力して下さい", "", "True")
  887.     s$ = "<INPUT NAME=" + Chr(34) + n$ + Chr(34) + " TYPE=" + Chr(34) + t$ + Chr(34)
  888.     If v$ <> "" Then
  889.         s$ = s$ + " VALUE=" + Chr(34) + v$ + Chr(34)
  890.     End If
  891.     s$ = s$ + ">"
  892.     InsertString(s$)
  893. End Proc
  894.  
  895. '//////////////////////////////////////////////////////////////////
  896. ' Add Text Area
  897. Proc AddTextArea()
  898.     Dim n$, s$
  899.     nNum = nNum + 1
  900.     n$ = InputBox("フィールド名を入力して下さい", "", "TextArea" + Str(nNum))
  901.     s$ = "<TEXTAREA NAME=" + Chr(34) + n$ + Chr(34)
  902.     s$ = s$ + "></TEXTAREA><P>" + Chr(10)
  903.     InsertString(s$)
  904. End Proc
  905.  
  906. '//////////////////////////////////////////////////////////////////
  907. ' Add Selection Box
  908. Proc AddSelect()
  909.     Dim nTopL%, nBotL%
  910.     Silent()
  911.     If .BlkDisp = True Then
  912.         nTopL = .BlkBegL
  913.         nBotL = .BlkEndL
  914.         If .BlkEndC = 1 Then nBotL = nBotL-1
  915.     Else
  916.         nTopL = .LineNoL
  917.         nBotL = .LineNoL
  918.     End If
  919.     JumpLine(nTopL)
  920.     Command("BegLine")
  921.     Dim n$, z$
  922.     Dim Items%
  923.     nNum = nNum + 1
  924.     n$ = InputBox("フィールド名を入力して下さい", "", "Select" + Str(nNum))
  925.     Items% = (nBotL-nTopL) + 1
  926.     If Items > 10 Then Items = 10
  927.     Dim s$
  928.     s$ = "<SELECT NAME=" + Chr(34) + n$ + Chr(34) + ">" + Chr(10)
  929.     InsertString(s$)
  930.     nBotL = nBotL + 1
  931.     Dim nLine%
  932.     nLine = nTopL + 1
  933.     While nLine <= nBotL
  934.         JumpLine(nLine)
  935.         Command("BegLine")
  936.         If nLine = nTopL + 1 Then
  937.             InsertString("<OPTION SELECTED>")
  938.         Else
  939.             InsertString("<OPTION>")
  940.         End If
  941.         nLine = nLine + 1
  942.     Wend
  943.     SelectCancel()
  944.     Command("InsertAft")
  945.     InsertString("</SELECT><P>")
  946.     NoSilent()
  947.     Command("MakeMid")
  948. End Proc
  949.  
  950. '//////////////////////////////////////////////////////////////////
  951. ' Add List
  952. Proc AddList(Mode$)
  953.     Silent()
  954.     AddString("<LI>")
  955.     GotoThere(.BlkBeg, 1)
  956.     InsertString("<" + Mode$ + ">" + Chr(10))
  957.     JumpLine(.BlkEndL)
  958.     Command("EndLine")
  959.     InsertString(Chr(10) + "</" + Mode$ + ">")
  960.     SelectCancel()
  961.     NoSilent()
  962.     Command("MakeMid")
  963. End Proc
  964.  
  965. '//////////////////////////////////////////////////////////////////
  966. ' Add Defined List
  967. Proc AddDefList()
  968.     Dim nTopL%, nBotL%
  969.     Silent()
  970.     If .BlkDisp = True Then
  971.         nTopL = .BlkBegL
  972.         nBotL = .BlkEndL
  973.         If .BlkEndC = 1 Then nBotL = nBotL-1
  974.     Else
  975.         nTopL = .LineNoL
  976.         nBotL = .LineNoL
  977.     End If
  978.     JumpLine(nTopL)
  979.     Command("BegLine")
  980.     InsertString("<DL>" + Chr(10))
  981.     nBotL = nBotL + 1
  982.     Dim nLine%
  983.     nLine = nTopL + 1
  984.     Dim hLine%
  985.     Dim sLine$
  986.     While nLine <= nBotL
  987.         hLine = GetThisLine(nLine)
  988.         sLine$ = LoadThisLine(hLine)
  989.         Dim nC%, nIdx
  990.         nC = Asc(Left(sLine$, 1))
  991.         If nC = &H20 Or nC = &H09 Then
  992.             sLine$ = "<DD>" + LTrim(sLine$)
  993.         Else
  994.             sLine$ = "<DT>" + sLine$
  995.         End If
  996.         SaveThisLine(hLine, sLine$)
  997.         nLine = nLine + 1
  998.     Wend
  999.     JumpLine(nBotL)
  1000.     SelectCancel()
  1001.     Command("InsertAft")
  1002.     InsertString("</DL>")
  1003.     NoSilent()
  1004.     Command("MakeMid")
  1005. End Proc
  1006.  
  1007. '//////////////////////////////////////////////////////////////////
  1008. ' Add Top of Line(s)
  1009. Proc AddTops(tag$)
  1010.     Dim s$
  1011.     s$ = "<" + tag$ + ">"
  1012.     If .BlkDisp = False Then
  1013.         Command("BegLine")
  1014.         InsertString(s$)
  1015.     Else
  1016.         AddString(s$)
  1017.     End If
  1018. End Proc
  1019.  
  1020. '//////////////////////////////////////////////////////////////////
  1021. ' Add End of Line
  1022. Proc AddEnd(tag$)
  1023.     Dim s$
  1024.     s$ = GetSelected()
  1025.     If s$ = "" Then
  1026.         Command("EndLine")
  1027.     Else
  1028.         DelSelect()
  1029.     End If
  1030.     s$ = s$ + "<" + tag$ + ">"
  1031.     InsertString(s$)
  1032. End Proc
  1033.  
  1034. '//////////////////////////////////////////////////////////////////
  1035. ' Add Front And End of Paragraph
  1036. Proc AddParaTag(tag$)
  1037.     Dim s$
  1038.     s$ = GetSelected()
  1039.     s$ = "<" + tag$ + ">" + Chr(10) + s$ + "</" + tag$ + ">" + Chr(10)
  1040.     DelSelect()
  1041.     InsertString(s$)
  1042. End Proc
  1043.  
  1044. '//////////////////////////////////////////////////////////////////
  1045. ' Add Font Size
  1046. Proc AddFontSize(size%)
  1047.     Dim s$
  1048.     s$ = GetSelected()
  1049.     s$ = "<FONT SIZE=" + Str$(size) + ">" + s$ + "</FONT>"
  1050.     DelSelect()
  1051.     InsertString(s$)
  1052. End Proc
  1053.  
  1054. Proc AddBaseSize(size%)
  1055.     Dim s$
  1056.     s$ = "<FONT SIZE=" + Str$(size) + ">" + Chr(10)
  1057.     InsertString(s$)
  1058. End Proc
  1059.  
  1060.  
  1061. '//////////////////////////////////////////////////////////////////
  1062. ' Add Font Color
  1063. Proc AddFontColor()
  1064.     Dim s$
  1065.      s$ = GetSelected()
  1066.     s$ = "<FONT" + GetColorString("COLOR") + ">" + s$ + "</FONT>"
  1067.     DelSelect()
  1068.     InsertString(s$)
  1069. End Proc
  1070.  
  1071. '//////////////////////////////////////////////////////////////////
  1072. ' Add Tag
  1073. Proc AddTag(tag$)
  1074.     Dim s$
  1075.     s$ = GetSelected()
  1076.     s$ = "<" + tag$ + ">" + s$ + "</" + tag$ + ">"
  1077.     DelSelect()
  1078.     InsertString(s$)
  1079. End Proc
  1080.  
  1081. '//////////////////////////////////////////////////////////////////
  1082. ' Add Address
  1083. Proc AddAddress()
  1084.     Dim s$
  1085.     s$ = GetSelected()
  1086.     If s$ = "" Then s$ = address$
  1087.     s$ = InputBox("メールアドレスを入力して下さい", "", s$)
  1088.     s$ = "<ADDRESS><A HREF=" + Chr(34) + "mailto:" + s$ + Chr(34) + ">" + s$ + "</A></ADDRESS>"
  1089.     DelSelect()
  1090.     InsertString(s$)
  1091. End Proc
  1092.  
  1093. '//////////////////////////////////////////////////////////////////
  1094. ' Add Inline Image
  1095. Proc AddImage()
  1096.     Dim s$
  1097.     s$ = GetOpenFile("*.gif;*.jpg")
  1098.     s$ = "<IMG SRC=" + Chr(34) + s$ + Chr(34) + ">"
  1099.     InsertString(s$)
  1100. End Proc
  1101.  
  1102. Proc AddInline()
  1103.     Dim s$
  1104.     s$ = InputBox("イメージソースを入力して下さい", "", "")
  1105.     s$ = "<IMG SRC=" + Chr(34) + s$ + Chr(34) + ">"
  1106.     InsertString(s$)
  1107. End Proc
  1108.  
  1109. '//////////////////////////////////////////////////////////////////
  1110. ' Add Comment
  1111. Proc AddCmt()
  1112.     Dim s$
  1113.     s$ = GetSelected()
  1114.     s$ = "<!--" + s$ + "-->"
  1115.     DelSelect()
  1116.     InsertString(s$)
  1117. End Proc
  1118.  
  1119. '//////////////////////////////////////////////////////////////////
  1120. ' Add Reference Tag
  1121. Proc AddRef(ref$)
  1122.     Dim s$
  1123.     s$ = GetSelected()
  1124.     s$ = "<A HREF=" + Chr(34) + ref$ + Chr(34)+ ">" + s$ + "</A>"
  1125.     DelSelect()
  1126.     InsertString(s$)
  1127. End Proc
  1128.  
  1129. Proc AddFrame()
  1130.     Dim s$
  1131.     s$ = GetOpenFile("*.html;*.htm")
  1132.     s$ = "<FRAME SRC=" + Chr(34) + s$ + Chr(34)+ ">"
  1133.     DelSelect()
  1134.     InsertString(s$)
  1135. End Proc
  1136.  
  1137. '///////////////////////////////////////////////////////////////////////
  1138. ' Current JIS text convert to SJIS text
  1139. Proc JisToSjisText()
  1140.     Dim Err%
  1141.     Dim Cur$, Sav$
  1142.     Dim hLine%
  1143.     Dim nLineNo%
  1144.     Dim bKanji%
  1145.     nLineNo = .LineNoL
  1146.     Err = False
  1147.     Silent()
  1148.     hLine = GetTopLine()
  1149.     Sav$ = Space$(16384)
  1150.     Do While hLine
  1151.         Cur$ = LoadThisLine(hLine)
  1152.         Dim I%, Idx%, Char%, Char2%, nLen%
  1153.         Idx = 0
  1154.         nLen = Len(Cur$)
  1155.         bKanji = False
  1156.         For I = 0 To nLen
  1157.             Char = LodB(Cur$, I)
  1158.             If Char = &H00 Then
  1159.                 Exit For
  1160.             Else
  1161.                 If Char = &H1B Then
  1162.                     bKanji = True
  1163.                     I = I + 1
  1164.                     Char = LodB(Cur$, I)
  1165.                     I = I + 1
  1166.                     Char2 = LodB(Cur$, I)
  1167.                     If Char = &H24 And (Char2 = &H40 Or Char2 = &H42) Then
  1168.                         While True
  1169.                             I = I + 1
  1170.                             Char = LodB(Cur$, I)
  1171.                             If Char = &H1B Then
  1172.                                 I = I + 1
  1173.                                 Char = LodB(Cur$, I)
  1174.                                 If Char <> &H28 Then
  1175.                                     Err = True
  1176.                                     Exit While
  1177.                                 End If
  1178.                                 I = I + 1
  1179.                                 Char = LodB(Cur$, I)
  1180.                                 If Char <> &H4A And Char <> &H42 Then
  1181.                                     Err = True
  1182.                                 End If
  1183.                                 Exit While
  1184.                             Else If Char = &H00 Then
  1185.                                 Err = True
  1186.                                 Exit While
  1187.                             End If
  1188.                             I = I + 1
  1189.                             Char = (Char << 8) + LodB(Cur$, I)
  1190.                             Char2 = JisToSJis(Char)
  1191.                             StoB(Sav$, Idx, Char2 >> 8)
  1192.                             StoB(Sav$, Idx+1, Char2 & &HFF)
  1193.                             Idx = Idx + 2
  1194.                         Wend
  1195.                         If Err Then
  1196.                             Err = False
  1197.                             Exit For
  1198.                         End If
  1199.                     Else
  1200.                         Exit For
  1201.                     End If
  1202.                 Else
  1203.                     If Char <> &H0D Then
  1204.                         StoB(Sav$, Idx, Char)
  1205.                         Idx = Idx + 1
  1206.                     End If
  1207.                 End If
  1208.             End If
  1209.         Next I
  1210.         StoB(Sav$, Idx, &H00)
  1211.         If bKanji Then hLine = SaveThisLine(hLine, Sav$)
  1212.         hLine = GetNext(hLine)
  1213.     Loop
  1214.     JumpLine(nLineNo)
  1215.     NoSilent()
  1216.     Refresh()
  1217. End Proc
  1218.  
  1219. Proc SjisToJisText()
  1220.     Dim Cur$, Sav$
  1221.     Dim hLine%
  1222.     Dim nLineNo%
  1223.     Dim bKanji%
  1224.     nLineNo = .LineNoL
  1225.     hLine = GetTopLine()
  1226.     Silent()
  1227.     Sav$ = Space$(16384)
  1228.     Do While hLine
  1229.         Cur$ = LoadThisLine(hLine)
  1230.         Dim I%, Idx%, Char%, Char2%, nLen%
  1231.         Idx = 0
  1232.         nLen = Len(Cur$)
  1233.         bKanji = False
  1234.         For I = 0 To nLen
  1235.             Char = LodB(Cur$, I)
  1236.             If Char = &H00 Then
  1237.                 Exit For
  1238.             Else
  1239.                 If IsKanji(Char) Then
  1240.                     bKanji = True
  1241.                     StoB(Sav$, Idx, &H1B)
  1242.                     Idx = Idx + 1
  1243.                     StoB(Sav$, Idx, &H24)
  1244.                     Idx = Idx + 1
  1245.                     StoB(Sav$, Idx, &H40)
  1246.                     Idx = Idx + 1
  1247.                     Do While True
  1248.                         I = I + 1
  1249.                         Char = (Char << 8) + LodB(Cur$, I)
  1250.                         Char2 = SJisToJis(Char)
  1251.                         StoB(Sav$, Idx, Char2 >> 8)
  1252.                         StoB(Sav$, Idx+1, Char2 & &HFF)
  1253.                         Idx = Idx + 2
  1254.                         I = I + 1
  1255.                         Char = LodB(Cur$, I)
  1256.                         If IsKanji(Char) = False Then
  1257.                             StoB(Sav$, Idx, &H1B)
  1258.                             Idx = Idx + 1
  1259.                             StoB(Sav$, Idx, &H28)
  1260.                             Idx = Idx + 1
  1261.                             StoB(Sav$, Idx, &H4A)
  1262.                             Idx = Idx + 1
  1263.                             StoB(Sav$, Idx, Char)
  1264.                             Idx = Idx + 1
  1265.                             Exit Do
  1266.                         End If
  1267.                     Loop
  1268.                     If Char = &H00 Then Exit For
  1269.                 Else
  1270.                     StoB(Sav$, Idx, Char)
  1271.                     Idx = Idx + 1
  1272.                 End If
  1273.             End If
  1274.         Next I
  1275.         StoB(Sav$, Idx, &H00)
  1276.         if bKanji Then hLine = SaveThisLine(hLine, Sav$)
  1277.         hLine = GetNext(hLine)
  1278.     Loop
  1279.     JumpLine(nLineNo)
  1280.     NoSilent()
  1281.     Refresh()
  1282. End Proc
  1283.  
  1284. '//////////////////////////////////////////////////////////////////
  1285. ' In tag situation
  1286.  
  1287. Const V_ALIGNLEFT   = 1
  1288. Const V_ALIGNCENTER = 2
  1289. Const V_ALIGNRIGHT  = 3
  1290. Const V_ALIGNTOP    = 4
  1291. Const V_ALIGNMIDDLE = 5
  1292. Const V_ALIGNBOTTOM = 6
  1293. Const V_ALIGNJUST   = 7
  1294. Const V_BKGNDGIF    = 8
  1295. Const V_BKGNDCOL    = 9
  1296. Const V_TEXTCOL     = 10
  1297. Const V_LINKCOL     = 11
  1298. Const V_VLINKCOL    = 12
  1299. Const V_ALINKCOL    = 13
  1300.  
  1301. Const V_WIDTH  = 101
  1302. Const V_PWIDTH = 102
  1303. Const V_SIZE   = 103
  1304. Const V_NOSHADE= 104
  1305. Const V_COLOR  = 105
  1306.  
  1307. Const V_TYPETEXT = 201
  1308. Const V_TYPEPASS = 202
  1309. Const V_TYPECHECK = 203
  1310. Const V_TYPERADIO = 204
  1311. Const V_TYPEIMAGE = 205
  1312. Const V_TYPEHIDDEN = 206
  1313. Const V_TYPESUBMIT = 207
  1314. Const V_TYPERESET = 208
  1315. Const V_NAME = 209
  1316. Const V_VALUE = 210
  1317. Const V_CHECK = 211
  1318. Const V_SIZE = 212
  1319. Const V_MAXLENGTH = 213
  1320. Const V_MULTIPLE = 214
  1321.  
  1322. Const V_ROWS = 215
  1323. Const V_COLS = 216
  1324. Const V_OFF = 217
  1325. Const V_VIRTUAL = 218
  1326. Const V_PHYSICAL = 219
  1327. Const V_SELECTED = 220
  1328.  
  1329. Const V_BORDER = 251
  1330. Const V_CELLSPACING = 252
  1331. Const V_CELLPADDING = 253
  1332. Const V_VALIGNTOP    = 254
  1333. Const V_VALIGNMIDDLE = 255
  1334. Const V_VALIGNBOTTOM = 256
  1335. Const V_NOWRAP = 257
  1336. Const V_COLSPAN = 258
  1337. Const V_ROWSPAN = 259
  1338.  
  1339. Const V_MARGINHEIGHT = 260
  1340. Const V_MARGINWIDTH = 261
  1341. Const V_SCROLLYES = 262
  1342. Const V_SCROLLNO = 263
  1343. Const V_SCROLLAUTO = 264
  1344. Const V_NORESIZE = 265
  1345.  
  1346. Const V_TYPE_DISC = 300
  1347. Const V_TYPE_CIRCLE = 301
  1348. Const V_TYPE_SQUARE = 302
  1349.  
  1350. Const V_TYPE_A = 311
  1351. Const V_TYPE_SA = 312
  1352. Const V_TYPE_I = 313
  1353. Const V_TYPE_SI = 314
  1354. Const V_TYPE_N = 315
  1355.  
  1356. Const V_VALUENUM = 316
  1357.  
  1358. Proc InTag(sCsr$)
  1359.     Dim hMenuX%, hMenuXAlign%, hMenuXAlign2%, hMenuXType%, hMenuXScroll%
  1360.     hMenuX = NewMenu()
  1361.     sCsr$ = UCase(sCsr$)
  1362.     If Left(sCsr$, 1) = "H" Then
  1363.         Dim nVal%
  1364.         nVal = Val(Mid(sCsr$, 2, 1))
  1365.         If nVal >= 1 And nVal <= 6 Then
  1366.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1367.                 AddMenuItem(hMenuXAlign, "左(&L)", V_ALIGNLEFT)
  1368.                 AddMenuItem(hMenuXAlign, "中央(&C)", V_ALIGNCENTER)
  1369.                 AddMenuItem(hMenuXAlign, "右(&R)", V_ALIGNRIGHT)
  1370.         Else If sCsr$ = "HR" Then
  1371.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1372.                 AddMenuItem(hMenuXAlign, "左(&L)", V_ALIGNLEFT)
  1373.                 AddMenuItem(hMenuXAlign, "中央(&C)", V_ALIGNCENTER)
  1374.                 AddMenuItem(hMenuXAlign, "右(&R)", V_ALIGNRIGHT)
  1375.             AddMenuItem(hMenuX, "幅ピクセル(&W)...", V_WIDTH)
  1376.             AddMenuItem(hMenuX, "幅パーセンテージ(&P)...", V_PWIDTH)
  1377.             AddMenuItem(hMenuX, "サイズ(&Z)...", V_SIZE)
  1378.             AddMenuItem(hMenuX, "影なし(&N)...", V_NOSHADE)
  1379.         End If
  1380.     Else
  1381.         If      sCsr$ = "DIV" Then
  1382.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1383.                 AddMenuItem(hMenuXAlign, "左(&L)", V_ALIGNLEFT)
  1384.                 AddMenuItem(hMenuXAlign, "中央(&C)", V_ALIGNCENTER)
  1385.                 AddMenuItem(hMenuXAlign, "右(&R)", V_ALIGNRIGHT)
  1386.                 AddMenuItem(hMenuXAlign, "均等(&J)", V_ALIGNJUST)
  1387.         Else If sCsr$ = "PRE" Then
  1388.             AddMenuItem(hMenuX, "幅(&W)...", V_WIDTH)
  1389.         Else If sCsr$ = "IMG" Then
  1390.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1391.                 AddMenuItem(hMenuXAlign, "上(&T)", V_ALIGNTOP)
  1392.                 AddMenuItem(hMenuXAlign, "中(&M)", V_ALIGNMIDDLE)
  1393.                 AddMenuItem(hMenuXAlign, "下(&B)", V_ALIGNBOTTOM)
  1394.                 If NETSCAPE = True Then
  1395.                     AddMenuItem(hMenuXAlign, "左(&L)", V_ALIGNLEFT)
  1396.                     AddMenuItem(hMenuXAlign, "中央(&C)", V_ALIGNCENTER)
  1397.                     AddMenuItem(hMenuXAlign, "右(&R)", V_ALIGNRIGHT)
  1398.                 End If
  1399.         Else If sCsr$ = "BODY" Then
  1400.             AddMenuItem(hMenuX, "背景GIF(&G)...", V_BKGNDGIF)
  1401.             AddMenuItem(hMenuX, "背景色(&C)...", V_BKGNDCOL)
  1402.             AddMenuItem(hMenuX, "文字色(&T)...", V_TEXTCOL)
  1403.             AddMenuItem(hMenuX, "リンク色(&L)...", V_LINKCOL)
  1404.             If NETSCAPE = True Then
  1405.                 AddMenuItem(hMenuX, "訪問済みリンク色(&V)...", V_VLINKCOL)
  1406.                 AddMenuItem(hMenuX, "アクティブリンク色(&A)...", V_ALINKCOL)
  1407.             End If
  1408.         Else If sCsr$ = "FONT" Then
  1409.             If NETSCAPE = True Then
  1410.                 AddMenuItem(hMenuX, "色(&C)...", V_COLOR)
  1411.                 AddMenuItem(hMenuX, "サイズ(&Z)...", V_SIZE)
  1412.             End If
  1413.         Else If sCsr$ = "FORM" Then
  1414.         Else If sCsr$ = "INPUT" Then
  1415.             hMenuXType = AddMenuItem(hMenuX, "タイプ(&T)...", 0)
  1416.                 AddMenuItem(hMenuXType, "テキストボックス(&T)", V_TYPETEXT)
  1417.                 AddMenuItem(hMenuXType, "パスワード(&P)", V_TYPEPASS)
  1418.                 AddMenuItem(hMenuXType, "チェックボックス(&C)", V_TYPECHECK)
  1419.                 AddMenuItem(hMenuXType, "ラジオボタン(&R)", V_TYPERADIO)
  1420.                 AddMenuItem(hMenuXType, "イメージ(&I)", V_TYPEIMAGE)
  1421.                 AddMenuItem(hMenuXType, "隠れ入力(&H)", V_TYPEHIDDEN)
  1422.                 AddMenuItem(hMenuXType, "送信ボタン(&S)", V_TYPESUBMIT)
  1423.                 AddMenuItem(hMenuXType, "リセットボタン(&E)", V_TYPERESET)
  1424.             AddMenuItem(hMenuX, "名前(&N)...", V_NAME)
  1425.             AddMenuItem(hMenuX, "初期値(&V)...", V_VALUE)
  1426.             AddMenuItem(hMenuX, "チェック(CHECKBOX/RADIO)(&C)...", V_CHECK)
  1427.             AddMenuItem(hMenuX, "可視文字数(TEXT/PASSWORD)(&Z)...", V_SIZE)
  1428.             AddMenuItem(hMenuX, "最大文字数(TEXT/PASSWORD)(&X)...", V_MAXLENGTH)
  1429.         Else If sCsr$ = "SELECT" Then
  1430.             AddMenuItem(hMenuX, "名前(&N)...", V_NAME)
  1431.             AddMenuItem(hMenuX, "可視行数(&Z)...", V_SIZE)
  1432.             AddMenuItem(hMenuX, "複数選択(&M)...", V_MULTIPLE)
  1433.         Else If sCsr$ = "TEXTAREA" Then
  1434.             AddMenuItem(hMenuX, "名前(&N)...", V_NAME)
  1435.             AddMenuItem(hMenuX, "行数(&R)...", V_ROWS)
  1436.             AddMenuItem(hMenuX, "桁数(&C)...", V_COLS)
  1437.             If NETSCAPE = True Then
  1438.                 hMenuXType = AddMenuItem(hMenuX, "ワードラップ(&W)...", 0)
  1439.                     AddMenuItem(hMenuXType, "なし(&F)", V_OFF)
  1440.                     AddMenuItem(hMenuXType, "仮想的に(&V)", V_VIRTUAL)
  1441.                     AddMenuItem(hMenuXType, "物理的に(&P)", V_PHYSICAL)
  1442.             End If
  1443.         Else If sCsr$ = "OPTION" Then
  1444.             AddMenuItem(hMenuX, "選択(&S)...", V_SELECTED)
  1445.         Else If sCsr$ = "TABLE" Then
  1446.             AddMenuItem(hMenuX, "枠付き(&B)...", V_BORDER)
  1447.             AddMenuItem(hMenuX, "セル間(&S)...", V_CELLSPACING)
  1448.             AddMenuItem(hMenuX, "セル内(&D)...", V_CELLPADDING)
  1449.             AddMenuItem(hMenuX, "幅ピクセル(&W)...", V_WIDTH)
  1450.             AddMenuItem(hMenuX, "幅パーセンテージ(&P)...", V_PWIDTH)
  1451.         Else If sCsr$ = "TR" Or sCsr$ = "TD" Or sCsr$ = "TH" Then
  1452.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1453.                 AddMenuItem(hMenuXAlign, "左(&L)", V_ALIGNLEFT)
  1454.                 AddMenuItem(hMenuXAlign, "中央(&C)", V_ALIGNCENTER)
  1455.                 AddMenuItem(hMenuXAlign, "右(&R)", V_ALIGNRIGHT)
  1456.             hMenuXAlign2 = AddMenuItem(hMenuX, "縦配置(&V)", 0)
  1457.                 AddMenuItem(hMenuXAlign2, "上(&T)", V_VALIGNTOP)
  1458.                 AddMenuItem(hMenuXAlign2, "中(&M)", V_VALIGNMIDDLE)
  1459.                 AddMenuItem(hMenuXAlign2, "下(&B)", V_VALIGNBOTTOM)
  1460.             If sCsr$ = "TD" Or sCsr$ = "TH" Then
  1461.                 AddMenuItem(hMenuX, "ワードラップなし(&N)...", V_NOWRAP)
  1462.                 AddMenuItem(hMenuX, "カラム数(&O)...", V_COLSPAN)
  1463.                 AddMenuItem(hMenuX, "行数(&S)...", V_ROWSPAN)
  1464.                 AddMenuItem(hMenuX, "幅ピクセル(&W)...", V_WIDTH)
  1465.                 AddMenuItem(hMenuX, "幅パーセンテージ(&P)...", V_PWIDTH)
  1466.             End If
  1467.         Else If sCsr$ = "CAPTION" Then
  1468.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1469.                 AddMenuItem(hMenuXAlign, "上(&T)", V_ALIGNTOP)
  1470.                 AddMenuItem(hMenuXAlign, "下(&B)", V_ALIGNBOTTOM)
  1471.         Else If sCsr$ = "P" Then
  1472.             hMenuXAlign = AddMenuItem(hMenuX, "配置(&A)", 0)
  1473.                 AddMenuItem(hMenuXAlign, "左(&L)", V_ALIGNLEFT)
  1474.                 AddMenuItem(hMenuXAlign, "中央(&C)", V_ALIGNCENTER)
  1475.                 AddMenuItem(hMenuXAlign, "右(&R)", V_ALIGNRIGHT)
  1476.         Else If sCsr$ = "UL" Then
  1477.             hMenuXType = AddMenuItem(hMenuX, "タイプ(&T)", 0)
  1478.                 AddMenuItem(hMenuXType, "黒丸(&D)", V_TYPE_DISC)
  1479.                 AddMenuItem(hMenuXType, "中抜き(&C)", V_TYPE_CIRCLE)
  1480.                 AddMenuItem(hMenuXType, "黒四角(&S)", V_TYPE_SQUARE)
  1481.         Else If sCsr$ = "OL" Then
  1482.             hMenuXType = AddMenuItem(hMenuX, "タイプ(&T)", 0)
  1483.                 AddMenuItem(hMenuXType, "大文字の&A", V_TYPE_A)
  1484.                 AddMenuItem(hMenuXType, "小文字の&a", V_TYPE_SA)
  1485.                 AddMenuItem(hMenuXType, "大文字の&I", V_TYPE_I)
  1486.                 AddMenuItem(hMenuXType, "小文字の&i", V_TYPE_SI)
  1487.                 AddMenuItem(hMenuXType, "数字の&1", V_TYPE_N)
  1488.             AddMenuItem(hMenuX, "開始番号(&V)...", V_VALUENUM)
  1489.         Else If sCsr$ = "FRAME" Then
  1490.             AddMenuItem(hMenuX, "名前(&N)...", V_NAME)
  1491.             AddMenuItem(hMenuX, "マージン高さ(&H)...", V_MARGINHEIGHT)
  1492.             AddMenuItem(hMenuX, "マージン幅(&W)...", V_MARGINWIDTH)
  1493.             hMenuXScroll = AddMenuItem(hMenuX, "スクロールバー(&S)", 0)
  1494.                 AddMenuItem(hMenuXScroll, "表示", V_SCROLLYES)
  1495.                 AddMenuItem(hMenuXScroll, "非表示", V_SCROLLNO)
  1496.                 AddMenuItem(hMenuXScroll, "自動", V_SCROLLAUTO)
  1497.             AddMenuItem(hMenuX, "サイズ変更禁止(&O)...", V_NORESIZE)
  1498.         Else If sCsr$ = "FRAMESET" Then
  1499.             AddMenuItem(hMenuX, "行高さ(&R)...", V_ROWS)
  1500.             AddMenuItem(hMenuX, "桁幅(&C)...", V_COLS)
  1501.         Else If sCsr$ = "LI" Then
  1502.         End If
  1503.     End If
  1504.  
  1505.     Dim nRC%
  1506.     Dim sAdd$
  1507.     nRC = DoMenu(hMenuX)
  1508.     DiscardMenu(hMenuX)
  1509.  
  1510.     Select Case nRC
  1511.     Case -1                ' Canceled
  1512.         Return
  1513.     Case V_ALIGNLEFT
  1514.         sAdd$ = " ALIGN=LEFT"
  1515.     Case V_ALIGNCENTER
  1516.         sAdd$ = " ALIGN=CENTER"
  1517.     Case V_ALIGNRIGHT
  1518.         sAdd$ = " ALIGN=RIGHT"
  1519.     Case V_ALIGNTOP
  1520.         sAdd$ = " ALIGN=TOP"
  1521.     Case V_ALIGNMIDDLE
  1522.         sAdd$ = " ALIGN=MIDDLE"
  1523.     Case V_ALIGNBOTTOM
  1524.         sAdd$ = " ALIGN=BOTTOM"
  1525.     Case V_ALIGNJUST
  1526.         sAdd$ = " ALIGN=JUSTIFY"
  1527.     Case V_TYPE_DISC
  1528.         sAdd$ = SetType("DISC")
  1529.     Case V_TYPE_CIRCLE
  1530.         sAdd$ = SetType("CIRCLE")
  1531.     Case V_TYPE_SQUARE
  1532.         sAdd$ = SetType("SQUARE")
  1533.     Case V_TYPE_A
  1534.         sAdd$ = SetType("A")
  1535.     Case V_TYPE_SA
  1536.         sAdd$ = SetType("a")
  1537.     Case V_TYPE_I
  1538.         sAdd$ = SetType("I")
  1539.     Case V_TYPE_SI
  1540.         sAdd$ = SetType("i")
  1541.     Case V_TYPE_N
  1542.         sAdd$ = SetType("1")
  1543.     Case V_VALUENUM
  1544.         sAdd$ = GetSizeString("VALUE")
  1545.     Case V_BKGNDGIF
  1546.         sAdd$ = GetOpenFileString("*.gif", "BACKGROUND")
  1547.     Case V_BKGNDCOL
  1548.         sAdd$ = GetColorString("BGCOLOR")
  1549.     Case V_COLOR
  1550.         sAdd$ = GetColorString("COLOR")
  1551.     Case V_TEXTCOL
  1552.         sAdd$ = GetColorString("TEXT")
  1553.     Case V_LINKCOL
  1554.         sAdd$ = GetColorString("LINK")
  1555.     Case V_VLINKCOL
  1556.         sAdd$ = GetColorString("VLINK")
  1557.     Case V_ALINKCOL
  1558.         sAdd$ = GetColorString("ALINK")
  1559.     Case V_WIDTH
  1560.         sAdd$ = GetSizeString("WIDTH")
  1561.     Case V_PWIDTH
  1562.         sAdd$ = GetSizeString("WIDTH")
  1563.         If Right(sAdd$, 1) <> "=" Then sAdd$ = sAdd$ + "%"
  1564.     Case V_SIZE
  1565.         sAdd$ = GetSizeString("SIZE")
  1566.     Case V_NOSHADE
  1567.         sAdd$ = " NOSHADE"
  1568.     Case V_TYPETEXT
  1569.         sAdd$ = " TYPE=" + Chr(34) + "TEXT" + Chr(34)
  1570.     Case V_TYPEPASS
  1571.         sAdd$ = " TYPE=" + Chr(34) + "PASSWORD" + Chr(34)
  1572.     Case V_TYPECHECK
  1573.         sAdd$ = " TYPE=" + Chr(34) + "CHECKBOX" + Chr(34)
  1574.     Case V_TYPERADIO
  1575.         sAdd$ = " TYPE=" + Chr(34) + "RADIO" + Chr(34)
  1576.     Case V_TYPEIMAGE
  1577.         sAdd$ = " TYPE=" + Chr(34) + "IMAGE" + Chr(34)
  1578.     Case V_TYPEHIDDEN
  1579.         sAdd$ = " TYPE=" + Chr(34) + "HIDDEN" + Chr(34)
  1580.     Case V_TYPESUBMIT
  1581.         sAdd$ = " TYPE=" + Chr(34) + "SUBMIT" + Chr(34)
  1582.     Case V_TYPERESET
  1583.         sAdd$ = " TYPE=" + Chr(34) + "RESET" + Chr(34)
  1584.     Case V_NAME
  1585.         sAdd$ = GetNameString("NAME")
  1586.     Case V_VALUE
  1587.         sAdd$ = GetNameString("VALUE")
  1588.     Case V_CHECK
  1589.         sAdd$ = " CHECKED"
  1590.     Case V_MAXLENGTH
  1591.         sAdd$ = GetSizeString("MAXLENGTH")
  1592.     Case V_MULTIPLE
  1593.         sAdd$ = " MULTIPLE"
  1594.     Case V_ROWS
  1595.         sAdd$ = GetSizeString("ROWS")
  1596.     Case V_COLS
  1597.         sAdd$ = GetSizeString("COLS")
  1598.     Case V_OFF
  1599.         sAdd$ = " WRAP=OFF"
  1600.     Case V_VIRTUAL
  1601.         sAdd$ = " WRAP=VIRTUAL"
  1602.     Case V_PHYSICAL
  1603.         sAdd$ = " WRAP=PHYSICAL"
  1604.     Case V_SELECTED
  1605.         sAdd$ = " SELECTED"
  1606.     Case V_BORDER
  1607.         sAdd$ = " BORDER"
  1608.     Case V_CELLSPACING
  1609.         sAdd$ = GetSizeString("CELLSPACING")
  1610.     Case V_CELLPADDING
  1611.         sAdd$ = GetSizeString("CELLPADDING")
  1612.     Case V_VALIGNTOP
  1613.         sAdd$ = " VALIGN=TOP"
  1614.     Case V_VALIGNMIDDLE
  1615.         sAdd$ = " VALIGN=MIDDLE"
  1616.     Case V_VALIGNBOTTOM
  1617.         sAdd$ = " VALIGN=BOTTOM"
  1618.     Case V_NOWRAP
  1619.         sAdd$ = " NOWRAP"
  1620.     Case V_COLSPAN
  1621.         sAdd$ = GetSizeString("COLSPAN")
  1622.     Case V_ROWSPAN
  1623.         sAdd$ = GetSizeString("ROWSPAN")
  1624.     Case V_MARGINHEIGHT
  1625.         sAdd$ = GetSizeString("MARGINHEIGHT")
  1626.     Case V_MARGINWIDTH
  1627.         sAdd$ = GetSizeString("MARGINWIDTH")
  1628.     Case V_SCROLLYES
  1629.         sAdd$ = " SCROLLING=" + Chr(&H22) + "YES" + Chr(&H22)
  1630.     Case V_SCROLLNO
  1631.         sAdd$ = " SCROLLING=" + Chr(&H22) + "NO" + Chr(&H22)
  1632.     Case V_SCROLLAUTO
  1633.         sAdd$ = " SCROLLING=" + Chr(&H22) + "AUTO" + Chr(&H22)
  1634.     Case V_NORESIZE
  1635.         sAdd$ = " NORESIZE"
  1636.     End Select
  1637.  
  1638.     If sAdd$ = "" Then
  1639.         Return
  1640.     End If
  1641.  
  1642.     If Right(sAdd$, 1) = "=" Then
  1643.         If MsgBox("初期値に設定してよろしいですか?", "", MB_ICONQUESTION | MB_YESNO) = IDNO Then
  1644.             Return
  1645.         End If
  1646.     End If
  1647.  
  1648.     Dim l$
  1649.     l$ = Left(sAdd$, InStr(sAdd$, "="))
  1650.     If l$ = "" Then
  1651.         l$ = sAdd$
  1652.     End If
  1653.  
  1654.     Dim nC%
  1655.     Dim sSel$
  1656.     Silent()
  1657.     Command("SelectBegin")
  1658.     nC = GetCurrentChar()
  1659.     While nC <> Asc(">")
  1660.         Command("CsrRight")
  1661.         nC = GetCurrentChar()
  1662.     Wend
  1663.  
  1664.     sSel$ = GetSelected()
  1665.     NoSilent()
  1666.     Dim nBeg%, nEnd%
  1667.     nBeg% = InStr(sSel$, l$)
  1668.     If Right(sAdd$, 1) = "=" Then
  1669.         sAdd$ = ""
  1670.     Else If sAdd$ = l$ Then
  1671.         If MsgBox("設定しますか?(はい:設定/いいえ:解除)", "", MB_YESNO | MB_ICONQUESTION) = IDNO Then
  1672.             sAdd$ = ""
  1673.         End If
  1674.     End If
  1675.     If nBeg Then
  1676.         nEnd = nBeg
  1677.         Dim sTmp$
  1678.         While True
  1679.             nEnd = nEnd + 1
  1680.             sTmp$ = Mid(sSel$, nEnd, 1)
  1681.             If sTmp$ = " " Or sTmp$ = Chr(&H09) Or sTmp$ = ">" Or sTmp$ = "" Then
  1682.                 Exit
  1683.             End If
  1684.         Wend
  1685.         sAdd$ = Left(sSel$, nBeg - 1) + sAdd$ + Mid(sSel$, nEnd, Len(sSel$))
  1686.         DelSelect()
  1687.         InsertString(sAdd$)
  1688.     Else
  1689.         SelectCancel()
  1690.         InsertString(sAdd$)
  1691.     End If
  1692.     Refresh()
  1693. End Proc
  1694.  
  1695. '/////////////////////////////////////////////////////////////////////
  1696. ' Input Library
  1697. Proc SetType(t$) As String
  1698.     Return " TYPE=" + t$
  1699. End Proc
  1700.  
  1701. Proc GetSizeString(size$) As String
  1702.     Dim z$
  1703.     z$ = InputBox("数値を指定して下さい", "", "")
  1704.     z$ = " " + size$ + "=" + z$
  1705.     Return z$
  1706. End Proc
  1707.  
  1708. Proc GetNameString(name$) As String
  1709.     Dim n$
  1710.     n$ = InputBox("文字列を指定して下さい", "", "")
  1711.     If n$ <> "" Then
  1712.         n$ = " " + name$ + "=" + Chr(34) + n$ + Chr(34)
  1713.     Else
  1714.         n$ = " " + name$ + "="
  1715.     End If
  1716.     Return n$
  1717. End Proc
  1718.  
  1719. Proc GetColorString(col$) As String
  1720.     Dim c$
  1721.     Static lpCol%(16)
  1722.     Dim cc%(9)
  1723.     cc(1) = 36
  1724.     cc(2) = .hMainWnd
  1725.     cc(3) = 0
  1726.     cc(4) = 0
  1727.     cc(5) = lpCol
  1728.     cc(6) = 0
  1729.     cc(7) = 0
  1730.     cc(8) = 0
  1731.     cc(9) = 0
  1732.     If ChooseColor(cc) = True Then
  1733.         Dim r%, g%, b%
  1734.         r = cc(4) & &HFF
  1735.         g = (cc(4) >> 8) & &HFF
  1736.         b = (cc(4) >> 16) & &HFF
  1737.         c$ = Space$(10)
  1738.         wsprintf(c$, "%02X%02X%02X", r, g, b)
  1739.         c$ = InputBox("RGB値を調整して下さい", "", c$)
  1740.         If c$ <> "" Then
  1741.             c$ = " " + col$ + "=" + Chr(34) + "#" + c$ + Chr(34)
  1742.         Else
  1743.             c$ = " " + col$ + "="
  1744.         End If
  1745.     End If
  1746.     Return c$
  1747. End Proc
  1748.  
  1749. Proc GetOpenFileString(filt$, item$)
  1750.     Dim o$
  1751.     o$ = GetOpenFile(filt$)
  1752.     o$ = " " + item$ + "=" + Chr(34) + o$ + Chr(34)
  1753.     Return o$
  1754. End Proc
  1755.