今のソースです。
procedure TForm1.Button1Click(Sender: TObject);
var
SL,SL2: TStringList;
i: Integer;
begin
SL := TStringList.Create;
SL2 := TStringList.Create;
try
SL.LoadFromFile('c:\test.txt');
StringGrid1.RowCount := SL.Count;
SL2.CommaText := SL.Strings[0];
StringGrid1.ColCount := SL2.Count;
for i := 0 to SL.Count - 1 do
StringGrid1.Rows[i].CommaText := SL.Strings[i];
ComboBox1.Items.CommaText := StringGrid1.Cols[0].CommaText;
Memo1.Lines.Add(StringGrid1.Cols[1].CommaText);
Memo2.Lines.Add(StringGrid1.Cols[2].CommaText);
Memo3.Lines.Add(StringGrid1.Cols[3].CommaText);
Memo4.Lines.Add(StringGrid1.Cols[4].CommaText);
finally
FreeAndNil(SL2);
FreeAndNil(SL);
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
SL,SL2: TStringList;
i,j: Integer;
begin
StringGrid1.Rows[i];
Memo1.Lines.Add(StringGrid1.Cells[1,ComboBox1.ItemIndex]);
Memo2.Lines.Add(StringGrid1.Cells[2,ComboBox1.ItemIndex]);
Memo3.Lines.Add(StringGrid1.Cells[3,ComboBox1.ItemIndex]);
Memo4.Lines.Add(StringGrid1.Cells[4,ComboBox1.ItemIndex]);
end;
test.txtは、
a1,a2,a3,a4,a5
b1,b2,b3,b4,b5
c1,c2,c3,c4,c5
となっています。
ComboBoxに、a1,b1,c1
Memo1にa2,b2,c2
・・・
Memo4にa5,b5,c5
と文字列がセットされています。
このまま実行すると、ComboBoxでa1を選んでも、b1を選んでも、c1を選んでも,
Memoには表示される順番が変わるだけで全部表示されてしまうんです。
目的は、ComboBoxで選んだ文字列に関係する文字列のみをMemoに表示させたいんです。
ComboBoxでa1を選ぶと ComboBoxでb1を選ぶと ComboBoxでc1を選ぶと
Memo1はa2のみ Memo1はb2のみ Memo1はc2のみ
Memo2はa3のみ Memo2はb2のみ Memo2はc2のみ
Memo3はa4のみ Memo3はb2のみ Memo3はc2のみ
Memo4はa5のみ Memo4はb2のみ Memo4はc2のみ
と表示させたいんです。
何か良い方法ありませんか?
長くなりましたが、お願いします。
すいません、Memoに全部表示されてしまうというのは自己解決しました。
Memo1.Lines.Add(StringGrid1.Cols[1].CommaText);
Memo2.Lines.Add(StringGrid1.Cols[2].CommaText);
Memo3.Lines.Add(StringGrid1.Cols[3].CommaText);
Memo4.Lines.Add(StringGrid1.Cols[4].CommaText);
を無くせば大丈夫でした。
あとは、各Memoに表示されている文字列を、
ComboBoxで文字列を選択するたびに、Memo内に表示されている文字列を消して、
新しい物だけを表示させたいんです。
今の段階だと、
最初にComboBoxでa1を選ぶと、
Memo1はa2のみ
Memo2はa3のみ
Memo3はa4のみ
Memo4はa5のみ
が表示され、
次にComboBoxでb1を選ぶと、
Memo1はa2
b2
Memo2はa3
b3
Memo3はa4
b4
Memo4はa5
b5
と改行された状態で前回表示した文字列も一緒に残って表示されてしまうんです。
ComboBoxを変更させるたびに、Memo内を一度消して、
新しい文字列のみを表示させたいんです。
お願いします。
Memo1.Lines.Add('新しい文字列');
というのは、Memoに新しい文字列を"追加"する命令なので、
新しい文字列だけをMemoに表示するには、
Memo1.Text := '新しい文字列';
追加する前に Memo1.Clear とかするといいんでは? ヘルプを読むだけなのに・・・
はい、解決しました。
すいませんでした。
ツイート | ![]() |