|
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | Spørgsmål angående C+Builder... Fra : Gugge |
Dato : 15-08-02 09:31 |
|
Spørgsmål til C+Builder.
Når man skifter fra en Form(1) til en anden Form(2), og så vil lukke nr. 2.
Hvordan kan man så ved "Exit" lukke hele programmet, jeg kan kun få den til
at lukke
og springe tilbage til den første Form(1)..
------
I runtime kan jeg indsætte en masse Memofelter.
Men hvordan kan jeg holde styr på dem bagefter.
Hvis nu jeg skal skrive noget tekst i nogle af dem efter de er lavet.
Eller nogle af dem skal slettes igen.
Jeg skal vil på en alle anden måde sætte dem i et array og så
søge dette igennem, når jeg skal finde det bestemte Memofelt.
Jeg opbygger på følgende måde:
void TBrugerflade::InsertMemoFelter(TWinControl *Control)
{
for(.........){
for(int x=1; x<AntalLodret+1; x++)
{
sprintf(namebuffer,"objekt%d",x);
TMemo *namebuffer = new TMemo(Control);
namebuffer->Height = 21;
namebuffer->Width = 120;
namebuffer->Left = memoleft;
namebuffer->Top = memotop;
namebuffer->Parent = Control;
memotop += 23;
}
memotop = 40;
memoleft += 145;
}
}
------
En lille test jeg prøver er at få musen >ved højre museknap< til at skrive
navnet på memofeltet ud på en massagebox..
Men det virker ikke helt efter planen.
------
Ved Exit på Form(2) hvordan "free'er" jeg alle de opbyggede objekter i
Runtime.
Da jeg formoder at hukommelsen er fyldt, så skal der jo slettes, ellers
kommer
der et memory leek.. -> "not good".
Er der en smart måde at gøre dette på.?
------
Mvh
Gugge
| |
Ivan Johansen (15-08-2002)
![](/App_Themes/Normal/images/Window/Backgrounds/news.gif) | Kommentar Fra : Ivan Johansen |
Dato : 15-08-02 18:09 |
|
Gugge wrote:
> Spørgsmål til C+Builder.
>
> Når man skifter fra en Form(1) til en anden Form(2), og så vil lukke nr. 2.
> Hvordan kan man så ved "Exit" lukke hele programmet, jeg kan kun få den til
> at lukke
> og springe tilbage til den første Form(1)..
Application->Terminate() afslutter programmet.
> ------
> I runtime kan jeg indsætte en masse Memofelter.
> Men hvordan kan jeg holde styr på dem bagefter.
> Hvis nu jeg skal skrive noget tekst i nogle af dem efter de er lavet.
> Eller nogle af dem skal slettes igen.
> Jeg skal vil på en alle anden måde sætte dem i et array og så
> søge dette igennem, når jeg skal finde det bestemte Memofelt.
> Jeg opbygger på følgende måde:
[snip code]
I stedet for et array ville jeg bruge std::vector. Alternativt kan du
give dine controls et navn:
namebuffer->Name = "Memo" + AnsiString(x);
Du kan så senere bruge navnet til at finde dem ud fra den Control der er
sat som Parent:
if(TMemo *Memo = dynamic_cast<TMemo*>(Control->FindChildControl("Memo1"))
{
}
> ------
> En lille test jeg prøver er at få musen >ved højre museknap< til at skrive
> navnet på memofeltet ud på en massagebox..
> Men det virker ikke helt efter planen.
Prøv at vise hvad du har gjort. "Virker ikke helt efter planen" siger
ikke mig ret meget.
> ------
> Ved Exit på Form(2) hvordan "free'er" jeg alle de opbyggede objekter i
> Runtime.
> Da jeg formoder at hukommelsen er fyldt, så skal der jo slettes, ellers
> kommer
> der et memory leek.. -> "not good".
> Er der en smart måde at gøre dette på.?
> ------
Det er rigtigt at du skal undgå memory leaks. Det smarte er dog at hvis
du sætter Form2 som ejer, vil dine controls automatisk blive nedlagt når
Form2 bliver nedlagt. Ellers skal dine controls nedlægges med delete.
Ivan Johansen
| |
|
|