You can't drive your house, but you can sleep in your car!
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Misschien had ik er bij moeten vertellen dat ik nogal n00bish ben op C++ niveau.oisyn schreef op donderdag 27 oktober 2005 @ 17:15:
Ik snap je vraag niet echt, daarnaast ben je nu bogus waarden in je list aan het stoppen aangezien je je Edit variabele niet initialiseert. Ook snap ik niet waarom je Edit dereferencet aangezien je juist pointers in de lijst wilt hebben, niet de daadwerkelijke objecten waar die pointers naar wijzen
Ik probeer van TEdit 100 objecten aan te maken. Daar moeten waardes in komen die een user kan wijzigen. Die waardes moeten wel worden gecontroleerd, en dat kan ook via TEdit->Text==goede waarde.
Mijn probleem is dat ik niet weet hoe ik objecten met een volgnummer aanmaak! Bv Edit1, Edit2, Edit3 enz.
[ Voor 24% gewijzigd door De_Delph op 27-10-2005 17:21 ]
You can't drive your house, but you can sleep in your car!
1
2
3
4
| list.push_back(Edit1); list.push_back(Edit2); ... list.push_back(EditN); |
Als je dat niet wilt, dan zul je moeten gaan bedenken of je soms de creatie en initialisatie van de elementen van de lijst uniform kan doen. Dan kan je dat in een loop verwerken:
1
2
3
4
5
6
7
8
| for(i=0; i <n; i++)
{
TEdit *Edit = new TEdit(...);
Edit->do_something();
Edit->do_something2();
list.push_back(Edit);
} |
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
Als ik dan ook nog eens C++ zie, en VCL, dan is het C++ Builder.
Ik dacht -nu, ik ben het zeker- dat een 'container control' (zoals bv een form) een Controls property (oid) had, die alle controls die op die 'control' staan bevat.
Dat kan je dus gebruiken.
https://fgheysels.github.io/
Ik had wel wat duidelijker mogen zijn iddwhoami schreef op donderdag 27 oktober 2005 @ 17:27:
Als ik TEdit zie, dan denk ik aan VCL.
Als ik dan ook nog eens C++ zie, en VCL, dan is het C++ Builder.
Ik dacht -nu, ik ben het zeker- dat een 'container control' (zoals bv een form) een Controls property (oid) had, die alle controls die op die 'control' staan bevat.
Dat kan je dus gebruiken.
Ik wilde eerst via het even OnCreate gewoon een lijstje.push.back(this) gebruiken, maar ik kon geen OnCreate vinden
[ Voor 12% gewijzigd door De_Delph op 27-10-2005 17:37 ]
You can't drive your house, but you can sleep in your car!
Je wil die dan toch ergens op je form gaan tonen ?
https://fgheysels.github.io/
Dat is wel de bedoeling ja! Zeg 100 TEdits tonen, en elke TEdit moet wel in een listje ge'push_back()'ed zijn.whoami schreef op donderdag 27 oktober 2005 @ 17:42:
Ik snap eigenlijk totaal niet wat je met die TEdits wil doen ?
Je wil die dan toch ergens op je form gaan tonen ?
You can't drive your house, but you can sleep in your car!
Die Controls property is een array, dus je kan ze mbhv die index gaan aanspreken.
[ Voor 34% gewijzigd door whoami op 27-10-2005 17:49 ]
https://fgheysels.github.io/
Verwijderd
kun je niet iets met een linked list? dus een struct of klasse (die erft van Tedit) waarin er een pointer is naar het volgende object in de list (als je andersom de lijst wil doorlopen misschien ook een pointer naar het vorige object). je hoeft dan alleen een pointer te hebben naar het begin van de lijst en de "volgende" van de laatste in de list is NULL. Doorlopen van zo'n lijst is een simpele while loop.
list<TEdit*> moet al genoeg doen...
ASSUME makes an ASS out of U and ME
Verwijderd
1
2
3
4
5
6
| std::list<TEdit *> editLijstje; for(int i=0; i<100; ++i) { TEdit* edt = new TEdit(this); // hier ga ik ervan uit dat je bijv in de constructor van een form deze code zet. edt->Visible = true; editLijstje.push_back(edt); } |
Of bedoel je heel wat anders?
Yikes. Exception safety? Leaks? Raw pointers... Wat als new throwed na 55 keer? Oh well, misschien zeur ik, maar dit soort dingen zorgen voor veel problemen later.Verwijderd schreef op donderdag 27 oktober 2005 @ 18:31:
Ik denk dat ik weet wat je wilt:
C++:
1 2 3 4 5 6 std::list<TEdit *> editLijstje; for(int i=0; i<100; ++i) { TEdit* edt = new TEdit(this); // hier ga ik ervan uit dat je bijv in de constructor van een form deze code zet. edt->Visible = true; editLijstje.push_back(edt); }
Of bedoel je heel wat anders?
Dit is een stukje van de H-file
1
2
3
4
5
6
| __published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
void __fastcall FormCreate(TObject *Sender); |
Dit is de functie waar het allemaal om gaat:
1
2
3
4
5
6
7
8
9
10
11
12
13
| void __fastcall TForm1::FormCreate(TObject *Sender)
{
lijstje.push_back(Edit1);
lijstje.push_back(Edit2);
lijstje.push_back(Edit3);
lijstje.push_back(Edit4);
list<TEdit*>::iterator i;
int z=0;
for(i=lijstje.begin();i!=lijstje.end();i++)
{
(*i)->Text=z;
z++;
} |
Edit1 geeft nu 0 weer, Edit2 geeft 1 weer, enz.
Ik wil de push_back()'s in een loopje hebben, anders typ ik me helemaal wezenloos (bij honderd TEdit's) plus dat het dan minder uitbreidbaar is.
You can't drive your house, but you can sleep in your car!
[ Voor 15% gewijzigd door Infinitive op 27-10-2005 18:47 ]
putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]
You can't drive your house, but you can sleep in your car!
Eh, zoals je gelijk welke andere array overloopt.[TLG]Delphi schreef op donderdag 27 oktober 2005 @ 18:57:
Hoe doorloop je die array?
Heb je die property trouwens al eens bekeken ? 'k Ben er vrijwel zeker van dat er een voorbeeldje bij staat in de help.
https://fgheysels.github.io/
Ik bedoelde meer: welke property moet ik zijn?whoami schreef op donderdag 27 oktober 2005 @ 20:07:
[...]
Eh, zoals je gelijk welke andere array overloopt.
Heb je die property trouwens al eens bekeken ? 'k Ben er vrijwel zeker van dat er een voorbeeldje bij staat in de help.
You can't drive your house, but you can sleep in your car!
Zie de help zeg.[TLG]Delphi schreef op donderdag 27 oktober 2005 @ 20:43:
[...]
Ik bedoelde meer: welke property moet ik zijn?
Ik heb trouwens de exacte naam al vernoemd.
https://fgheysels.github.io/
Mijn spijt (en dank) is groot, ik zat even te slapenwhoami schreef op donderdag 27 oktober 2005 @ 21:15:
[...]
Zie de help zeg.
Ik heb trouwens de exacte naam al vernoemd.
You can't drive your house, but you can sleep in your car!