Delphi 買ったけど。。No.0200 2007/05/27
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Delphi 買ったけど。。No.0200
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
だも(^O^)/ TERRY です(^-^)
ナンバーからすると今回が200号のようですね。
8年かけてたった200号か!
……ま、いぃか (=∩_∩=)
┏━┓
┃イ┃ンクリメンタルサーチ
┗━┛
私は常用ブラウザに Opera を使っているのですが、ブックマークで(
普通にツリービューなんですが)検索するとインクリメンタルサーチし
てくれるのが気に入っています。
http://hp.vector.co.jp/authors/VA009187/delkedo/operabm001.jpg
http://hp.vector.co.jp/authors/VA009187/delkedo/operabm002.jpg
http://hp.vector.co.jp/authors/VA009187/delkedo/operabm003.jpg
とりあえずこれをやってみましょう(^o^)/
フォームに TEdit ひとつ。TTreeView を二つ貼り付けます。
┏━┓
┃す┃ぐにテストできるように TreeView1 にノードをでたらめに作ります。
┗━┛
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
const//Object(Data)プロパティの関連先
Dat='abcdefghijklmnopqrstuvwxyz';
begin
with TreeView1 do
begin
//ルートノードに適当に追加
for i:=0 to 10 do
begin
Items.AddObject(nil,IntToStr(i),TObject(i));
end;
//残りは適当に子供ノード作成
for i:=11 to 25 do
begin
Items.AddChildObject(TTreeNode(Items[Random(i)]),
IntToStr(i),TObject(i));
end;
end;
end;
これで適当に子供ノードを持ったツリーが作られます。
┏━┓
┃ア┃イテムをクリックしたときに
┗━┛
「どちらのツリービューか」「アイテムの絶対インデックス」「データ」
をわかるようフォームのキャプションに表示します。
TTreeView の OnChange イベントです。
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
Caption:=(Sender as TComponent).Name+' - '+
IntToStr(Node.AbsoluteIndex)+'/'+Dat[Integer(Node.Data)+1];
end;
┏━┓
┃そ┃して検索
┗━┛
TEdit をWクリックした OnChange イベントに書きます。
procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
with TreeView2 do
begin
//空ならやめ。
if Edit1.Text='' then
begin
Items.Clear;
exit;
end;
//とりあえずすべてコピー(データ込み)
Items.Assign(TreeView1.Items);
//最後から逆順に検証
for i:=Items.Count-1 downto 0 do
begin
//キャプションだけの比較ならこの一行でOK
// if AnsiPos(Edit1.Text,Items[i].Text)>0 then Continue;
//今回は一応データも対象
//ヒットしたら何もしないでループ先頭に戻る
if (AnsiPos(Edit1.Text,Items[i].Text)>0)or
(AnsiPos(Edit1.Text,Dat[Integer(Items[i].Data)+1])>0) then
Continue;
//ヒットしないから削除。だが、子供を持っているという事は
//その子供はヒットしたものなので親も殺さない。
if not Items[i].HasChildren then
Items.Delete(Items[i]);
end;
//これ見よがしに展開してみる(^^;
FullExpand;
end;
end;
<Tubuyaki>
なぜか Items.BeginUpdate 〜 EndUpdate するとうまくいかなかっ
たのですが、ヘルプを読む限り
「変更されたツリーノードの Index 値は EndUpdate が呼び出される
まで無効です」
これが原因ですかね?
早く処理するには当たり前だと思っていたのですが。
</Tubuyaki>
5月クリア!
そりでは(^.^)/~~
_________________________________________________________________
★わからない点などありましたら、メールしてください。
★メッセージボードはスパム投稿があまりに増えたのでアドレスを少しだ
け変更しました。私のトップページ
http://www.vector.co.jp/authors/VA009187/
から入ってください。
あるいは↓の「*」を「.」に変更してください。
http://hpcgi3*nifty*com/teriard/honey/honey-mk2*cgi
*****************************************************************
発行者:TERRY teriard@nifty*com
スパム対策です。 「*」を「.」に変更してください↑
★ 登録 or 解除はこちらから↓
http://www.vector.co.jp/authors/VA009187/delkedo/
★バックナンバー
http://backno.mag2.com/reader/Back?id=0000016258
*****************************************************************
★なるべくMSゴシックなどの「等幅フォント」でお読み下さい★
_________________________________________________________________
このメールマガジンは、
・インターネットの本屋さん『まぐまぐ』
http://www.mag2.com/ ID:0000016258
・melma!
http://www.melma.com/ ID:m00001349
で発行しています。
_________________________________________________________________


![転職なら[en]社会人の転職情報!転職成功者続出 転職なら[en]社会人の転職情報!転職成功者続出](http://kamogawa.mag2.com/bn/recommend/sya.gif)
![派遣のお仕事探しなら[en]派遣のお仕事情報 派遣のお仕事探しなら[en]派遣のお仕事情報](http://kamogawa.mag2.com/bn/recommend/haken.gif)
![アルバイト探しは[en]本気のアルバイト アルバイト探しは[en]本気のアルバイト](http://kamogawa.mag2.com/bn/recommend/baito.gif)
![就職サイトは[en]学生の就職情報 就職サイトは[en]学生の就職情報](http://kamogawa.mag2.com/bn/recommend/gakusei.gif)
![転職なら[en]転職コンサルタントキャリアを活かした転職に! 転職なら[en]転職コンサルタントキャリアを活かした転職に!](http://kamogawa.mag2.com/bn/recommend/consul.gif)

