webForumDet fria alternativet

Skapa komponent

10 svar · 350 visningar · startad av Niclas Ohlsson

Niclas OhlssonMedlem sedan juli 200068 inlägg
#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

SweyMedlem 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å.

Niclas OhlssonMedlem 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

SweyMedlem 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).

Niclas OhlssonMedlem 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???

SweyMedlem sedan apr. 20003 971 inlägg
#6

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

Exempel:
delete e;

PeWMedlem 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.

SPiNMedlem 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

UlfTMedlem 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.

PeWMedlem 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. :)

SPiNMedlem 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. :)

126 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)