/ 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
Indsæt Automatisk Memo felter og andre Obj~
Fra : Gugge


Dato : 05-08-02 15:49

Hej

Jeg sidder og laver et setup program til en brugerflade, men jeg har lidt
problemer
med at lave automatisk opbygning af brugerfladen.

Ved at indtaste fx. 6 i et felt angående hvor mange memofelter der skal
opbygges
på brugerfladen, skal man ved at trykke på en knap frembringe den
automatiske opbygning.

Jeg har prøvet med noget ligende:

void __fastcall TBagground::testbuttonClick(TObject *Sender)
{
TMemo *memo1 = new TMemo(memo1); ????
memo1->Left = 100;
memo1->Top = 500;
}
men det duer ikke!!!

Men hvordan får jeg lavet dette.
Jeg kan ikke finde formen for at indsætte objekter efter at programmet
kører.

Er der nogen der kan hjælpe mig, så er jeg evigt taknemmeligt ....

Mvh

Gugge





 
 
Ivan Johansen (05-08-2002)
Kommentar
Fra : Ivan Johansen


Dato : 05-08-02 19:48

Gugge wrote:

> void __fastcall TBagground::testbuttonClick(TObject *Sender)
> {
> TMemo *memo1 = new TMemo(memo1); ????
> memo1->Left = 100;
> memo1->Top = 500;
> }


Du kan ikke sætte memo1 som owner, specielt ikke da memo1 endnu ikke er
initialiseret. Du ønsker formentligt at den form, der opretter den er ejer:
TMemo *memo1 = new TMemo(this);

Du skal også angive hvor den skal vises. Dette gøres ved at sætte Parent:
Memo1->Parent = this;

Samlet får du:

void __fastcall TBagground::testbuttonClick(TObject *Sender)
{

TMemo *memo1 = new TMemo(this);

memo1->Parent = this;
memo1->Left = 100;
memo1->Top = 500;
}


Ivan Johansen


Gugge (06-08-2002)
Kommentar
Fra : Gugge


Dato : 06-08-02 19:54

Jeg har lige et extra spørgsmål til dette emne.
Hvordan får jeg slettet et evt memofelt, som jeg opretter i Runtime....(af
programmet)
For hvis jeg opretter i programmet et felt der hedder memo1:

void __fastcall TBagground::testbuttonClick(TObject *Sender)
{
TMemo *memo1 = new TMemo(this); >
memo1->Parent = this;
}
Hvordan kan dette Objekt blive slettet igen, da jeg jo ikke kan skrive i
koden en delete funktion til dette
objekt, fordi programmet ved jo ikke endnu at det bliver oprettet..

Hvordan gøres dette....

Mange tak for svar..

Gugge
...............................
----------------------------------------------------------------------------
-----------------------------------------------------


"Ivan Johansen" <NG@Padowan.dk> skrev i en meddelelse
news:3D4EC845.1060401@Padowan.dk...
> Gugge wrote:
>
> > void __fastcall TBagground::testbuttonClick(TObject *Sender)
> > {
> > TMemo *memo1 = new TMemo(memo1); ????
> > memo1->Left = 100;
> > memo1->Top = 500;
> > }
>
>
> Du kan ikke sætte memo1 som owner, specielt ikke da memo1 endnu ikke er
> initialiseret. Du ønsker formentligt at den form, der opretter den er
ejer:
> TMemo *memo1 = new TMemo(this);
>
> Du skal også angive hvor den skal vises. Dette gøres ved at sætte Parent:
> Memo1->Parent = this;
>
> Samlet får du:
>
> void __fastcall TBagground::testbuttonClick(TObject *Sender)
> {
>
> TMemo *memo1 = new TMemo(this);
>
> memo1->Parent = this;
> memo1->Left = 100;
> memo1->Top = 500;
> }
>
>
> Ivan Johansen
>



Ivan Johansen (06-08-2002)
Kommentar
Fra : Ivan Johansen


Dato : 06-08-02 21:35

Gugge wrote:

> Jeg har lige et extra spørgsmål til dette emne.
> Hvordan får jeg slettet et evt memofelt, som jeg opretter i Runtime....(af
> programmet)
> For hvis jeg opretter i programmet et felt der hedder memo1:
>
> void __fastcall TBagground::testbuttonClick(TObject *Sender)
> {
> TMemo *memo1 = new TMemo(this); >
> memo1->Parent = this;
> }
> Hvordan kan dette Objekt blive slettet igen, da jeg jo ikke kan skrive i
> koden en delete funktion til dette
> objekt, fordi programmet ved jo ikke endnu at det bliver oprettet..
>
> Hvordan gøres dette....

Dit problem er at du gemmer memo1 inde i funktionen, så den ikke kan
tilgås fra andre funktioner. I stedet kan du gemme den i klassen. Da du
formentligt vil oprette et på ukendt antal kan du gemme dem i en
std::vector.

I klassedefinitionen skriver du:
std::vector<TMemo*> MemoVector;

Når du opretter komponenter skriver du:
TMemo *Memo = new TMemo(this);
Memo->Parent = this;
MemoVector.push_back(Memo);


Du kan så senere tilgå dine komponenter gennem MemoVector. Du kan f.eks.
slette dem alle:
for(unsigned I = 0; I < MemoVector.size(); I++)
delete MemoVector[I];
MemoVector.clear();

Bemærk dog at du angiver din form som ejer, hvilket betyder at
komponenterne automatisk bliver nedlagt når formen nedlægges medmindre
du selv har gjort det før. Du må derfor ikke selv nedlægge komponenterne
efter at ejeren er blevet nedlagt.

Ivan Johansen


Gugge (06-08-2002)
Kommentar
Fra : Gugge


Dato : 06-08-02 20:36

Men når man indsætte et nyt objekt og "attach'er " det til den rigtige form,
så kan det går hen og
forsvinde helt.
Jeg har prøvet at indsætte en PageControl, og et par tabsheets..2 stk..
Dette skal også gøres "During Runtime"..

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TPageControl *PageControl1 = new TPageControl(this);
PageControl1->Parent = this;
PageControl1->Left = 30;
PageControl1->Top = 100;
PageControl1->Width = 150;

TTabSheet *One = new TTabSheet(PageControl1);
One->Parent = PageControl1;
One->Enabled = true;
One->Caption = "One";
One->Height = 300;
One->Width = 400;

TTabSheet *Two = new TTabSheet(PageControl1);
Two->Parent = PageControl1;
Two->Enabled = true;
Two->Caption = "Two";
Two->Height = 300;
Two->Width = 400;
}
Men her forsvinder, eller rettere: de dukker slet ikke op på skærmen.
Man kan kun se PageControl en grå boks...

Gugge

-------------



"Ivan Johansen" <NG@Padowan.dk> skrev i en meddelelse
news:3D4EC845.1060401@Padowan.dk...
> Gugge wrote:
>
> > void __fastcall TBagground::testbuttonClick(TObject *Sender)
> > {
> > TMemo *memo1 = new TMemo(memo1); ????
> > memo1->Left = 100;
> > memo1->Top = 500;
> > }
>
>
> Du kan ikke sætte memo1 som owner, specielt ikke da memo1 endnu ikke er
> initialiseret. Du ønsker formentligt at den form, der opretter den er
ejer:
> TMemo *memo1 = new TMemo(this);
>
> Du skal også angive hvor den skal vises. Dette gøres ved at sætte Parent:
> Memo1->Parent = this;
>
> Samlet får du:
>
> void __fastcall TBagground::testbuttonClick(TObject *Sender)
> {
>
> TMemo *memo1 = new TMemo(this);
>
> memo1->Parent = this;
> memo1->Left = 100;
> memo1->Top = 500;
> }
>
>
> Ivan Johansen
>



Ivan Johansen (06-08-2002)
Kommentar
Fra : Ivan Johansen


Dato : 06-08-02 21:23

Gugge wrote:

>
> void __fastcall TForm1::Button1Click(TObject *Sender)
> {
> TPageControl *PageControl1 = new TPageControl(this);
> PageControl1->Parent = this;
> PageControl1->Left = 30;
> PageControl1->Top = 100;
> PageControl1->Width = 150;
>
> TTabSheet *One = new TTabSheet(PageControl1);
> One->Parent = PageControl1;
> One->Enabled = true;
> One->Caption = "One";
> One->Height = 300;
> One->Width = 400;

Prøv også at sætte PageControl:
One->PageControl = PageControl1;


Ivan Johansen


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

Månedens bedste
Årets bedste
Sidste års bedste