/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Variabler til combobox fra fil
Fra : Calle.


Dato : 11-04-03 23:12

Hej

Hvordan for jeg en combobox, til at hente sine valgmuligheder fra en
tekstfil, som f.eks ser sådan ud:

box1:alufælge,stålfælge
box2:rød,gul,grøn,sort
box3:1600,1800,2000

--
Calle



 
 
Toke Herkild (13-04-2003)
Kommentar
Fra : Toke Herkild


Dato : 13-04-03 18:17

Det kommer helt an på om du altid ved hvor mange box'e du har eller om
der skal være et vilkårligt antal osv. Men lige meget hvad hvorfor så
ikke bruge en inifil til den slags ? eg:

[BOX1]
Count = 2
ITEM_01 = "alufælge"
ITEM_02 = "stålfælge"

[BOX2]
Count = 4
ITEM_01 = "rød"
ITEM_02 = "gul"
ITEM_03 = "grøn"
ITEM_04 = "sort"

[BOX3]
Count = 3
ITEM_01 = "1600"
ITEM_02 = "1800"
ITEM_03 = "2000"

så er det rimelig nemt at lave en function eller procedure der læser
inifilen henter de forskellige Box'e og værdier og du kan også lave et
interface til at gemme flere Items for hver box.

koden til at fylde hver Box ud ville så være noget i stil med:

n := StrToInt(readIniStr(ABOX.Name,'Count', 0)) // 0'et er hvis nu der
ikke er nogen Count
For i := 1 to n Do Begin
ABox.Items.Add(ReadIniStr(ABOX.Name,'ITEM_'+IntToStr(i),'')
end;

virker måske ikke helt men næsten. ABOX er den enkelt BOX.

Håber du kan bruge det :)

MVH
Toke Herkild

Calle. wrote:
> Hej
>
> Hvordan for jeg en combobox, til at hente sine valgmuligheder fra en
> tekstfil, som f.eks ser sådan ud:
>
> box1:alufælge,stålfælge
> box2:rød,gul,grøn,sort
> box3:1600,1800,2000
>
> --
> Calle
>
>


Calle. (13-04-2003)
Kommentar
Fra : Calle.


Dato : 13-04-03 22:59

Toke Herkild wrote:
> Det kommer helt an på om du altid ved hvor mange box'e du har eller om
> der skal være et vilkårligt antal osv. Men lige meget hvad hvorfor så
> ikke bruge en inifil til den slags ? eg:
>
> [BOX1]
> Count = 2
> ITEM_01 = "alufælge"
> ITEM_02 = "stålfælge"
>
> [BOX2]
> Count = 4
> ITEM_01 = "rød"
> ITEM_02 = "gul"
> ITEM_03 = "grøn"
> ITEM_04 = "sort"
>
> [BOX3]
> Count = 3
> ITEM_01 = "1600"
> ITEM_02 = "1800"
> ITEM_03 = "2000"
>
> så er det rimelig nemt at lave en function eller procedure der læser
> inifilen henter de forskellige Box'e og værdier og du kan også lave et
> interface til at gemme flere Items for hver box.
>
> koden til at fylde hver Box ud ville så være noget i stil med:
>
> n := StrToInt(readIniStr(ABOX.Name,'Count', 0)) // 0'et er hvis nu der
> ikke er nogen Count
> For i := 1 to n Do Begin
> ABox.Items.Add(ReadIniStr(ABOX.Name,'ITEM_'+IntToStr(i),'')
> end;
>
Ja det hjalp mig en hel del videre, men jeg har lige et spørgsmål mere.
Hvis jeg nu kalder mine komboboxe boks1 boks2 boks 3 osv.
hvordan kan jeg med en for 1 to 3 løkke bestemme hvilken af dem jeg
items.add funktionen på.

PS. det skal siges, at jeg er grøn i delphi
--
Calle



Toke Herkild (14-04-2003)
Kommentar
Fra : Toke Herkild


Dato : 14-04-03 02:14



Calle. wrote:

>
> Ja det hjalp mig en hel del videre, men jeg har lige et spørgsmål mere.
> Hvis jeg nu kalder mine komboboxe boks1 boks2 boks 3 osv.
> hvordan kan jeg med en for 1 to 3 løkke bestemme hvilken af dem jeg
> items.add funktionen på.
>
> PS. det skal siges, at jeg er grøn i delphi
> --
> Calle
>
>

Hej Calle,

det kan gøres ved hjælp af f.eks :

For i := 1 to 3 do Begin
For n := 0 To ComponentsCount-1 Do Begin
If Component.Name = 'Boks'+IntToStr(i) Then Begin
With (Component[n] As TComboBox).Items Do Begin
// lav din Add her
end;
exit; // hvis vi har Fyldt en ComboBox er der ingengrund til at
// bladre resten igennem Så vi hopper ud til den første
// løkke.
end;
end;
end;

Noget i stil med det her skulle kunne gøre det måske skal du skrive:
FormNavn.Components osv...

Simpelt fortalt løber vi alle components på formen igennem og hvis vi
møde en der hedder BoksN hvor N=i så tilføjer vi det der skal tilføjes.

Een anden måde er :

procedure FillCombo(ABox: TCombobox);
Begin
// indsæt kode der tilføjer her.
end;

Og i selve koden hvor du vil tilføje skriver du:

FillCombo(Boks1);
FillCombo(Boks2);
FillCombo(Boks3);

Dette er en enklere måde at gøre det på.

husk at hvis du laver en ny function/procedure skal du huske at
declarere den under formen, under private.

MVH
Toke Herkild.


Thor (15-04-2003)
Kommentar
Fra : Thor


Dato : 15-04-03 11:56

Hej Toke

Exit forlader proceduren helt, ikke blot løkken. Brug Break for at forlade
en løkke.

Hvad med simpelthen:

cbox1.items.loadfromfile('cbox1.txt');

cbox2.items.loadfromfile('cbox2.txt');

cbox3.items.loadfromfile('cbox3.txt');

Hilsen Thomas Riedel

"Toke Herkild" <toke@herkild.dk> wrote in message
news:3E9A0B6F.4080209@herkild.dk...
>
>
> Calle. wrote:
>
> >
> > Ja det hjalp mig en hel del videre, men jeg har lige et spørgsmål mere.
> > Hvis jeg nu kalder mine komboboxe boks1 boks2 boks 3 osv.
> > hvordan kan jeg med en for 1 to 3 løkke bestemme hvilken af dem jeg
> > items.add funktionen på.
> >
> > PS. det skal siges, at jeg er grøn i delphi
> > --
> > Calle
> >
> >
>
> Hej Calle,
>
> det kan gøres ved hjælp af f.eks :
>
> For i := 1 to 3 do Begin
> For n := 0 To ComponentsCount-1 Do Begin
> If Component.Name = 'Boks'+IntToStr(i) Then Begin
> With (Component[n] As TComboBox).Items Do Begin
> // lav din Add her
> end;
> exit; // hvis vi har Fyldt en ComboBox er der ingengrund til at
> // bladre resten igennem Så vi hopper ud til den første
> // løkke.
> end;
> end;
> end;
>
> Noget i stil med det her skulle kunne gøre det måske skal du skrive:
> FormNavn.Components osv...
>
> Simpelt fortalt løber vi alle components på formen igennem og hvis vi
> møde en der hedder BoksN hvor N=i så tilføjer vi det der skal tilføjes.
>
> Een anden måde er :
>
> procedure FillCombo(ABox: TCombobox);
> Begin
> // indsæt kode der tilføjer her.
> end;
>
> Og i selve koden hvor du vil tilføje skriver du:
>
> FillCombo(Boks1);
> FillCombo(Boks2);
> FillCombo(Boks3);
>
> Dette er en enklere måde at gøre det på.
>
> husk at hvis du laver en ny function/procedure skal du huske at
> declarere den under formen, under private.
>
> MVH
> Toke Herkild.
>



Calle. (15-04-2003)
Kommentar
Fra : Calle.


Dato : 15-04-03 12:39

Thor wrote:
> Hej Toke
>
> Exit forlader proceduren helt, ikke blot løkken. Brug Break for at
> forlade en løkke.
>
> Hvad med simpelthen:
>
> cbox1.items.loadfromfile('cbox1.txt');
>
> cbox2.items.loadfromfile('cbox2.txt');
>
> cbox3.items.loadfromfile('cbox3.txt');
>
det vil sige at du vil have jeg skal lave 3 særskilte filer! det går
ikke da placeringen er afhængig af hinanden, og nogle af placeringerne
godt kan være tomme
--
Calle



Thor (15-04-2003)
Kommentar
Fra : Thor


Dato : 15-04-03 14:53

> > cbox3.items.loadfromfile('cbox3.txt');
> >
> det vil sige at du vil have jeg skal lave 3 særskilte filer! det går
> ikke da placeringen er afhængig af hinanden, og nogle af placeringerne
> godt kan være tomme
> --
> Calle

Det er OK.

mvh Thomas



Toke Herkild (16-04-2003)
Kommentar
Fra : Toke Herkild


Dato : 16-04-03 23:16

Hejsa,

Kunne ikke huske om det var break eller exit jeg skulle bruge. Men ok,
Ville kunne få det til at virke alligevel og Calle skal vel også lære
lidt af det :)

Calle. wrote:
> Thor wrote:
>
>>Hej Toke
>>
>>Exit forlader proceduren helt, ikke blot løkken. Brug Break for at
>>forlade en løkke.
>>
>>Hvad med simpelthen:
>>
>>cbox1.items.loadfromfile('cbox1.txt');
>>
>>cbox2.items.loadfromfile('cbox2.txt');
>>
>>cbox3.items.loadfromfile('cbox3.txt');
>>
>
> det vil sige at du vil have jeg skal lave 3 særskilte filer! det går
> ikke da placeringen er afhængig af hinanden, og nogle af placeringerne
> godt kan være tomme
> --
> Calle
>
>


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

Månedens bedste
Årets bedste
Sidste års bedste