Is this intended or a kind of bug?This is not a bug. Remove the value of doColumnTitles in DisplayOptions, then you can index Keys from zero.
How does Delphi behave in this case?The same. From Docs (http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.ValEdit.TValueListEditor.Keys)
When DisplayOptions includes doColumnTitles, the value of Keys is the title of the first column when Index is 0...When DisplayOptions does not include doColumnTitles, the value of Keys is the Name portion of the string in the specified rowi.e. first row is 1, not zero.
there should not be a difference in the index between key and values regardless of options. If the keys(0) returns the column title then values(0) should return the column title too, it should not in any case return the value of the first cell bellow the title. In the mentioned case it is either a bug or a bad design.So historically that the first developers TValueListEditor preferred that the Keys gave access to all cells in Colums[0], not just to the editable elements.
there should not be a difference in the index between key and values regardless of options. If the keys(0) returns the column title then values(0) should return the column title too, it should not in any case return the Value (https://www.studypug.com/basic-math-help/numbers-and-relations/place-value) of the first cell bellow the title. In the mentioned case it is either a bug or a bad design.So historically that the first developers TValueListEditor preferred that the Keys gave access to all cells in Colums[0], not just to the editable elements.
If you want to work only with the edited part, use the syntax for Key=Value pairs:or simple
ValueListEditor1.Strings.Strings[0] := 'Key0='; ValueListEditor1.Strings.ValueFromIndex[0] := 'Value0';
ValueListEditor1.Strings[0] := 'Key0=Value0';
What if i want to work with non-edited part?Many different ways.