Brug integer i case of sætning

Tags:    delphi

case Tabindex of
i: ImageIndex := 1;

Hvorfor kan jeg ikke bruge denne sætning? :S
"i" er en integer som indholder et tal fundet igennem en løkke.



Indlæg senest redigeret d. 16.07.2006 13:00 af Bruger #5097
7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Altså, følgende sker.

1. Du looper gennem alle dine tabs
2. Hvis den tab du er nået til svarer til i, bliver et bestemet variabel sat til 1. Dette vil ske uanset hvad da "i" før eller siden vil blive det tal, den nuværende tab er på.

Altså vil der ikke være forskel på

var
i: integer;
begin
for i:=0 to TabControl1.Tabs.Count-1 do
begin
//her skal der være en if else sætning som hvis er sand give resultatet:
case Tabindex of
i: ImageIndex := 1;
end;
end;

og

var
i: integer;
begin
for i:=0 to TabControl1.Tabs.Count-1 do
begin
ImageIndex := 1;
end;
end;



Hej

Du skal slet ikke loope.
OnGetImage-hvad-den nu hed bliver kaldt for hver:

Og i denne har du følgende:

Fold kodeboks ind/udKode 


Du skal tænke på at denne stump kode bliver udført for HVER tab du har, du skal altså slet ikke tænke på selv at loope igennem dine tabs.

Og så har du misforstået brugen af case-sætningen. I den knstruktion du skriver en case-sætning, hvad enten din if sætning er på eller ej, giver den absolut ikke mening.

Prøv at droppe løkken, bare test på hvad der står på fanen, som jeg har gjort i eksemplet.

Håber det hjælper dig, ellers må du spørge.

/Jens




Jeg tror ikke du kan bruge varibler der, der skal det være tal. Men hvad er ideen med den sætning? Den vil jo altid være true og altid sætte ImageIndex til 1.



Koden er bid af en større kode som er lidt advanceret at forklare.

Men hurtigt kan jeg sige at jeg skal give forskellige tab en tabcontrol til at få nogle billeder. Tabsne skal kunne ændre hvilket billede de har igennem deres status...

Jeg bruges metode 2 fra denne tråd som netop handler om dette:
http://udvikleren.dk/Thread.aspx?f=2&t=16920&tech=2


Fold kodeboks ind/udKode 



Findes der en anden måde at gøre det på. I mine øjne er det den eneste og jeg må kunne gøre det på en eller anden måde!



Altså... Jeg giver Jonas ret i at det ikke giver mening at køre dette i en case, da du bare sætter dem alle til imageIndex 1.

Metoden OnGetTabImage bliver formentlig kaldt for hver tab, så hvis de alle skal have samme image er det bare at:

Fold kodeboks ind/udKode 


/Jens



Det skal de nemlig ikke Jens. I koden jeg har skrevet her vil den selvfølgelig give alle billede 1 men som jeg skrev en kommentar i koderne hvor jeg skriver at der et vist sted skal være et par if sætninger som undersøger hvilket billede de vær skal have.
Koderne har jeg ind til videre ikke lavet da det jo er vigtigst at det andet virker først.



Ikke hvis der står:

var
i: integer;
begin
for i:=0 to TabControl1.Tabs.Count-1 do
begin
if TabControl1.Tabs.Strings[ i ] = 'hej' then
begin
case Tabindex of
i: ImageIndex := 1;
end;
end;
end;

Det er det jeg mener med en if-sætning. Jeg vil sorterer de forskellige tabs så de får forskellige billeder igennem deres status. Forståeligt? :S


ps. der er mellemrum imellem [, i og ] fordig det ellers bare vil give en kursiv :D



Indlæg senest redigeret d. 16.07.2006 18:41 af Bruger #5097
t