Kim006 Цитата: Не в том суть, хоть от Tag это не принципиально, просто хочется убрать цикл и использовать какой нить стандартный класс грида, если конечно такой имеется, что я и хотел выяснить.
(типа что то вроде этого ->IndexOfItem(GetColumnByFieldName("XXXX")) только для TableView а не DBTableView)
Вот поэтому я и обратил в свое время внимание на InfoPower и EhLib, хотя с другой стороны поиск по имени осуществляется тем же самым циклом, что и у тебя, так что ничего страшного по моему..
Цитата: Как до него достучатся, изначально у меня на форме только cxGrid1 и все, без единого уровня и без таблиц. Софтина конектится к mySQL (юзаю libmysql.dll, в перспективе Pervasive) серваку забирает конфигурацию и ДИНАМИЧЕСКИ.....
Не буду утверждать, но помоему решение лежит в плосткости динамического добавления обработчиков событий. Например так как тут: ms-help://embarcadero.rs2009/delphivclwin32/Menus_TMenuItem_OnClick.html - это тема в справке для студии 2009.. Вкратце вот [more=пример]
Код: /*
This example demonstrates how to add and delete menu items
to a popup menu at runtime and assign an event handler to
the OnClick event. Place a TPopupMenu and three buttons on
the form named "AddButton", "EditButton", and
"DestroyButton" and add OnClick events to all three buttons.
Put the TPopupMenu in the PopupMenu property of the form.
Place the PopupMenuItemsClick procedure in the TForm1 type
declaration so that it can be used as the method call for
the menu item OnClick event.
*/
void __fastcall TForm1::AddButtonClick(TObject *Sender)
{
// The owner (PopupMenu1) will cleanup this menu item.
TMenuItem *NewItem = new TMenuItem(PopupMenu1); // create the new item
int index = PopupMenu1->Items->Count;
PopupMenu1->Items->Add(NewItem);// add it to the Popupmenu
NewItem->Caption = "Menu Item " + IntToStr(index);
NewItem->Tag = index;
NewItem->OnClick = PopupMenuItemsClick;// assign it an event handler
TNotifyEvent();
}
void __fastcall TForm1::PopupMenuItemsClick(TObject *Sender)
{
TMenuItem *ClickedItem = dynamic_cast<TMenuItem *>(Sender);
if (ClickedItem)
{
switch (ClickedItem->Tag)
{
case 0:
{
ShowMessage("first item clicked");
break;
}
case 1:
{
ShowMessage("second item clicked");
break;
}
case 2:
{
ShowMessage("third item clicked");
break;
}
case 3:
{
ShowMessage("fourth item clicked");
break;
}
}
}
}
/*
To edit or destroy an item, grab its pointer via the Items
property.
*/
void __fastcall TForm1::EditButtonClick(TObject *Sender)
{
const int index = 1;
TMenuItem *ItemToEdit = PopupMenu->Items->Items[index];
ItemToEdit->Caption = "Changed Caption";
}
void __fastcall TForm1::DestroyButtonClick(TObject *Sender)
{
const int index = 2;
TMenuItem *ItemToDelete = PopupMenu->Items->Items[index];
delete ItemToDelete;
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
const int num_items = 4;
for (int index = 0; index < num_items; ++index)
{
// The owner (PopupMenu1) will cleanup this menu item.
TMenuItem *NewItem = new TMenuItem(PopupMenu1); // create the new item
PopupMenu1->Items->Add(NewItem);// add it to the Popupmenu
NewItem->Caption = "Menu Item " + IntToStr(index);
NewItem->Tag = index;
NewItem->OnClick = PopupMenuItemsClick;// assign it an event handler
TNotifyEvent();
}
}