{コメント領域 CheckBox1 黒一色 CheckBox2 一色 CheckBox3 交互文字色 CheckBox4 題入り CheckBox5 線入り CheckBox6 記号(GIF)入り CheckBox7 特殊(一行目別色) CheckBox8 起動(ブラウザプレビュー) CheckBox9 拡張子(html) CheckBox10 間隔一定 CheckBox11 加(*を入れ30行に) CheckBox12 入(挿入場所を上に) Edit4 題名 Edit5 htm題名 RichEditNx2 左窓(縦書き用RichEdit) StopWatch1 時間計測 StatusBar1.Panels[1] パネル  Object Pascal code 御自由にお使い下さい 以下のWakatonoに記号(GIF)添付してあります http://hp.vector.co.jp/authors/VA020725/download.htm *課題は改行コードも文字とカウントして
挿入しなければ ならないこと HTMLとして綺麗ではないこと } //--略 public { Public 宣言 } end; var MainForm1: TMainForm1; bgc,mclo,mclt,Lcl, Tad,Tht,Mfn,Dai,Tsiz,Lsiz:String; implementation //---元 ボタンクリック procedure TMainForm1.HtmButton9Click(Sender: TObject); begin bgc :='#fff8dc';//背景色 mclo :='#8080FF';//前の色 mclt :='#D0A2A2';//後ろの色 Lcl :='#CDC0A5';//Lineの色 // Tad := '作品'; // Tht := 'sakuhin'; Mfn := 'MS 明朝';//Font Dai :='#CDC0A5';//題名の色 Edit4.Text := Tad; Edit5.Text := Tht; CheckBox1.Checked := False; CheckBox2.Checked := False; CheckBox3.Checked := False; CheckBox4.Checked := True; CheckBox5.Checked := True; CheckBox6.Checked := False; CheckBox7.Checked := False; CheckBox8.Checked := True; //CheckBox9.Checked := False; Tsiz:= '700';//Table width="700" Lsiz:= '800';//Line width="800" CheckBox10.Checked := False; CheckBox11.Checked := False; CheckBox12.Checked := False; end; //---換 ボタンクリック procedure TMainForm1.HtmButton1Click(Sender: TObject); var x,y,n,i,q,r,z,w,fi,ci,s,u,v:Integer; P:WideString; HiraText, ManText:String; begin z:= RichEditNx2.Lines.Count ; if z = 0 then begin ShowMessage('変換文字列がありません'); Exit; end; StopWatch1.Reset; RichEditNx2.WordWrap := False; //----- '    *'Add fi:=0; if CheckBox11.Checked then begin if z<30 then begin fi:= 30-z; for ci:= 1 to fi do RichEditNx2.Lines.Add('         *'); end; end; z:= RichEditNx2.Lines.Count ; if z mod 2 = 1 then RichEditNx2.Lines.Add('          '); //---Sort z := RichEditNx2.Lines.Count; x:=0; for y:=0 to z-1 do begin RichEditNx2.Lines.Move(0,z-1-x); Inc(x) ; end; //---
Add if CheckBox10.Checked= True then begin Tsiz:= IntToStr(z*24); Lsiz:= IntToStr(z*24+60); end else begin Tsiz:= '700'; Lsiz:= '800'; end; //---count begin n := 0; with TStringList.Create do try Text := RichEditNx2.Text; for i := 0 to Count - 1 do Inc(n, Length(WideString(Strings[i]))); finally Free; end; end; P:= RichEditNx2.Text; q:=n+(z*2-5+4); w:=q; for r:=1 to w do begin Insert('
', P, q); Dec(q); end; RichEditNx2.Text:=P; //---TableTag u:= 0; v:= 1; s:= 0; x:= 2; if CheckBox7.Checked= False then begin if CheckBox3.Checked = True then RichEditNx2.Lines.Insert(0,'') else begin RichEditNx2.Lines.Insert(0,''); RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); end; if CheckBox3.Checked = False then begin for y:=0 to RichEditNx2.Lines.Count-3 do //3 do begin if s mod 2 <>0 then begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(u); if u mod 2 = 0 then Inc(s); end else begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(u) ; if u mod 2 = 0 then Inc(s); end; end; end else begin for y:=0 to RichEditNx2.Lines.Count-3 do begin if v mod 2 <>0 then begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(v); end else begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(v); end; end; end; end else begin if CheckBox3.Checked = False then RichEditNx2.Lines.Insert(0,'') else RichEditNx2.Lines.Insert(0,''); if CheckBox3.Checked = False then begin for y:=0 to RichEditNx2.Lines.Count-3 do begin if s mod 2 <>0 then begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(u); if u mod 2 = 0 then Inc(s); end else begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(u) ; if u mod 2 = 0 then Inc(s); end; end; end else begin for y:=0 to RichEditNx2.Lines.Count-3 do begin if v mod 2 <>0 then begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(v); end else begin RichEditNx2.Lines.Insert(x,''); Inc(x); Inc(x); Inc(v); end; end; end; end; //---HTMLTag with RichEditNx2.Lines do begin Add(''); Add(''); Add(''); Add(''); Add('



'); if CheckBox5.Checked = True then begin Add('




'); Add(''); end else Add('



'); Add(''); Add(''); end; with RichEditNx2.Lines do begin Insert(0,''); Insert(1,''); Insert(2,''+Tht+''); Insert(3,''); Insert(4,''); Insert(5,'

'); if CheckBox4.Checked = True then begin Insert(6,'

'+Tad+'


'); if CheckBox5.Checked = True then begin Insert(7,'



'); Insert(8,''); end else begin Insert(7,'

'); Insert(8,'
'); end; Insert(9,''); Insert(10,'
'); Insert(11,''); end else begin if CheckBox5.Checked = True then begin Insert(6,'



'); Insert(7,''); end else begin Insert(6,'

'); Insert(7,'
'); end; Insert(8,''); Insert(9,'
'); Insert(10,''); end; end; begin ManText := '│'; HiraText := 'ー'; DoReplaceAll2(HiraText, ManText); end; begin ManText := '│'; HiraText := '―'; DoReplaceAll2(HiraText, ManText); end; if CheckBox6.Checked = True then begin begin ManText := ''; HiraText := '。'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '、'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '「'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '」'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '『'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '』'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '('; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := ')'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '<'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '>'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '《'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '》'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '['; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := ']'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '〔'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '〕'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '〜'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := '…'; DoReplaceAll2(HiraText, ManText); end; begin ManText := ''; HiraText := ':'; DoReplaceAll2(HiraText, ManText); end; end; StopWatch1.Stop; StatusBar1.Panels[1].Text := StopWatch1.StrTime; end; procedure TMainForm1.DoReplaceAll2(HiraText, ManText:string); var SelPos: Integer; begin begin Repeat SelPos := Pos(HiraText, RichEditNx2.Text); if SelPos > 0 then begin RichEditNx2.SelStart := SelPos - 1; RichEditNx2.SelLength := Length(HiraText); // 選択されたテキストを ManText に置換する RichEditNx2.SelText := ManText; end; until SelPos = 0; end; end;