Sammenkæde object-names med string/int?

Tags:    delphi

Hey hey!

Jeg har i mit nuværende projekt lagt 42 listbokse og 42 labels på min form og lagt dem ind i to separate arrays. Problemet er, at min kode bliver enormt stor, fordi jeg får 2x42 linjer der ser ud á la det her:

array[1] := object1;
array[2] := object2;
...

Spørgsmålet er så, om det er muligt at sammenkæde navne på objects på samme måde som med strings? Jeg har forsøgt med object + i, object + 'i' og lignende, men synes bare ikke jeg kan få det til at fungere.

I tilfælde af uklarheder vil jeg gerne lave de to array-setups i 2 loops i stedet for 84 single lines.

Som et lille ekstra-spørgsmål (5 point!) vil jeg gerne høre, om der er en måde at lave små pile på almindelige TButtons. Altså, samme type pile som dem, der er på scrollbars, combobox-dropdown-knapper og lignende? Det ser lidt dumt ud med de der brackets (< og >;) ;D



9 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Fold kodeboks ind/udKode 




Et par spørgsmål.

Hvad gør Format?
Hvorfor skriver i lb%d?



Hey Duckies,
godt så.. elsker når jeg lover at lave kode og ser det 3 måneder senere.. :-/
Er det stadig aktuelt?
Du kan i hvert fald bruge TSpeedbutton. Det er en standard control i Delphi.

Hvis du opretter dem design time, kan du vælge den "Glyph" der skal bruges, ved at vælge det for din TSpeedButton ved TSpeedButotn.Glyph



Takker mange gange! Skulle lige rette lidt i koden, så den jeg endte med at bruge ser sådan her ud:

Fold kodeboks ind/udKode 


45 point til dig Jeppe! ;D

Mangler stadig svar på mit pilespørgsmål, så sig endelig til, hvis du/I ved noget! ;>



Format bruges til strings med variabler i... Groft sagt.

Eksempel: Format('Hello World! %d',[1]);

Her returnerer Format strengen "Hello World! 1". Kort sagt bliver alle %-et-eller-andet (%d for integers, %f for floats - kender ikke selv andre) erstattet af de efterfølgende værdier mellem de to brackets "[]".

I mit tilfælde returnerer Format altså "lb" efterfulgt af et nummer mellem 1 og 42. Denne string (lb1 fx) bliver så fodret til FindComponent, som lokaliserer den komponent på MainForm, som har det pågældende navn. lb1, lb2, ... , lb42 er alle listbokse på min form, og FindComponent samt Format gør det dejlig nemt at lægge dem alle ind i et array (lbArray). På den måde sparer jeg altså 39 linjer :>

Håber det var forklaring nok ^_^



Mange tak :)



Lige en tilføjelse:
I kan altid finde dem alle i Delphi's hjælpe filer (i hvert fald til og med D7...)

Duckies husk at uddele point så tråden lukkes :)



Jeps, jeg har skam også tænkt mig at uddele point så snart jeg har fået svar på mit ekstra-spørgsmål omkring pile på knapper. Altså, om der er en måde at lave en pil-venstre, pil-højre osv ligesom dem der er på scrollsbars, comboboxes, etc.

Skal jeg til at tegne ikoner selv, eller er der en "standard" måde at gøre det på?



oh, det kan gøres via OwnerDraw... øhh, kan dog ikke lige fyre noget kode af lige nu, men skal lægge hovedet lidt i blød :)



t