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

解決


デル  2005-12-08 14:12:17  No: 19109

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 16:51:13  No: 19110

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


デル  2005-12-08 21:51:28  No: 19111

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


  2005-12-08 22:04:27  No: 19112

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


デル  2005-12-08 22:33:25  No: 19113

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


HOta  2005-12-09 00:52:12  No: 19114

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-10 01:24:21  No: 19115

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加