Initializing RibbonDropDown.SelectingItemIndex

Add-in Express™ Support Service
That's what is more important than anything else

Initializing RibbonDropDown.SelectingItemIndex
 
Frank Jepsen




Posts: 14
Joined: 2016-07-05
I got a RibbonDropDown in my ExcelAddin. I react on changes with
procedure TZDataXAddInModule.tabToolsControls0Controls1Change(Sender: TObject;
  const RibbonControl: IRibbonControl);
begin
  case tabTools.Controls[0].AsRibbonGroup.Controls[1].AsRibbonDropDown.SelectedItemIndex of
    0: ZDataModule.ConnectDB(ZDataModule.ADOConnection, 'Z1', False);
    1: ZDataModule.ConnectDB(ZDataModule.ADOConnection, 'Z2', False);
    2: ZDataModule.ConnectDB(ZDataModule.ADOConnection, 'Z1', True);
    3: ZDataModule.ConnectDB(ZDataModule.ADOConnection, 'Z2', True);
  end;
end;

When the addin gets loaded I want to initialize SelectedItemIndex with a value I read from registry. What is best way to do this.

Greetings Frank
Posted 14 Jul, 2016 06:46:15 Top
Andrei Smolin


Add-in Express team


Posts: 14094
Joined: 2006-05-11
Hello Frank,

Specify the SelectedItemIndex property at design time.

Regards from Belarus (GMT+3),

Andrei Smolin
Add-in Express Team Leader
Posted 14 Jul, 2016 07:40:37 Top
Frank Jepsen




Posts: 14
Joined: 2016-07-05
Since I read the value from registry designtime is no option.
I now read the registry in OnCreate of my DataModule and set the SelectedItemIndex in the OnRibbonLoaded event:
procedure TZDataXAddInModule.adxCOMAddInModuleRibbonLoaded(Sender: TObject;
  const RibbonUI: IRibbonUI);
var
  Sel: Integer;
begin
  Sel := 0;
  if ZDataModule.DB = 'Z2' then
    Sel := 1;
  if ZDataModule.Local then
    Inc(Sel, 2);
  tabTools.Controls[0].AsRibbonGroup.Controls[1].AsRibbonDropDown.SelectedItemIndex := Sel;
end;

But I am not sure if it is the best time to do it.
It seems to work though.

Frank
Posted 14 Jul, 2016 11:17:07 Top
Andrei Smolin


Add-in Express team


Posts: 14094
Joined: 2006-05-11
Hello Frank,

The moment is okay. I would probably prefer to do this in the OnRibbonBeforeCreate event. But OnRibbonLoaded is okay as well.

Regards from Belarus (GMT+3),

Andrei Smolin
Add-in Express Team Leader
Posted 15 Jul, 2016 09:30:36 Top