Problemet er at edit-boxe er objekter, og de skal være oprettet for at du kan bruge dem. Du kan altså ikke smide dem ind i et array uden at initialisere dem. Det er altså ikke som med integers eller strings.
Sidst men ikke mindst kan det gøres ved at enumerere igennem alle komponenter på en form, og undersøge om den aktuelle komponent er en tedit. Er den det sætter du så text-propertien.
Vil du have et eksempel på det, så sig lige til - så finder jeg det
Hvis du bruger lrj's første forslag så skal du lige huske på at ALT du selv "creater" skal du "free"'e igen
d.v.s.
i create form for i := 1 to 10 do begin earray[i] := tedit.create; earray[i].parent := form1; // sæt alle properties // eks. earray[i].top := 125; // earray[i].left := 16 + ((i-1) * 200); // o.s.v. end;
i destroy form for i := 0 to 10 do earray[i].free;
Det skal være med eksisterende editbokse, så løsning to er vel bedst. Men hvad er Delphi's GUI? Og hvad vil det sige at enumerere? Jeg vil meget gerne se et eksempel på dette. Er det muligt som med integers at proppe elementerne ind under erklæringen af Arrayet? Altså at skrive svarende til navn: array[0..1] of Integer=(2,3);
c.h.> Det sidste du nævner kan, så vidt jeg ved, ikke lade sig gøre. Sådan hænger tingene ikke helt sammen.
Delphi's GUI er det du "tegner" dine programmer i - det står for Graphical User Interface - eller på dansk - brugergrænseflade.
At enumerere vil sige at gennemløbe noget i en bestemt rækkefølge, ex. fra lavest til højest. I dette tilfælde vil det sige at gennemløbe alle komponenter på en form (form1 for eksempel) og undersøge hver enkelt komponent. Jeg tror dog ikke det er den løsning du er ude efter - det er nemlig temmelig hardcore :)
Hehe, jeg VIDSTE en eller anden ville korrigere mig :) Var nemlig ikke 100% sikker da jeg skrev det. Men meningen er vist ca. tæt nok på i den her kontekst :)
Det er fordi det er objekter, og ikke statiske størrelser som integer og char. De er af natur dynamiske - de kan ændres/ændre sig mens programmet kører.
Så vidt jeg ved kan du ikke oprette objekter direkte mens du deklererer et array. Men har du prøvet at kigge nærmere på initialization og finalization delen af dine units? Her har du noget større mulighed for at få alle tingene sat ordentligt op før programmet er helt startet. Bemærk dog at du ikke kan manipulere din form hvis den bliver skabt automatisk (altså i initialization i unit1 som indeholder form1 - piller du ikke ved opsætningen kan du ikke tilgå form1.whatever i initialiseringen - form1 er endnu ikke defineret).
Normalt når man har en liste af objekter bruger man ikke arrays, da de normalt er af en fast størrelse. Det KAN lade sig gøre at lave dynamiske arrays - men det er temmelig langhåret :)
I stedet kan du med fordel kigge nærmere på TList. Den kan nemlig have en "uendelig" lang liste af objekter, ex. TButton eller nogen du selv laver, uden at du bestemmer størrelsen på forhånd. Og så er den forholdsvis nem at benytte :)
Hvordan kigger jeg nærmere på initialization og finalization delen. Skal man bruge øjnene : ) - seriøst, hvor finder jeg dem?
Nu du nævner dynamiske arrays - så er det faktisk noget jeg spurgte om for et par uger siden. Og jeg giver dig ret - det er særdeles temmelig meget langhåret. Men det der med at bruge TList ser rigtig smart ud. Hvorfor startede du ikke med at sige det? :)
Opslag af initialization, finalization og andet i Delphi's hjælp - skriv ordet et sted i din fil (evt. hvor det skal bruges :o), placer markøren over det, og tryk F1 - så hopper hjælpen frem med et relevant afsnit. Smart :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.