Markoni napisał(a):
do ComboBox-a chcę wpisywać wszystkie "wiersze" [1..100] z jednej kolumny.
No to indeks tej kolumny będzie hardkodowany (albo parametryzowany — jeśli chcesz mieć wybór kolumny), a po wierszach skaczesz w pętli. Przykład niżej, ze sparametryzowanym indeksem kolumny.
type
TStringsArray = array [1 .. 8, 1 .. 100] of String;
procedure LoadArrayToComboBox(AComboBox: TComboBox; const AArray: TStringsArray; AColumnIndex: Integer);
var
RowIndex: Integer;
begin
AComboBox.Items.BeginUpdate();
AComboBox.Items.Clear();
try
for RowIndex := 1 to 100 do
AComboBox.Items.Add(AArray[AColumn, RowIndex]);
finally
AComboBox.Items.EndUpdate();
end;
end;
Oczywiście dobrze by było, gdyby pętla nie posiadała hardkodowanych indeksów, a bazowała na wielkości macierzy. Do tego celu powinieneś skorzystać z funkcji Low
i High
, w taki sposób:
for RowIndex := Low(AArray[1]) to High(AArray[1]) do
AComboBox.Items.Add(AArray[AColumnIndex, RowIndex]);
albo tak:
for RowIndex := Low(AArray[Low(AArray)]) to High(AArray[Low(AArray)]) do
AComboBox.Items.Add(AArray[AColumnIndex, RowIndex]);
Jest to macierz prostokątna, więc obojętne której kolumny sprawdza się długość (wyżej użyłem pierwszej). Lepiej by było, gdybyś komórki indeksował od 0
, bo to jest intuicyjne dla wszystkich.