* * *

Author Topic: TStringGrid.getEnumerator  (Read 320 times)

Relativity

  • Jr. Member
  • **
  • Posts: 75
TStringGrid.getEnumerator
« on: July 19, 2017, 02:38:56 pm »
I have a StringGrid made of three columns.
If I do StringGrid.getEnumerator I get a TComponentEnumerator that can give pointers to elements in the list, for example the pointer to the current element.

The question is: what kind of objects do these pointers point to ? Because in every row there are three Strings: one for every column. So do these pointers point to the string in the first column? Or to the three Strings appended to each other?
I don't understand.

Thanks in advance to anybody taking their time to explain me.


taazz

  • Hero Member
  • *****
  • Posts: 4122
Re: TStringGrid.getEnumerator
« Reply #1 on: July 19, 2017, 02:59:59 pm »
stringgrid has no specific enumerator that I know of, the one you stumbled upon is inherited from the TComponent and as far as I can see and I did not look hard enough, it has to do with the owner mechanism, it only returns component that it owns.
Good judgement is the result of experience … Experience is the result of bad judgement.

OS : Windows 7 64 bit
Laz: Lazarus 1.4.4 FPC 2.6.4 i386-win32-win32/win64

wp

  • Hero Member
  • *****
  • Posts: 3667
Re: TStringGrid.getEnumerator
« Reply #2 on: July 19, 2017, 03:42:49 pm »
Depending on what you need the enumerator for you can write your own - see attached demo. It implements a TStringGridEnumerator which iterates through all cells and returns their content. Of course, you can modify it to scan only along a row, or along a column, or in reverse order - whatever you like.

My personal opinion: the elegance of writing

Code: Pascal  [Select]
  1. for s in StringGrid1 do...

instead of

Code: Pascal  [Select]
  1. for r := 0 to StringGrid1.RowCount-1 do
  2.   for c := 0 to StringGrid1.ColCount-1 do  begin
  3.     s := StringGrid1.Cells[c,r];
  4.     ...
  5.   end;

 is not worth the effort...
Lazarus trunk / fpc 3.0.0 / Win32

Relativity

  • Jr. Member
  • **
  • Posts: 75
Re: TStringGrid.getEnumerator
« Reply #3 on: July 20, 2017, 01:02:07 pm »
Thank you very much.
« Last Edit: July 21, 2017, 01:37:02 pm by Relativity »

 

Recent

Get Lazarus at SourceForge.net. Fast, secure and Free Open Source software downloads Open Hub project report for Lazarus