/ 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
From1.Components giver "problem"
Fra : Ulrik Vadstrup


Dato : 17-08-04 20:37

Hej

Jeg har lavet en løkke som skulle løbe alle labels igennem på form1.

Det gør den egentlig også, jeg havde bare overset noget.

Hvis jeg f.eks. placerer et Tpanel på form1 og på dette TPanel en
label, så vil denne ikke køres igennem, når jeg laver en løkke på
Form1.components.

Er det virklig nødvendigt at lave en løkke for hvert panel også, eller
er der en anden løsning

Ulrik

 
 
Harald (17-08-2004)
Kommentar
Fra : Harald


Dato : 17-08-04 21:37

"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
news:8en4i05k4e1g4muiu17n25gva3ggksspim@4ax.com...
> Hej
>
> Jeg har lavet en løkke som skulle løbe alle labels igennem på form1.
>
> Det gør den egentlig også, jeg havde bare overset noget.
>
> Hvis jeg f.eks. placerer et Tpanel på form1 og på dette TPanel en
> label, så vil denne ikke køres igennem, når jeg laver en løkke på
> Form1.components.
>
> Er det virklig nødvendigt at lave en løkke for hvert panel også, eller
> er der en anden løsning

Lav en rekursiv procedure f.eks.:

procedure TForm1.SetCaptions(WC : TComponent);
var
i : integer;
begin
for i:=0 to WC.ComponentCount-1 do
begin
if not (WC.Components[i] is TLabel) then
SetCaptions(WC.Components[i])
else
(WC.Components[i] as TLabel).Caption:='jow';
end;
end;


SetCaptions(Form1);

Mvh
HK



Ulrik Vadstrup (18-08-2004)
Kommentar
Fra : Ulrik Vadstrup


Dato : 18-08-04 19:07

On Tue, 17 Aug 2004 22:37:24 +0200, "Harald" <news@no-mail.dk> wrote:

>"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
>news:8en4i05k4e1g4muiu17n25gva3ggksspim@4ax.com...
>> Hej
>>
>> Jeg har lavet en løkke som skulle løbe alle labels igennem på form1.
>>
>> Det gør den egentlig også, jeg havde bare overset noget.
>>
>> Hvis jeg f.eks. placerer et Tpanel på form1 og på dette TPanel en
>> label, så vil denne ikke køres igennem, når jeg laver en løkke på
>> Form1.components.
>>
>> Er det virklig nødvendigt at lave en løkke for hvert panel også, eller
>> er der en anden løsning
>
>Lav en rekursiv procedure f.eks.:
>
>procedure TForm1.SetCaptions(WC : TComponent);
>var
> i : integer;
>begin
> for i:=0 to WC.ComponentCount-1 do
> begin
> if not (WC.Components[i] is TLabel) then
> SetCaptions(WC.Components[i])
> else
> (WC.Components[i] as TLabel).Caption:='jow';
> end;
>end;
>
>
>SetCaptions(Form1);
>
>Mvh
>HK
>

Hey

Ja, den ide kan jeg godt se, men stadigvæk skal jeg jo så lave et kald
til SetCaptions hver gang jeg har et panel eller lign.

Desuden skal min update funktion ligge i en component, hvor jeg jo
ikke i forvejen ved hvad der ligger på min form.

Ulrik


Harald (18-08-2004)
Kommentar
Fra : Harald


Dato : 18-08-04 19:27

"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
news:3k67i05g3dlql9f8oknjeoo00jce2rpt28@4ax.com...
> On Tue, 17 Aug 2004 22:37:24 +0200, "Harald" <news@no-mail.dk> wrote:
>
> >"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
> >news:8en4i05k4e1g4muiu17n25gva3ggksspim@4ax.com...
> >> Hej
> >>
> >> Jeg har lavet en løkke som skulle løbe alle labels igennem på form1.
> >>
> >> Det gør den egentlig også, jeg havde bare overset noget.
> >>
> >> Hvis jeg f.eks. placerer et Tpanel på form1 og på dette TPanel en
> >> label, så vil denne ikke køres igennem, når jeg laver en løkke på
> >> Form1.components.
> >>
> >> Er det virklig nødvendigt at lave en løkke for hvert panel også, eller
> >> er der en anden løsning
> >
> >Lav en rekursiv procedure f.eks.:
> >
> >procedure TForm1.SetCaptions(WC : TComponent);
> >var
> > i : integer;
> >begin
> > for i:=0 to WC.ComponentCount-1 do
> > begin
> > if not (WC.Components[i] is TLabel) then
> > SetCaptions(WC.Components[i])
> > else
> > (WC.Components[i] as TLabel).Caption:='jow';
> > end;
> >end;
> >
> >
> >SetCaptions(Form1);
> >
> >Mvh
> >HK
> >
>
> Hey
>
> Ja, den ide kan jeg godt se, men stadigvæk skal jeg jo så lave et kald
> til SetCaptions hver gang jeg har et panel eller lign.

Nej den er jo rekursiv så den gennemgår alle paneler og andet som du har på
din form.

/HK



Ulrik Vadstrup (18-08-2004)
Kommentar
Fra : Ulrik Vadstrup


Dato : 18-08-04 20:41

On Wed, 18 Aug 2004 20:26:33 +0200, "Harald" <news@no-mail.dk> wrote:

>"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
>news:3k67i05g3dlql9f8oknjeoo00jce2rpt28@4ax.com...
>> On Tue, 17 Aug 2004 22:37:24 +0200, "Harald" <news@no-mail.dk> wrote:
>>
>> >"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
>> >news:8en4i05k4e1g4muiu17n25gva3ggksspim@4ax.com...
>> >> Hej
>> >>
>> >> Jeg har lavet en løkke som skulle løbe alle labels igennem på form1.
>> >>
>> >> Det gør den egentlig også, jeg havde bare overset noget.
>> >>
>> >> Hvis jeg f.eks. placerer et Tpanel på form1 og på dette TPanel en
>> >> label, så vil denne ikke køres igennem, når jeg laver en løkke på
>> >> Form1.components.
>> >>
>> >> Er det virklig nødvendigt at lave en løkke for hvert panel også, eller
>> >> er der en anden løsning
>> >
>> >Lav en rekursiv procedure f.eks.:
>> >
>> >procedure TForm1.SetCaptions(WC : TComponent);
>> >var
>> > i : integer;
>> >begin
>> > for i:=0 to WC.ComponentCount-1 do
>> > begin
>> > if not (WC.Components[i] is TLabel) then
>> > SetCaptions(WC.Components[i])
>> > else
>> > (WC.Components[i] as TLabel).Caption:='jow';
>> > end;
>> >end;
>> >
>> >
>> >SetCaptions(Form1);
>> >
>> >Mvh
>> >HK
>> >
>>
>> Hey
>>
>> Ja, den ide kan jeg godt se, men stadigvæk skal jeg jo så lave et kald
>> til SetCaptions hver gang jeg har et panel eller lign.
>
>Nej den er jo rekursiv så den gennemgår alle paneler og andet som du har på
>din form.
>
>/HK
>

Ja, det kan jeg selfølge godt se nu jeg tænker mig om.

Jeg har lavet det, og det ser ud til at fungere fint.

Et problem er faktisk, at så snart jeg sætter min timer enabled, så
kører det, også uden jeg har trykket "RUN"

Er der en måde hvorpå jeg kan stoppe/undgå dette ? - F.eks ved ikk at
overføre enabled intern i min component, medmindre jeg er i "running"
?

Ulrik


Harald (18-08-2004)
Kommentar
Fra : Harald


Dato : 18-08-04 20:59

"Ulrik Vadstrup" <blackend@blackend.dk> skrev i en meddelelse
news:s2c7i0tu4bc2suufjisgp62dh5nleek3hr@4ax.com...
> On Wed, 18 Aug 2004 20:26:33 +0200, "Harald" <news@no-mail.dk> wrote:

<klip>

> Jeg har lavet det, og det ser ud til at fungere fint.
>
> Et problem er faktisk, at så snart jeg sætter min timer enabled, så
> kører det, også uden jeg har trykket "RUN"
>
> Er der en måde hvorpå jeg kan stoppe/undgå dette ? - F.eks ved ikk at
> overføre enabled intern i min component, medmindre jeg er i "running"
> ?

Du kan checke i din komponent hvilken state den er i f.eks.

if (csDesigning in ComponentState) then
// start ikke timer

Se delphi help om ComponentState for andre flags.

/HK



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408182
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste