掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コード補完の実装を実現するには? (ID:43268)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ご指摘ありがとうございます。 すいません、整理したら、きちんと動きました(汗)。 取り敢えず、単語は無条件で登録する状態にしてあります。 ここから、検索をかけて、絞り込む仕様にする予定です。 何とか、なりそうです。 以下が、そのコードです。 リストは、パネルにエディットコントロール、リストボックスを置いて、 即席で作り込みました。 procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char); var fs,s:string; i,i1,ans1,loop:integer; sary:array[0..50] of string; sset:array[0..14] of string; begin sset[0] := '.'; sset[1] := ','; sset[2] := '['; sset[3] := ']'; sset[4] := '+'; sset[5] := '-'; sset[6] := '/'; sset[7] := ' '; sset[8] := '^'; sset[9] := '\'; sset[10] := '!'; sset[11] := '&'; sset[12] := '%'; sset[13] := '#'; sset[14] := '|'; //リストボックスを表示 with form1.listbox1 do begin if key = char(46) then begin panel1.Visible := true; form1.ActiveControl := edit1; items.Clear; panel1.left := mx;//マウス座標を代入 panel1.top := my; tag := 1; end; //もし、リストボックスが表示されたなら if panel1.visible = true then begin loop := 0; //単語区切り文字を検出して、単語切り取りポイントを記録 while 14 > loop do begin i := 0; listbox1.Items.Add(''); //メモを一行ずつ、AnsiPosで検索 while form1.RichEdit1.Lines.Count > i do begin i1 := 0; ans1 := ansipos(sset[loop],form1.RichEdit1.Lines[i]); //ヒットした単語を全て登録 if ans1 <> -1 then begin fs := form1.RichEdit1.Lines[i]; //リストに登録 while ans1 > i1 do begin sary[i1] := fs[i1]; listbox1.Items[i] := listbox1.Items[i] + sary[i1]; i1 := i1 + 1; end; tag := 0; s := ''; end; i := i + 1; end; loop := loop + 1; end; end; //もし、リターンキー又はエスケープが押されたならば、キャンセル if (key = char(27)) or (key = char(13)) then begin items.Clear; panel1.visible := false; exit; end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.