15. september 2002 - 19:13
Der er
1 kommentar
Sætte objekter på andre formularer i Borland C++ Builder 5.0
Jeg ønsker at sætte en tekststreng på en EditBox fra en anden form, men får en memmory error hele tiden.
Mvh
Bo
16. september 2002 - 10:40
#1
Jeg forstår dit problem derhen, at du vil overføre indholdet fra en TEdit på een form til f.eks. en TLabel på en anden form ?!?
Hvis du får memory-problem, er det sikkert fordi din Form2 ikke er oprettet endnu. Rækkefølgen de forskellige forms bliver oprettet i, kan du se under 'Project->Options' i 'Forms' fanen - alternativt ved at kigge i den .CPP som hedder det samme som dit projekt. Du kan formentlig så løse dit problem, ved ganske enkelt at bygge om på rækkefølgen af de to. (Husk på - første form der dannes, er også den form den vises først - UANSET hvad du gør.
C++ Builder fyrer både constructor, FormCreate, FormActivate og FormShow eventerne af for de forme der dannes i fbm. den FormCreate() der ligger i projekt .CPP'en. Det er kun Paint eventen der "forsinkes" til der bliver lavet Application->Run();
Jeg laver gerne følgende krølle i FormPaint() hvis en ndring af rækkefølgen ikke løser mit problem:
void __fastcall TForm1::FormPaint(TObject *Sender)
{
static bool firstTime = true;
if (firstTime && Form2 != NULL)
{ // ALTID dette først, da kald til andre funktioner kan "trække" en OnPaint
// event, og sende programmet herned igen. (F.eks. ændring af en pro-
// perty.)
firstTime = false;
Form2->Label1->Caption = Edit1->Text;
}
} // FormPaint
Bemærk krøllen omkring Form2 != NULL - hvis Form2 ikke er dannet endnu, vil Form2 indeholde NULL og så kan du ikke bruge den som pointer endnu.