Jump to content

Error UniComboBox AddObject


Kanat
 Share

Recommended Posts

Hi guys!

 

Create 3 items.

UniComboBox1.Items.AddObject('111', TObject(1));

UniComboBox1.Items.AddObject('111', TObject(2));

UniComboBox1.Items.AddObject('112', TObject(3));

 

Example 

 

UniComboBox1.ItemIndex:=0;

ShowMessage(IntToStr(Integer(UniComboBox1.Items.Objects[uniComboBox1.ItemIndex]));

Result : 1

 

UniComboBox1.ItemIndex:=1;

ShowMessage(IntToStr(Integer(UniComboBox1.Items.Objects[uniComboBox1.ItemIndex]));

Result : 1

 

UniComboBox1.ItemIndex:=2;

ShowMessage(IntToStr(Integer(UniComboBox1.Items.Objects[uniComboBox1.ItemIndex]));

Result : 3

 

in the first and second case gets results : 1

 

Please help?

Link to comment
Share on other sites

Hi Kanatshym,

 

I assume you have valid reasons for wanting the first two items in the combobox to appear identical to the user.

 

It does appear that TUniCombobox.ItemIndex malfunctions if two or more items have truly identical text. As a workaround, you might like to consider putting a space at the end of one of the items:

UniComboBox1.Items.AddObject('111', TObject(1));
UniComboBox1.Items.AddObject('111 ', TObject(2));
UniComboBox1.Items.AddObject('112', TObject(3));
The user is unlikely to notice the difference, but this is sufficient (based on my tests) to get TUniCombobox.ItemIndex working again.
 
I hope this helps :)
Tim
Link to comment
Share on other sites

 

Hi Kanatshym,

 

I assume you have valid reasons for wanting the first two items in the combobox to appear identical to the user.

 

It does appear that TUniCombobox.ItemIndex malfunctions if two or more items have truly identical text. As a workaround, you might like to consider putting a space at the end of one of the items:

UniComboBox1.Items.AddObject('111', TObject(1));
UniComboBox1.Items.AddObject('111 ', TObject(2));
UniComboBox1.Items.AddObject('112', TObject(3));
The user is unlikely to notice the difference, but this is sufficient (based on my tests) to get TUniCombobox.ItemIndex working again.
 
I hope this helps :)
Tim

 

 

In my project there are duplicate rows, "VCL" everything works fine

Link to comment
Share on other sites

Hi Kanatshym,

 

I realise this is an inconsistency (or possibly a bug) between UniGui and the Delphi VCL. That is why i am suggesting a workaround.

 

You might even consider writing a function to perform the workaround automatically, something like this:

procedure TMainForm.UniFormCreate(Sender: TObject);

  function AddObjectToComboBox(AUniCombobox : TUniCombobox; AItem : string; AObject: TObject): Integer;
  var
    i : integer;
  begin
    while AUniCombobox.Items.IndexOf(AItem) <> -1 do begin
      AItem := AItem + ' ';
    end;
    result := AUniCombobox.Items.AddObject(AItem, AObject);
  end;

begin
  AddObjectToComboBox(UniComboBox1, '111', TObject(1));
  AddObjectToComboBox(UniComboBox1, '111', TObject(2));
  AddObjectToComboBox(UniComboBox1, '112', TObject(3));
end;
In the VCL version of your application you could then leave the first three lines of AddObjectToComboBox commented out.

 

I hope this helps,

Tim

 

Link to comment
Share on other sites

Hi Kanatshym,

 

I realise this is an inconsistency (or possibly a bug) between UniGui and the Delphi VCL. That is why i am suggesting a workaround.

 

You might even consider writing a function to perform the workaround automatically, something like this:

procedure TMainForm.UniFormCreate(Sender: TObject);

  function AddObjectToComboBox(AUniCombobox : TUniCombobox; AItem : string; AObject: TObject): Integer;
  var
    i : integer;
  begin
    while AUniCombobox.Items.IndexOf(AItem) <> -1 do begin
      AItem := AItem + ' ';
    end;
    result := AUniCombobox.Items.AddObject(AItem, AObject);
  end;

begin
  AddObjectToComboBox(UniComboBox1, '111', TObject(1));
  AddObjectToComboBox(UniComboBox1, '111', TObject(2));
  AddObjectToComboBox(UniComboBox1, '112', TObject(3));
end;
In the VCL version of your application you could then leave the first three lines of AddObjectToComboBox commented out.

 

I hope this helps,

Tim

 

Thanks, I already fixed, it took me a long time to find this error.
I think Farhad fix in the next release.
  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...