<br><br><div class="gmail_quote">On Tue, Nov 23, 2010 at 11:32 PM, Andrew Brunner <span dir="ltr"><<a href="mailto:andrew.t.brunner@gmail.com">andrew.t.brunner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div class="gmail_quote"><div class="im">On Tue, Nov 23, 2010 at 1:59 PM, Max Vlasov <span dir="ltr"><<a href="mailto:max.vlasov@gmail.com" target="_blank">max.vlasov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">


Andrew,<br><div class="gmail_quote"><div>Creating TList as a field for storing extra structures and objects and supporting extra data reference using Tag as an index never was a problem for me. Can you tell a single reason not to implement this approach by yourself?  Moreover managing the destruction of objects in this case is much easier and straightforward. <br>




Other consideration, if something starts to depend on future decisions of other developers, isn't it easy to create a simple (very simple) workaround :)<br><br>Max Vlasov<br></div></div>
<br><br></blockquote></div><div><br>In the specific problem I have, it is corellating TMenuItem with a particular data pointer object of TForm.  Forms can close out of order and re-Index the List I have (as you stated).  But there is no clean way for me to reference what was clicked on Sender...  Tag or Data is the only clean solution here.  Out of order, happening on application thread... Oh, and TMenuItems being created at runtime.  This is about productivity.  What must I create an additional list when I have Tag or Data.  <br>


</div></div><br>
<br></blockquote><div><br>Things become a little more complex in this case, but just a little, [id:pointer] where id is autoincrement. You can have two synchronized lists (TList), one stored ids, another one - corresponding object. Or create a list with a record containing both. I'm from Turbo Pascal era so dynamic "array of" was a kind of novelty some time ago for me and I created an analogue. But this time [array of record id: integrer; ptr: pointer end;] is no longer a problem and you have privilege to use a language already containing such a great dynamic structure :) <br>

<br>I also must say (probably others will confirm) that programming starting turbo pascal gave me once and for good the sense that  the design-time objects and data are a great help, but just secondary help, everything solid comes from elsewhere. <br>

<br>Max Vlasov<br></div></div>