Mam problem z dynamicznie tworzonym komponentem TPanel. Kiedy skompiluję poniższy kod, otrzymuję komunikat "Access violation(...)".
- Kod: Zaznacz cały
void __fastcall TForm1::MODPLClick(TObject *Sender)
{
static bool WDPLCreated = false;
if(WDPLCreated == false)
{
TPanel *DPL = new TPanel(Form1);
DPL->Width = 10;
DPL->Align = alLeft;
DPL->DockSite = true;
}
if(MODPL->Checked == false)
{
(dynamic_cast<TPanel *>(FindComponent("DPL")))->Show();
Memo1->Left = 10;
MODPL->Checked = true;
}
if(MODPL->Checked == true)
{
(dynamic_cast<TPanel *>(FindComponent("DPL")))->Hide();
Memo1->Left = 0;
MODPL->Checked = false;
}
}
Memo1 - jakiś komponent, tu przykład na Memo1
MODPL - TMenuItem
DPL - Nowy komponent TPanel
WDPLCreated - zapobiega wielokrotnemu tworzeniu TPanel.
I czy polecacie sposób z pojedynczym tworzeniem czy może lepiej po zamknięciu panelu go usuwać za pomocą delete? To raczej powinno zależeć od zastosowania ale może są jakieś zastrzeżenia?




