webForumDet fria alternativet

Skapa komponent

C/C++

10 svar · 352 visningar · startad av Niclas Ohlsson

Medlem sedan juli 200068 inlägg
Frågan#1

Hur gör man för att skapa flera komponenter genom att trycka på en knapp!
I Borland C++Builder 3

Jag vill skapa en label och en edit-ruta varje gång man trycker på en knapp i programmet

Medlem sedan apr. 20003 971 inlägg
#2

Om du vill skapa en textruta använder du klassen TEdit. Skapa klassen på heapen och ange dess egenskaper.

Exempel: (Koden måste placeras i en funktion tillhörande form-klassen)
TEdit *e = new TEdit(this); // this är ägaren, när ägaren frigörs så frigörs även e
e->Parent = this;
e->Visible = true;

Om den inte syns får du ändra Left, Top, Width och Height också.

Medlem sedan juli 200068 inlägg
#3

Men går det att skapa flear stycken då ., för när jag trycker på knappen så vet jag inte hur många rutor som skall skapas,. det bestäms av en variabel

Medlem sedan apr. 20003 971 inlägg
#4

Kör koden flera gånger.

Vill du kunna komma åt dem efteråt får du lägga till dem i en lista (t.ex. TList eller std::vector).

Medlem sedan juli 200068 inlägg
#5

OK tack det funkar.,.,
Ett till fråga: Hur tar man bort komponenten utan att behöva
stänga av programmet???

Medlem sedan apr. 20003 971 inlägg
#6

Objektet är skapat på heapen med new. Då tar du bort det med delete.

Exempel:
delete e;

Medlem sedan juni 200010 432 inlägg
#7

Man måste alltid ta bort det man allokerat med "new" genom destruktorn (delete), annars tenderar minnet ta slut förr eller senare. S.k minnesläcka ;)

Läste nånstans på nåt annat forum för en tid sen hur folk som kallade sig för programmerare ihärdigt påstod att operativet löste sånt självt... en tämligen oseriös inställning.

Medlem sedan mars 20007 896 inlägg
#8

Kan man inte bygga in någon s.k. garbage collector till sina applikationer? Det är ju så lätt att glömma bort att använda delete... ;)

Men det finns väl antagligen ingen chans att leta reda på objekt som ligger på heapen på något finurligt sätt. :l

Medlem sedan maj 20018 027 inlägg
#9

Kan man inte bygga in någon s.k. garbage collector till sina applikationer?

Gissningsvis lär man väl förlora i prestanda då, precis som man gör i språk med garbage collector.

Medlem sedan juni 200010 432 inlägg
#10

SPiN->
Tja... problemet är ju när man nästlar objekten ;)
En garbagecollector vore inte dumt, men precis som i Java så suger det resurser.
Å andra sidan är det endast en vanefråga och gör man det enkelt för sig genom designen ska det inte vara svårt att snurra upp spiralen baklänges. :)

Medlem sedan mars 20007 896 inlägg
#11

Ja, det är sant - men det är ändå en rätt fräck funktion tycker jag. När ett objekt inte används längre så frigörs det minne - och att kolla upp ett objekt tar väl sin tid också. Använder man delete där det ska användas ( dvs. när man inte använder sina objekt mer ) så är det logiskt att det går snabbare. :)

PeW> Word. :)

377 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
122 ms — hämta statistik (db)
127 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)