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