/ 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
Skrivning af samme værdi til flere labels
Fra : Mikael Christensen


Dato : 17-01-02 22:55

Hej

Jeg døjer med et kosmetisk og interessant problem. Når jeg skal tildele
samme streng til en stribe labels i samme procedure giver dette en meget
lang kode. Eksempelvis vil jeg gerne tildele 10 labels strengen '1'.

Jeg bruger derfor i udgangspunktet koden:

label1.caption:='1';
label2.caption:='1';
label3.caption:='1';
label4.caption:='1';
label5.caption:='1';
label6.caption:='1';
label7.caption:='1';
label8.caption:='1';
label9.caption:='1';
label10.caption:='1';
label11.caption:='1';

Men dette synes jeg er uelegant. Jeg vil gerne koge dette ned til en
løkke, eks:

for i:=1 to 11 do
label[i] .caption:='1';

men den går naturligvis ikke. Findes der en anden måde at løse problemet
på ? Hvor skal man i givet fald lede og kan man anvende pointers og
hvordan ?

Hilsen

Mikael



 
 
Uffe Kousgaard (17-01-2002)
Kommentar
Fra : Uffe Kousgaard


Dato : 17-01-02 23:16

Hej

Det er ganske enkelt:

for I := 0 to ComponentCount-1 do
if Components[I] is TLabel then TLabel(Components[I]).caption:= '1';

Hilsen
Uffe

"Mikael Christensen" <mikaelodgaard@christensen.tdcadsl.dk> wrote in
message news:3C474843.69D25116@christensen.tdcadsl.dk...
> Hej
>
> Jeg døjer med et kosmetisk og interessant problem. Når jeg skal
tildele
> samme streng til en stribe labels i samme procedure giver dette en
meget
> lang kode. Eksempelvis vil jeg gerne tildele 10 labels strengen '1'.
>
> Jeg bruger derfor i udgangspunktet koden:
>
> label1.caption:='1';
> label2.caption:='1';
> label3.caption:='1';
> label4.caption:='1';
> label5.caption:='1';
> label6.caption:='1';
> label7.caption:='1';
> label8.caption:='1';
> label9.caption:='1';
> label10.caption:='1';
> label11.caption:='1';
>
> Men dette synes jeg er uelegant. Jeg vil gerne koge dette ned til en
> løkke, eks:
>
> for i:=1 to 11 do
> label[i] .caption:='1';
>
> men den går naturligvis ikke. Findes der en anden måde at løse
problemet
> på ? Hvor skal man i givet fald lede og kan man anvende pointers og
> hvordan ?
>
> Hilsen
>
> Mikael
>
>


Thor (17-01-2002)
Kommentar
Fra : Thor


Dato : 17-01-02 23:18

Hej Mikael

det nemmeste ville være (utestet):

for i := 0 to componentcount-1 do
if component[i] is tlabel then
with tlabel(component[i]) do
// evt if tag = xx then
caption := '1';

Alternativt kan du oprette dine labels dynamisk:

var labels : array [1..10] of tlabel;

begin
for i := 0 to to do
begin
labels[i] := tlabel.create(self);
labels[i].parent := self;
labels[i].top := i *10;
labels[i].left := 10;
label[i].caption := '1';
end;
end;

mvh Thomas R.



"Mikael Christensen" <mikaelodgaard@christensen.tdcadsl.dk> wrote in message
news:3C474843.69D25116@christensen.tdcadsl.dk...
> Hej
>
> Jeg døjer med et kosmetisk og interessant problem. Når jeg skal tildele
> samme streng til en stribe labels i samme procedure giver dette en meget
> lang kode. Eksempelvis vil jeg gerne tildele 10 labels strengen '1'.
>
> Jeg bruger derfor i udgangspunktet koden:
>
> label1.caption:='1';
> label2.caption:='1';
> label3.caption:='1';
> label4.caption:='1';
> label5.caption:='1';
> label6.caption:='1';
> label7.caption:='1';
> label8.caption:='1';
> label9.caption:='1';
> label10.caption:='1';
> label11.caption:='1';
>
> Men dette synes jeg er uelegant. Jeg vil gerne koge dette ned til en
> løkke, eks:
>
> for i:=1 to 11 do
> label[i] .caption:='1';
>
> men den går naturligvis ikke. Findes der en anden måde at løse problemet
> på ? Hvor skal man i givet fald lede og kan man anvende pointers og
> hvordan ?
>
> Hilsen
>
> Mikael
>
>



Mikael Christensen (18-01-2002)
Kommentar
Fra : Mikael Christensen


Dato : 18-01-02 00:14

Hej Uffe og Thor !

I skal have mange tak for de hurtige og klare svar. Det var lige det jeg søgte
efter ! Jeg tror at jeg vælger den simple løsning med:

for i:=0 to componentcount-1 do
TLabel(Components[i]).caption:= '1';

da dette er den simpleste.

mvh

Mikael



Thor wrote:

> Hej Mikael
>
> det nemmeste ville være (utestet):
>
> for i := 0 to componentcount-1 do
> if component[i] is tlabel then
> with tlabel(component[i]) do
> // evt if tag = xx then
> caption := '1';
>
> Alternativt kan du oprette dine labels dynamisk:
>
> var labels : array [1..10] of tlabel;
>
> begin
> for i := 0 to to do
> begin
> labels[i] := tlabel.create(self);
> labels[i].parent := self;
> labels[i].top := i *10;
> labels[i].left := 10;
> label[i].caption := '1';
> end;
> end;
>
> mvh Thomas R.
>
> "Mikael Christensen" <mikaelodgaard@christensen.tdcadsl.dk> wrote in message
> news:3C474843.69D25116@christensen.tdcadsl.dk...
> > Hej
> >
> > Jeg døjer med et kosmetisk og interessant problem. Når jeg skal tildele
> > samme streng til en stribe labels i samme procedure giver dette en meget
> > lang kode. Eksempelvis vil jeg gerne tildele 10 labels strengen '1'.
> >
> > Jeg bruger derfor i udgangspunktet koden:
> >
> > label1.caption:='1';
> > label2.caption:='1';
> > label3.caption:='1';
> > label4.caption:='1';
> > label5.caption:='1';
> > label6.caption:='1';
> > label7.caption:='1';
> > label8.caption:='1';
> > label9.caption:='1';
> > label10.caption:='1';
> > label11.caption:='1';
> >
> > Men dette synes jeg er uelegant. Jeg vil gerne koge dette ned til en
> > løkke, eks:
> >
> > for i:=1 to 11 do
> > label[i] .caption:='1';
> >
> > men den går naturligvis ikke. Findes der en anden måde at løse problemet
> > på ? Hvor skal man i givet fald lede og kan man anvende pointers og
> > hvordan ?
> >
> > Hilsen
> >
> > Mikael
> >
> >


Claus Christiansen (18-01-2002)
Kommentar
Fra : Claus Christiansen


Dato : 18-01-02 12:34

Mikael Christensen <mikaelodgaard@christensen.tdcadsl.dk> wrote in
news:3C475AD5.8AC89CF4@christensen.tdcadsl.dk:

> Hej Uffe og Thor !
>
> I skal have mange tak for de hurtige og klare svar. Det var lige det
> jeg søgte efter ! Jeg tror at jeg vælger den simple løsning med:
>
> for i:=0 to componentcount-1 do
> TLabel(Components[i]).caption:= '1';
>
> da dette er den simpleste.
>
Du skal dog lige huske linien med: if component[i] is tlabel then
ellers skifter du caption på alle componenter på formen

Claus
--
Claus Christiansen, <mailto:cch@unipeople.dk>

personal: http://www.bigfoot.com/~kruc/; pythia: http://www.pythia.dk
============================================--------------------------
"Computers are useless. They can only give you answers."
- Pablo Picasso (1881-1973)

Uffe Kousgaard (18-01-2002)
Kommentar
Fra : Uffe Kousgaard


Dato : 18-01-02 18:00

"Claus Christiansen" <kruc@bigfoot.com> wrote in message
news:Xns919A7F5837BAFkrucsid@192.168.1.2...
> Du skal dog lige huske linien med: if component[i] is tlabel then
> ellers skifter du caption på alle componenter på formen

Og så ville du få nogle grimme runtime fejl, ved de komponenter som ikke
har en caption-property ! F.eks. en Tedit.

Hilsen
Uffe



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste