Quantcast
Channel: ArchiCAD-Talk - Developer Forum
Viewing all 564 articles
Browse latest View live

Create library (LibPart) based on an existing one

$
0
0
Author:ReignBough
Posted: Thu Jul 30, 2015 11:35 am (GMT+1)


I am trying to create a library from an existing one. What I did was just get all the information from the "source" library then copy (and modify) them. I am able to do this but limited to some section. Based on the documentation, ACAPI_LibPart_GetSection() will return APIERR_BADPARS for pictures, macros, etc.

I also followed the example given at the documentation of ACAPI_LibPart_GetSectionList(), modify it so that I will create a "destination" library.

When I called ACAPI_LibPart_GetSection(), I got APIERR_BADPARS and APIERR_NOLIBSECT on some of the sections. This means that the list that I got form ACAPI_LibPart_GetSectionList() have a "non-existing" section; or (as I interpret it) the section exists but the sectionHdl and sectionStr are not valid.

So how am I to copy [, create, and/or modify] these sections:

Sections with APIERR_BADPARS:
* API_SectAncestors
* API_SectCalledMacros
* API_SectInfoGIF

Sections with APIERR_NOLIBSECT:
* API_SectMigrTable
* API_SectCust_Keywords ('KWRD', this section is part of the section list but not part of the definitions, #define API_Sect...)
* API_SectCopyright
_________________
~ReignBough~
[ArchiCAD 18 INT 3006 FULL]
[Windows 7 Pro Intel Core i5 CPU 750 @ 2.67 GHz 8.00 GB 64-bit OS]


[SOLVED] Handler not called

$
0
0
Author:mdelanno
Posted: Sun Aug 02, 2015 7:35 pm (GMT+1)


I've successfully created an addon with the VS wizard. The addon loads itself in ArchiCAD and I see my menu in the Tools main menu. But when I click on my menu item (Sample menu), nothing happens.

Here is my RegisterInterface, Initialize and MenuCommandHandler functions:

Code:

GSErrCode   __ACENV_CALL   RegisterInterface (void)
{
   GSErrCode err = ACAPI_Register_Menu (32500, 32520, MenuCode_Tools, MenuFlag_Default);
   if (err != NoError)
      DBPrintf ("ACAddOn1:: RegisterInterface() ACAPI_Register_Menu failed\n");

   return err;
}   

GSErrCode __ACENV_CALL   Initialize (void)
{
   GSErrCode err = ACAPI_Install_MenuHandler (32500, MenuCommandHandler);
   if (err != NoError)
      DBPrintf ("ACAddOn1:: Initialize() ACAPI_Install_MenuHandler failed\n");

   return err;
}

GSErrCode __ACENV_CALL   MenuCommandHandler (const API_MenuParams *menuParams)
{
   DBPrintf ("ACAddOn1::MenuCommandHandler() %d/%d\n", menuParams->menuItemRef.menuResID, menuParams->menuItemRef.itemIndex);
   
   return NoError;
}


My ACAddOn1.grc file:

Code:

'STR#' 32500 "Menu strings" {
/* [  1] */      "Sample menu"
}

'STR#' 32520 "Status bar strings" {
/* [  1] */      "Sample"
}


If I put breakpoints in RegisterInterface and Initialize, I see they are well executed and NoError is returned. But my breakpoint in MenuCommandHandler is never hit. And there is no output.

I'm using VS 2010 SP1 & Windows 7 & ArchiCAD 18 (build 3006) in demo mode.

[SOLVED] Handler not called

$
0
0
Author:mdelanno
Posted: Sun Aug 02, 2015 8:04 pm (GMT+1)


Found it while writing my post. I was using Dev Kit 19 with ArchiCAD 18! On MyArchiCAD, it's the 18 version which is available. After changing path to Dev Kit 18, it's working.

The file is an outdated Add-On that cannot be used with this

$
0
0
Author:ReignBough
Posted: Tue Aug 04, 2015 9:59 am (GMT+1)


based on my experience, this can be caused by (but not limited to):

* The add-on is for lower version of ArchiCAD.
* The add-on was built with error/s.
* Library file/s (DLL/s) was/were not found on their respective directories.
_________________
~ReignBough~
[ArchiCAD 18 INT 3006 FULL]
[Windows 7 Pro Intel Core i5 CPU 750 @ 2.67 GHz 8.00 GB 64-bit OS]

SQL query, parameter select

$
0
0
Author:Rinovo
Posted: Tue Aug 04, 2015 1:41 pm (GMT+1)


Hi!

I'm using Archicad SQL queries and i would like to select few parameters from all of them.
Single parameter was no problem to get, but got problems getting more.

Tried using this structure :
Code:
SELECT *   
FROM   
flat(objects,parameters) as T_1,   
flat(objects,parameters) as T_2   
WHERE   
(T_1.library_part_name = 'Built-in Elevation Marker')   
and   
(T_1.parameters.variable_name = 'AC_TextPen_1')   
and   
(T_2.parameters.variable_name = 'Tst_1')   
and   
(T_1.parameters.value = T_2.parameters.value)
from : http://archicad-talk.graphisoft.com/viewtopic.php?t=26969

Used it like this :
Code:
 
SELECT   xx.parameters.value, yy.parameters.value 
from   
flat (objects,parameters) as xx, 
flat (objects,parameters) as yy   
where (library_part_name like 'Wal%') 
and (xx.parameters.name like'Wid%' or yy.parameters.name like'Mod%')

Archicad just freezes, no error nothing just not responding.
Any suggestions ?

The file is an outdated Add-On that cannot be used with this

$
0
0
Author:mdelanno
Posted: Tue Aug 04, 2015 2:17 pm (GMT+1)


ReignBough wrote:

* The add-on is for lower version of ArchiCAD.


or upper...

To check the third point, download and install Dependency Walker (http://www.dependencywalker.com/)

Open your APX, go to Options, Configure Module Search Order... Browse to the ArchiCAD install directory (C:\Program Files\GRAPHISOFT\ArchiCAD xx) and click Add directory, then click on OK. When DW ask you if you want to refresh, answer by Yes. You should then have no module load errors (except for some special DLL like API-MS-WIN-*.DLL or DCOMP.DLL).

To check the first point, you can use the DUMPBIN utility. Dump the imports of your APX, go to the GSRoot.dll section and note the hint before one of the imported functions (?DBPrintf@@YAXPEBDZZ for example; the hint is 911 for ArchiCAD 18 ). Then dump the export of GSROOT.dll, retrieve the ?DBPrintf@@YAXPEBDZZ function and check if the hint column matches. If not, it's because you have built your APX with the wrong version of the DevKit.

You can also use DW. Select GSROOT.dll in the tree, then select the ?DBPrintf@@YAXPEBDZZ in the list of exported functions. Then, in the contextual menu, choose Highlight Matching Import Function. If the hints are different, then the APX is not build for the installed ArchiCAD.

C++ TabControl multi tab issue

$
0
0
Author:ggiloyan
Posted: Wed Aug 05, 2015 2:51 pm (GMT+1)


I have a TabControl (NormalTab) which has two tab

I have five classes to implement my TabControl
There is one main dialog class and two class for each tab.

My dialog opens without any problem. First tab events fires without any problem. The only problem is that second tab events (ButtonClicked) do not fire and I can not change any control text in second tab.

Here is my whole code.

resource file
Code:


'GDLG'   32511   Modal    0   0    444  174  "Upload IFC" {
/* [  1] */ NormalTab           0   0  428 148
                          32512 NoIcon "New"
                          32513 NoIcon "Existing"

}

'DLGH'  32511  DLG_32511_Upload_IFC {
1   ""                     uploadTabControl
}

'GDLG'  32512    TabPage  0    0 428 134  "" {
/* [  1] */  LeftText           13   23   84   13  LargePlain      "Model file name:"
/* [  2] */  TextEdit         104  18   293  20  LargePlain      256
/* [  3] */  Separator          13   53   385  1
/* [  4] */  Button            241  68     75   23  LargePlain      "Cancel"
/* [  5] */  Button            322  68     75   23  LargePlain      "Upload"
}

'DLGH'  32512  TabPage_32512 {
1   ""                     lblModelName_New
2   ""                     txtModelName
3   ""                     seperator_0
4   ""                     btnCancel
5   ""                     btnUpload
}

'GDLG'  32513    TabPage  0    0 428 134  "" {
/* [  1] */  LeftText           13   23   84   13  LargePlain      "Model file name:"
/* [  2] */  PopupControl      104  18   293  20  144 0
/* [  3] */  Separator          13   53   385  1
/* [  4] */  Button            241  68     75   23  LargePlain      "Cancel"
/* [  5] */  Button            322  68     75   23  LargePlain      "Upload"
}

'DLGH'  32513  TabPage_32513 {
1   ""                     lblModelName_Existing
2   ""                     comboModelName
3   ""                     seperator_2
4   ""                     btnCancel
5   ""                     btnUpload
}



.h file

Code:

class ExportDialog : public DG::ModalDialog
{

   friend class NewTabControl;
   friend class NewTabControlObserver;

   friend class EditTabControl;
   friend class EditTabControlObserver;

private:

   enum ui  {
   
      id = 32511,
      normalTabID = 1
   };

   DG::NormalTab   m_normalTab;
   
   NewTabControl      *m_newTabControl;   
   NewTabControlObserver  *m_newTabObserver;
   
   EditTabControl      *m_editTabControl;
   EditTabControlObserver   *m_editTabObserver;

public:
   ExportDialog();
   ~ExportDialog();

private:
   ExportDialog(const ExportDialog&);
   const   ExportDialog& operator=(const ExportDialog&); //Disabled

};

// ----------------------------------------------- New tabe class----------------------------------------------------

class NewTabControl : public DG::TabPage
{
   friend class NewTabControlObserver;

private:
   
   enum ui {
      
      TabID = 32512,
      lblModelNameID = 1,
      txtModelNameID = 2,
      seperator0ID = 3,
      btnCancelID = 4,
      btnUploadID = 5
   };

   DG::TextEdit   m_txtModelName;
   DG::Button      m_btnCancel;
   DG::Button      m_btnSave;

public:
   NewTabControl( const DG::TabControl& tabControl, short tabItem );
   ~NewTabControl( void );
};

class EditTabControl : public DG::TabPage
{
   friend class EditTabControlObserver;

private:
   
   enum ui {
      
      TabID = 32513,
      comboModel = 2,
      btnCancelID = 4,
      btnUploadID = 5
   };

   DG::PopUp      m_comboModel;
   DG::Button      m_btnCancel;
   DG::Button      m_btnSave;

public:
   EditTabControl( const DG::TabControl& tabControl, short tabItem );
   ~EditTabControl( void );
};


// ----------------------------------------------- TabControlObserver -----------------------------------------------

class NewTabControlObserver :  public DG::PanelObserver,
               public DG::NormalTabObserver,
               public DG::ButtonItemObserver,
               public DG::CompoundItemObserver
{
private:
   NewTabControl      *m_newTabControl;
   ExportDialog      &mainDialog;

protected:
   // DG::PanelObserver
   virtual void   PanelOpened (const DG::PanelOpenEvent& ev) override;
   // DG::ButtonItemObserver
   virtual void   ButtonClicked (const DG::ButtonClickEvent& ev) override;

public:
   explicit      NewTabControlObserver (NewTabControl* newTabControl, ExportDialog &exportDialog);
   ~NewTabControlObserver ();
};

// ----------------------------------------------- EditControlObserver -----------------------------------------------

class EditTabControlObserver : public DG::PanelObserver,
               public DG::NormalTabObserver,
               public DG::ButtonItemObserver,
               public DG::CompoundItemObserver
{
private:
   EditTabControl      *m_EditTabControl;
   ExportDialog      &mainDialog;

protected:
   // DG::PanelObserver
   virtual void   PanelOpened (const DG::PanelOpenEvent& ev) override;

   // DG::ButtonItemObserver
   virtual void   ButtonClicked (const DG::ButtonClickEvent& ev) override;

public:
   explicit      EditTabControlObserver (EditTabControl* editTabControl, ExportDialog &exportDialog);
   ~EditTabControlObserver ();
};


.cpp

Code:


ExportDialog::ExportDialog() :
ModalDialog (ACAPI_GetOwnResModule (), ui::id, InvalidResModule),
   m_normalTab(GetReference (), ui::normalTabID),

   m_newTabControl(new NewTabControl(m_normalTab, ui::normalTabID)),
   m_newTabObserver(new NewTabControlObserver(m_newTabControl, *this)),

   m_editTabControl(new EditTabControl(m_normalTab, ui::normalTabID)),
   m_editTabObserver(new EditTabControlObserver(m_editTabControl, *this))
{

}

ExportDialog::~ExportDialog()
{
   delete m_newTabObserver;
   delete m_newTabControl;
}

//------------------------------ NewTabClass --------------------------------

NewTabControl::NewTabControl (const DG::TabControl& tabControl, short tabItem):
      DG::TabPage         (tabControl, tabItem, ACAPI_GetOwnResModule(), ui::TabID, ACAPI_GetOwnResModule ()),
      m_txtModelName      (GetReference (), ui::txtModelNameID),
      m_btnCancel(GetReference (), ui::btnCancelID),
      m_btnSave(GetReference (), ui::btnUploadID)
{
 
}
 
NewTabControl::~NewTabControl ()
{
   
}


//-----------------------------------------------------------------EditTabClass----------------------------------------------------------
 
EditTabControl::EditTabControl (const DG::TabControl& tabControl, short tabItem):
DG::TabPage         (tabControl, tabItem, ACAPI_GetOwnResModule(), ui::TabID, ACAPI_GetOwnResModule ()),
      m_comboModel      (GetReference (), ui::comboModel),
      m_btnCancel(GetReference (), ui::btnCancelID),
      m_btnSave(GetReference (), ui::btnUploadID)
{
 
   this->m_btnCancel.SetText("ascaca");
}
 
EditTabControl::~EditTabControl ()
{
}


//-------------------------- Class TabControlObserver -----------------------

NewTabControlObserver::NewTabControlObserver (NewTabControl* newTabControl, ExportDialog &exportDialog):
   m_newTabControl (newTabControl),
   mainDialog(exportDialog)
{
   m_newTabControl->Attach (*this);
   AttachToAllItems (*m_newTabControl);
}


NewTabControlObserver::~NewTabControlObserver ()
{
   m_newTabControl->Detach (*this);
   DetachFromAllItems (*m_newTabControl);
}


void NewTabControlObserver::PanelOpened (const DG::PanelOpenEvent& ev)
{
 
}
 
void NewTabControlObserver::ButtonClicked (const DG::ButtonClickEvent& ev)
{
   // Close dialog with acceptance
   
   if (ev.GetSource () == &m_newTabControl->m_btnCancel) {
    
      mainDialog.PostCloseRequest(DG::ModalDialog::Accept);

    } 
   else if ( ev.GetSource() == &m_newTabControl->m_btnSave )
   {
      
      
   }
}

//---------------------------------------------------------------------------------------------------------------------------------------------------------

//-------------------------- Class TabControlObserver -----------------------

EditTabControlObserver::EditTabControlObserver (EditTabControl* editTabControl, ExportDialog &exportDialog):
   m_EditTabControl (editTabControl),
   mainDialog(exportDialog)
{
   m_EditTabControl->Attach (*this);
   AttachToAllItems (*m_EditTabControl);
}


EditTabControlObserver::~EditTabControlObserver ()
{
   m_EditTabControl->Detach (*this);
   DetachFromAllItems (*m_EditTabControl);
}


void EditTabControlObserver::PanelOpened (const DG::PanelOpenEvent& ev)
{
 
}
 
 
void EditTabControlObserver::ButtonClicked (const DG::ButtonClickEvent& ev)
{
   // Close dialog with acceptance
   
   if (ev.GetSource () == &m_EditTabControl->m_btnCancel) {
    
      mainDialog.PostCloseRequest(DG::ModalDialog::Accept);

    } 
   else if ( ev.GetSource() == &m_EditTabControl->m_btnSave )
   {
      
      
   }
}


Custome value User control

$
0
0
Author:Rinovo
Posted: Mon Aug 31, 2015 2:08 pm (GMT+1)


Code:
DG::PopUp                     databasePopup;
int SelectedIndex = databasePopup.GetSelectedItem();


Hello,

I get selected PopUp menu item after closing ModalDialog, but i need to get chosen item reach time it has been changed in PopUp menu inside ModalDialog.

I belive i need to make PopUp menu observer but i don't know how to make one.


Custome value User control

$
0
0
Author:Oleg
Posted: Mon Aug 31, 2015 3:26 pm (GMT+1)


Rinovo wrote:
Maybe someone have example of using PopUpControls?


Below is cutted source code.
( It is a TabPage, not a ModalDialog )

Code:

class TabAuxLogItem
   : public DG::TabPage
   , private DG::PopUpObserver
{
public:

   TabAuxLogItem( const DG::TabControl& tabControl, short tabItem=1 );
   ~TabAuxLogItem();

private:
   
   virtual void   PopUpChanged (const DG::PopUpChangeEvent& ev);

private:
   DG::PopUp         mi_prf;
};


Code:

TabAuxLogItem::TabAuxLogItem( const DG::TabControl& tabControl, short tabItem )
   : DG::TabPage( tabControl, tabItem, ACAPI_GetOwnResModule(), RTAB_AUXL_ITEM, ACAPI_GetOwnResModule() )
   , mi_prf( GetReference(), PRF )
{
   mi_prf.Attach( *this );
}

TabAuxLogItem::~TabAuxLogItem()
{
   mi_prf.Detach( *this );
}

void TabAuxLogItem::PopUpChanged (const DG::PopUpChangeEvent& ev)
{
   if ( ev.GetSource() == &mi_prf )
   {
      UID id = (UID)mi_prf.GetItemValue( mi_prf.GetSelectedItem() );
      UpdateProfileID( id );
   }
}

Elevation Hotspots

$
0
0
Author:ReignBough
Posted: Tue Sep 01, 2015 6:25 am (GMT+1)


I've created a function that prints the API_PrimHotspot of the parent element of an API_SectElemType (based on its parentGuid) from an elevation view. When I mapped the coordinates of the neig of these primitive hotspots, it fits perfectly on the floor plan view of the object (door in this case).

The question is: How do I get the hotspots of an elevation view?

BTW, the returned API_PrimHotspot has the following values:

Code:
head.typeID: API_ZombiePrimID
head.layer: 0
head.pen: 0
head.drwIndex: 0
head.renovationStatus: API_DefaultStatus
loc: <<varies>>
neig.neigID: APINeig_Door
neig.guid: <<door GUID>>
neig.inIndex: <<shown in the attached image, 1-23>>
neig.flags: API_NeigFlg_Normal
neig.elemPartType: APINeigElemPart_None
neig.elemPartIndex: 0


This question might also apply on Section and Interior Elevation.

EDIT (2015 Sep 03):

Using the hotspot's memo values for dimElems, I was able to get the inIndex of the door's hotspot on elevation view: 1-4 for the four corners; and, 25-26 for the two inner corner on top. These indices are different from the original post. As you can see, index 1 on previous post is in the middle while here it is in the side. Also, indices 25 and 26 is not on the original post.
_________________
~ReignBough~
[ArchiCAD 18 INT 3006 FULL]
[Windows 7 Pro Intel Core i5 CPU 750 @ 2.67 GHz 8.00 GB 64-bit OS]

Custome value User control

$
0
0
Author:ggiloyan
Posted: Tue Sep 01, 2015 6:29 am (GMT+1)


this->m_comboModels defined in .h file
like this

Code:
DG::PopUp         m_comboModels;


in your cpp file you can fill it by this way

Code:
this->m_comboModels.DeleteItem(DG::PopUp::AllItems);
for (int i = 0; i < <your array>; i++)
{
   this->m_comboModels.AppendItem();
   this->m_comboModels.SetItemText (DG::PopUp::BottomItem, GS::UniString::Printf("%s", <display member>));
   this->m_comboModels.SetItemValue (DG::PopUp::BottomItem, <value member>);
}


If you need to catch on selected change event of your popup control then you should inherit your dialog or pallete class from public DG::PopUpObserver

and use like this

.h
Code:
void   PopUpChanged(const DG::PopUpChangeEvent& e);


.cpp

Code:
void PopUpChanged(const DG::PopUpChangeEvent& e)
{
   Int32 selValue = TruncateTo32Bit(e.GetSource()->GetItemValue(this->m_comboModels.GetSelectedItem ()));
}

Color control

$
0
0
Author:ReignBough
Posted: Thu Sep 03, 2015 7:40 am (GMT+1)


You can use DGGetColor() function.
_________________
~ReignBough~
[ArchiCAD 18 INT 3006 FULL]
[Windows 7 Pro Intel Core i5 CPU 750 @ 2.67 GHz 8.00 GB 64-bit OS]

Custome value User control

$
0
0
Author:Rinovo
Posted: Thu Sep 03, 2015 8:13 am (GMT+1)


Thanks Oleg, thanks Ggiloyan!

Got it working now Smile

Custome value User control

$
0
0
Author:Rinovo
Posted: Fri Sep 04, 2015 9:22 am (GMT+1)


Now i have different problem.

IconPushRadio Buttons haven't got icon. I changed my modal dialog from DGLCALLBACK structure to observer structure. And now i don't have Icon for radio Buttons.
GRC:
Code:
 IconPushRadio        8   22   52   52  1    32107

.hpp
Code:
RadioOneID = 4,
/...
DG::IconPushRadio                 RadioOne;

.cpp
Code:
RadioOne       (GetReference (),RadioOneID)


As i was writing this found a way to initialize icon with
Code:
RadioOne.SetIcon(DG::Icon(ACAPI_GetOwnResModule (),32106 ));


Previously SetIcon had errors using with pointers and DG::Icon class, solved them just now.

This is only way to get Icons, or is it a bug ? Or i might have other errors ?

Custome value User control

$
0
0
Author:Oleg
Posted: Fri Sep 04, 2015 1:02 pm (GMT+1)


IconPushRadio will show an icon from GRC by default.
Use SetIcon if you need to change it only.

Make sure the icon GRC text valid and correct icon's ID.
In you example is 32107 or 32106 correct.

Addition:
Make sure you pass valid parameters to ModalDialog constructor.
See ACAPI_GetOwnResModule() as 1 and 3 parameter.
: ModalDialog( ACAPI_GetOwnResModule(), RDLG_ABOUT, ACAPI_GetOwnResModule() )


Custome value User control

$
0
0
Author:Rinovo
Posted: Mon Sep 07, 2015 7:33 am (GMT+1)


Thanks, Oleg!

My constructor didn't had ACAPI_GetOwnResModule() as 3rd parameter.
Now everything works like it should.

Thanks again, Oleg.

Surface/Material catalog

$
0
0
Author:Rinovo
Posted: Mon Sep 07, 2015 2:11 pm (GMT+1)


Hello!

Is it possible to edit Archicad Surface catalog and add costume surface so with each new project they are accessible in surface catalog. Now i have to add costume surface each time i start new project.

Or make costume surface catalog and add it each time new project is started?
So far haven't found a clue to achieve this.

Is it even possible to operate with surface/material catalog ?

Surface/Material catalog

$
0
0
Author:Barry Kelly
Posted: Tue Sep 08, 2015 1:37 am (GMT+1)


Rinovo wrote:
Now i have to add costume surface each time i start new project.


This is why it is important to set up your own template that you start each job from.
Add your surfaces as well as other things like wall/slab/roof composites, layers and layer combinations, pen colours, sections and elevations, views, layouts, publisher sets, etc., etc.

Everything that you set up in each job you should set up in your template so you don't need to do it each time you start a new job.
The template will always be evolving as you realise in a job that you need something new or can change what you have.

So as you work in a job you can use the Attribute Manager or copy & paste to transfer your new setups to the template or just make the same changes in the template as well.
Or you can complete the job but then strip out the model and save that as you new template.

Also be sure to load extra libraries in your template that contain the textures used for your surfaces so they are automatically when you start your new jobs.

Barry.
_________________
Versions 6.5 to 18 (build 3006)
Dell Precision T3600 - Xeon ES-1620 0 at 3.6Ghz, 16GB ram, ATI FirePro W7000 (4GB), Windows 7 (64 bit)
Dell Precision M6800 - i7 4700MQ @ 2.40GHz, 16GB RAM, AMD FirePro M6100 (2GB), Windows 7 64bit

Surface/Material catalog

$
0
0
Author:Rinovo
Posted: Tue Sep 08, 2015 7:34 am (GMT+1)


Didn't thought of that.

Sounds like i can get everything using templates and without using API.


Thanks Berry!

SingleSelListBox header

$
0
0
Author:Kinstewar
Posted: Tue Sep 08, 2015 1:39 pm (GMT+1)


Hello

How to set up header columns?
I'm doing the following but it shows the first column only

lbNodes.SetHeaderItemCount(5);

lbNodes.SetHeaderItemSize(1, 50);
lbNodes.SetHeaderItemSize(2, 50);
lbNodes.SetHeaderItemSize(3, 50);
lbNodes.SetHeaderItemSize(4, 50);
lbNodes.SetHeaderItemSize(5, 50);

lbNodes.SetHeaderItemText(1, "Name");
lbNodes.SetHeaderItemText(2, "User");
lbNodes.SetHeaderItemText(3, "CPU");
lbNodes.SetHeaderItemText(4, "GPU");
lbNodes.SetHeaderItemText(5, "GPU Load");


lbNodes.AppendItem ();
lbNodes.SetTabItemText(DG::ListBox::BottomItem, 1, "server1");
lbNodes.SetTabItemText(DG::ListBox::BottomItem, 2, "user1");
lbNodes.SetTabItemText(DG::ListBox::BottomItem, 3, "1");
lbNodes.SetTabItemText(DG::ListBox::BottomItem, 4, "2");
lbNodes.SetTabItemText(DG::ListBox::BottomItem, 5, "50%");

Viewing all 564 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>