掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TListViewで同じものを1個にまとめれますか? (ID:8543)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんな感じでどうでしょう。 リスト項目をTStringListで管理します。 TListView のOwnerDraw プロパティを True にして下さい。 type TForm1 = class(TForm) Edit1: TEdit; ListView1: TListView; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); private FListItems: TStringList; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin FListItems:= TStringList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FListItems.Free; end; procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin // リスト重複項目チェック処理 i:= FListItems.IndexOf(AnsiUpperCase(Edit1.Text)); if (i = -1) then begin // 未登録項目名の場合は、各リストに項目名のみ登録 FListItems.Add(AnsiUpperCase(Edit1.Text)); with ListView1.Items.Add do Caption:= Edit1.Text; end else if (FListItems.Objects[i] = nil) then begin // 重複項目確認用に Objects プロパティに適当な値をセット FListItems.Objects[i]:= TObject(1); // リストビューの再描画 ListView1.Invalidate; end; end; procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var i: Integer; begin if (Item = nil) then Exit; // Font.Colorの設定 i:= FListItems.IndexOf(AnsiUpperCase(Item.Caption)); if (i = -1) then Exit; if (FListItems.Objects[i] = nil) then Sender.Canvas.Font.Color:= clWindowText else Sender.Canvas.Font.Color:= clRed; end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.