TMS Web Core Logic Question

Hi,
Lets say dynamically user creates html elements and bind it to TWebButton object:

var
  Btn:TWebButton;
  I:integer;
begin
  document.getElementById('list').innerHTML := '';
  for I := 0 to 2 do
  begin
    document.getElementById('list').insertAdjacentHTML('beforeend','<button id="ItemBtn'+IntToStr(I)+'" type="button" class="list-group-item list-group-item-action">A '+IntToStr(I)+' button item</button>');
    Btn:=TWebButton.Create('ItemBtn'+IntToStr(I));
    Btn.Tag := I;
    Btn.OnClick := ItemBtnOnClick;
  end;

and that buttons have click event:

procedure TForm1.ItemBtnOnClick(Sender: TObject);
begin
  ShowMessage(IntToStr(TWebButton(Sender).Tag)+'. Button');
  TriggerBtn.Tag := TWebButton(Sender).Tag;
end;

how can user access dynamically created button element without stored them in data structure?:

procedure TForm1.TriggerBtnClick(Sender: TObject);
begin
TWebButton(document.getElementById('ItemBtn'+IntToStr(TWebButton(Sender).Tag))).Click;
end;

With this lets i have dynamically created button's element id but how to access it through Pascal object? i did create element i did bind it to TWebButton now with binded ID i want to access that TWebButton is that possible?

I'm not sure I understand your question.
What means:

"how can user access dynamically created button element without stored them in data structure?"

What data structure?

In your code, you have the answer imho, you create the Pascal class with the contructor that passes the HTML element ID

Btn:=TWebButton.Create('ItemBtn'+IntToStr(I));

and from that moment, you can work with the Pascal class Btn

Yes i did create Pascal class passes html element id.

By this i mean i did create buttons multiple times i dont store them to any arrays, lists, etc... while i create them but i have that dynamically created button's element id.

You can think like findcomponent func where u gave name it will return TComponent
Or
js's document.getElementByID u give id it gives you element

i am asking is there a way to merge these two so when i give ElementID of Pascal Class it will give me TComponent/TWebButton or any other constructor i used. So i can later change its onclick event through Btn.OnClick

If you create Pascal object instances and want to keep using these Pascal object instances, you need to keep a list of these instances you want to keep using (or recreate instances all the time when you want to use these as a way to access the HTML elements)

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.