Wczytanie danych do StringGrida z Combo

0

Witam, proszę o pomoc lub naprowadzenie jak najlepiej wczytać do stringgrida w delphi dane z comboboxów. Chciałbym, aby po wybraniu dowolnej danej z listy comboboxów dane dodawały się w każdym nowym wierszu stringgrida.
Może to banalne ale siedzę już dłuższy czas i nie mogę sobie z tym poradzić.

Proszę o wyrozumiałość. To co udało mi się napisać:

...
for k := 1 to StringGrid1.ColCount do
for w := 1 to StringGrid1.Row do
begin
if k=1 then StringGrid1.Cells[k,w]:=ComboBox2.Text;
if k=2 then StringGrid1.Cells[k,w]:=ComboBox3.Text;
if k=3 then StringGrid1.Cells[k,w]:=ComboBox4.Text;
if k=4 then StringGrid1.Cells[k,w]:=ComboBox5.Text;
if k=5 then StringGrid1.Cells[k,w]:=ComboBox6.Text;
end;
StringGrid1.RowCount:=w+1;
....

Po wciśnięciu buttona dodaje mi tylko jedną linijkę z danymi i jedną pustą a chciałbym, aby po wybraniu innych danych z combo dodało mi te dane w nowej linijce a nie zamieniało w kółko to co już jest.

0

Spróbuj tak:
zmienna lstRow nie może być zmienną lokalną procedury gdzie masz ten kod.

...
  for k := 1 to StringGrid1.ColCount-1 do
     begin
        if k=1 then StringGrid1.Cells[k,lstRow]:=ComboBox2.Text;
        if k=2 then StringGrid1.Cells[k,lstRow]:=ComboBox3.Text;
        if k=3 then StringGrid1.Cells[k,lstRow]:=ComboBox4.Text;
        if k=4 then StringGrid1.Cells[k,lstRow]:=ComboBox5.Text;
        if k=5 then StringGrid1.Cells[k,lstRow]:=ComboBox6.Text;
     end;
  lstRow:= lstRow + 1;
 StringGrid1.RowCount:=lstRow+1;

I czy ta petla jest tu w ogóle potrzebna?

0

Kolego jesteś wielki,Ta druga pętla była niepotrzebna.

działa tak jak chciałem, dzięki - pozdrawiam.

0

Dodam jeszcze, że ten kod:

for k := 1 to StringGrid1.ColCount-1 do
  begin
    if k=1 then StringGrid1.Cells[k,lstRow]:=ComboBox2.Text;
    if k=2 then StringGrid1.Cells[k,lstRow]:=ComboBox3.Text;
    if k=3 then StringGrid1.Cells[k,lstRow]:=ComboBox4.Text;
    if k=4 then StringGrid1.Cells[k,lstRow]:=ComboBox5.Text;
    if k=5 then StringGrid1.Cells[k,lstRow]:=ComboBox6.Text;
  end;

można skrócić do takiej postaci:

for k := 1 to StringGrid1.ColCount - 1 do
  if k in [1 .. 5] then  //jeśli wiesz, że nie wyjdziesz poza zakresy - usuń ten warunek
    StringGrid1.Cells[k,lstRow]:=TComboBox(FindComponent('ComboBox'+IntToStr(k+1))).Text;

Napisałem bez odstępów żeby zmieściło się w jednej linii postu;

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0