|
| 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
>
>
| |
|
|