Zeiger auf eine Funktion übergeben
-
Ich mach das jetzt mal so, wie es im Denkanstoß von WebFritzi steht:
[cpp]
__fastcall TfrmMain::TfrmMain(TComponent* Owner) : TForm(Owner)
{
DBAccess->GetItems(TableName, MenuItem, MenuItemClick); //Fehler
}int TMySQLAccess::GetProcessTableItems(AnsiString sProcessTable, TMenuItem *MenuItem, *TNotifyEvent MenuItemClick)
{
MenuItem->Clear();if (SqlQuery(true, "SELECT id, item FROM "+sProcessTable) != OP_SUCCESS) return OP_FAIL;
while (!mySQLDataModule->mySQLQuery->Eof)
{// untermenü-punkte erstellen
TMenuItem *NewSubItem = new TMenuItem(Application);
NewSubItem->Caption = mySQLDataModule->mySQLQuery->FieldByName("item")->AsString;
NewSubItem->Tag = mySQLDataModule->mySQLQuery->FieldByName("id")->AsInteger;
NewSubItem->OnClick = MenuItemClick;
MenuItem->Add(NewSubItem);mySQLDataModule->mySQLQuery->Next();
}return OP_SUCCESS;
}[/cpp]Leider bringt der Compiler folgende Fehlermeldung:
[C++ Fehler] UMain.cpp(32): E2034 Konvertierung von 'void (_fastcall * (_closure )(TObject *))(TObject *)' nach 'void (_fastcall * (_closure *)(TObject
*)(TObject *)' nicht möglich
Was mache ich da falsch?
-
int TMySQLAccess::GetProcessTableItems(AnsiString sProcessTable, TMenuItem *MenuItem, TNotifyEvent *MenuItemClick)
ähm, warum ein Pointer auf ein Funktionszeiger ?
Schreib so:
int TMySQLAccess::GetProcessTableItems(AnsiString sProcessTable, TMenuItem *MenuItem, TNotifyEvent MenuItemClick)
-
*Strike*
Erstmal danke an alle für die Hilfe. Es funzt wunderbar.
Vorschlage: Das wäre doch mal ein Thema für die FAQ, oder?
-
Original erstellt von F98:
Vorschlage: Das wäre doch mal ein Thema für die FAQ, oder?Nö, finde ich nicht.
-
Warum nicht? Andere sollen doch auch davon profitieren *sozialdenk* :p
-
andere wissen sowas schon.
-
@Sunday soll das heißen, dass du alles weißt..
-
nö, aber das wusste ich auch
-
... bin mir garn nicht bewußt, das ich auch unregistriert gepostet habe ...
-
Weitere OffTopic-Beiträge werden kommentarlos gelöscht.