ComboBoxで重複した文字の消し方は?

解決


デル  2005-12-08 05:12:17  No: 19109  IP: 192.*.*.*

StringGridのCellからComboBoxに入れて同じ項目は消したいんですけどどうしたらいいんですか?

procedure TForm1.Button1Click(Sender: TObject);
var
  F : TextFile;
  Str : String;
  RowCNT : Integer;
begin
  if not OpenDialog1.Execute then exit;
  AssignFile(F,OpenDialog1.FileName);
  ReSet(F);
  RowCNT := 0;
  try
    While not EOF(F) do
    begin
      Readln(F,Str);
      Str := StringReplace(Str,',' , '","' ,[rfReplaceAll]);
      Str := '"'+ Str +'"';
      Str := StringReplace(Str, '""','" "', [rfReplaceAll]);
      StringGrid1.Rows[RowCNT].CommaText:= Str;
      if RowCNT<>0 then
      if StringGrid1.Cells[8,RowCNT]<>' ' then
      ComboBox1.Items.Append(StringGrid1.Cells[8,RowCNT]);
      Inc(RowCNT);
    end;
  finally
    CloseFile(F);
  end;
end;

編集 削除
HOta  2005-12-08 07:51:13  No: 19110  IP: 192.*.*.*

TStrings型ですから、Indexofで検索して無ければ追加する様にすればどうですか?

編集 削除
デル  2005-12-08 12:51:28  No: 19111  IP: 192.*.*.*

初心者なのでわからないんですけどどういう感じにしたらいいんですか?

編集 削除
 2005-12-08 13:04:27  No: 19112  IP: 192.*.*.*

indexOfはヘルプで検索しましたか?
わからないならまず調べてみたらどうですか。

編集 削除
デル  2005-12-08 13:33:25  No: 19113  IP: 192.*.*.*

調べたんですけどやっぱりわかりませんでした。

編集 削除
HOta  2005-12-08 15:52:12  No: 19114  IP: 192.*.*.*

if ComboBox1.Items.Indexof(StringGrid1.Cells[8,RowCNT]) < 0 then
  ComboBox1.Items.Append(StringGrid1.Cells[8,RowCNT]);
の様にします。
TComboBoxをヘルプで調べると、プロパティにItemsがあります。
Itemsはproperty Items: TStrings;となっていますので、
TStrings型とわかります。
TStringsをヘルプで調べると、メソッドにIndexOfがあります。

編集 削除
デル  2005-12-09 16:24:21  No: 19115  IP: 192.*.*.*

思っていたとおりにうごきました。ありがとうございます。

編集 削除