Komponente via Postmessage löschen



  • Hi,

    in meiner Anwendung, habe ich mir eine Komponente, abgeleitet von TPanel gebastelt, mit der ich mir beliebige Elemente auf mein Formular erstellen kann.

    Nun möchte ich bestimmte Elemente wieder entfernen. Problem ist, dass diese Elemente sich selbst löschen müssen. Daher nutze ich PostMessage. Hier mein Code:

    for (int i=0; i < Form1->ComponentCount; i++)
    {
       // Komponente anhand des Captions suchen
       if (Form1->Components[i]->ClassNameIs("TMyGroupBox"))
       {
          if (dynamic_cast<TMyGroupBox*>(Form1->Components[i])->Caption == CDeleteTable->Items->Strings[CDeleteTable->ItemIndex])
          {
             // so war es vorher
             //TMyGroupBox *newbox = dynamic_cast<TMyGroupBox*>(Form1->Components[i]);
             //delete newbox;
    
             PostMessage(Handle, APPWM_DELETE_IMAGE, 0, reinterpret_cast<TMyGroupBox*>(Form1->Components[i]));
    
             // Elemente neu anordnen
             OrderMyGroupBox();
    
             // fertig
             break;
          }
       }
    

    Vorher hatte ich diese Zeilen genutzt um die Elemente zu löschen:

    TMyGroupBox *newbox = dynamic_cast<TMyGroupBox*>(Form1->Components[i]);

    delete newbox;

    Dies lief wunderbar, nur seitdem die Elemente sich selbst löschen müssen, benötige ich PostMessage.

    Ich bekomme diese Fehler:

    [C++ Fehler] main.cpp(561): E2034 Konvertierung von 'TMyGroupBox *' nach 'long' nicht möglich
    [C++ Fehler] main.cpp(561): E2342 Keine Übereinstimmung des Typs beim Parameter 'lParam' ('long' erwartet, 'TMyGroupBox *' erhalten)

    Wer kann mir helfen?

    Max



  • Wenn du den Fehler nicht mehr erhalten willst, dann schreibe

    PostMessage(Handle, APPWM_DELETE_IMAGE, 0, (LPARAM)Form1->Components[i]);
    

Log in to reply