S
*args*
OnPaint ist denkbar ungünstig um fortwährend neue buttons und bilder zu erzeugen...
gewöhn dir bitte ganz schnell einen optisch besseren programmierstil an, dann findest du deine fehler auch besser!
massig redundante funktionsaufrufe in dem stückchen code
was issn das?
if(D==NULL)delete D;
if(S==NULL)delete S;
was stehtn wie gross btn und img ist?
was is des?
for(int Eintrag_Nummer=0;Eintrag_Nummer<51;Eintrag_Nummer++)
{
//Berechnungen der Position // anmerkung: mal alle if's aufgedröselt!
if (ini->ReadInteger("Enabled","Enbld"+IntToStr(Eintrag_Nummer),1) == 1)
{
if (ini->ReadString("Captions","Cap"+IntToStr(Eintrag_Nummer),"") == "-")
Position=Position+20;
else
{
if (ini->ReadInteger("Enabled","Enbld"+IntToStr(Eintrag_Nummer),1) == 1)
{
if (ini->ReadString("Captions","Cap"+IntToStr(Eintrag_Nummer),"") != "")
{
// .. rest vom code
}
}
}
}
}
if(Form2->btn[Eintrag_Nummer]!=NULL)delete Form2->btn[Eintrag_Nummer];
if(Form2->img[Eintrag_Nummer]!=NULL)delete Form2->img[Eintrag_Nummer];
// hier löschst du deine array
if(Form2->btn!=NULL)delete Form2->btn;
if(Form2->img!=NULL)delete Form2->img;
// und hier greisst du auf die einzelnen elemente zu obwohl du es
// ja gerade gelöscht hast!
Form2->btn[Eintrag_Nummer]=new TDrawdButton(Form2);
Form2->img[Eintrag_Nummer]=new TImage(Form2);
wenn ich das richtig sehe, ändert sich eh nur die position des buttons, wozu erstellst du die dann immer wieder neu?