/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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)
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


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste