|
| "Array af Edits" Fra : Jens Heidmann |
Dato : 08-02-01 15:33 |
|
Jeg har brug for at præsentere data fra et array Bogstaver =
array[0..15,0..5] of char på en form. Jeg vil gerne opsætte 96 pænt fordelte
Edits som hver indeholder en karakter.
Er der ikke en mulighed for at gruppere disse edits på een eller anden måde,
så jeg kan foretage ind- og udlæsning fra array til form med et loop i stil
med
for i:= 0..16 do
for j:= 0 to 5 do
Edit[i*15+j] := Bogstaver[i,j];
fremfor at skulle skrive 96 linier af typen
Edit1.text:= Bogstaver[0,0];
Edit2.text:= Bogstaver[0,1];
Edit......(gab)
Altså noget svarende til et kontrol-array i VisualBasic ?
venlig hilsen
Jens Heidmann
| |
Jesper "Data" Anders~ (08-02-2001)
| Kommentar Fra : Jesper "Data" Anders~ |
Dato : 08-02-01 16:05 |
|
"Jens Heidmann" <heidmann@odont.au.dk> wrote in
<95uam4$ini$1@news.net.uni-c.dk>:
>Jeg har brug for at præsentere data fra et array Bogstaver =
>array[0..15,0..5] of char på en form. Jeg vil gerne opsætte 96 pænt
>fordelte Edits som hver indeholder en karakter.
>Er der ikke en mulighed for at gruppere disse edits på een eller anden
>måde, så jeg kan foretage ind- og udlæsning fra array til form med et
Du kunne skrive en eller anden identifier i Tag-propertien på alle dine
edit-bokse. Så kan du rende alle komponenter på formen igennem, og sige
noget i retningen af
if control is TEdit then
begin
a := (control.tag div 10) - 1; //første fimension i array'et
b := (control.tag - a*10) - 1; //Anden dimension i arrayet
(control as TEdit).Text := Bogstaver[a,b];
end;
Dine edit's skal så nummereres som 11, 12, 13, 14, 15, 16 for [0,0]..[0,5]
21, 22, 23, 24, 25, 26 for [1,0]..[1,5] o.s.v. op til [161, 162, 163, 164,
165, 166 for [15,0]..[15..5]. Håber du kan se idéen.
/Data
| |
Ulrik Vadstrup (08-02-2001)
| Kommentar Fra : Ulrik Vadstrup |
Dato : 08-02-01 16:12 |
|
> fremfor at skulle skrive 96 linier af typen
>
> Edit1.text:= Bogstaver[0,0];
> Edit2.text:= Bogstaver[0,1];
> Edit......(gab)
>
>
> Altså noget svarende til et kontrol-array i VisualBasic ?
Jo da
MyEdits = Array[0..15, 0..5] of Tedit;
MyString = array[0..15,0..5] of String;
var
i, j , a: Integer;
Begin
a := 5;
For i := 0 to 15 do
begin
For j := 0 to 15 do
begin
MyEdits[i,j].Create(Form1);
MyEdits[i,j].Name := 'Edit' + IntToStr(i) + IntTioStr(j);
MyEdits[i,j].Width := 5;
MyEdits[i,j].Height := 5;
MyEdits[i,j].Text := MyString[i,j];
MyEdits[i,j].Top := (En en eller anden værdi du selv laver og
tæller op)
If i = 5 or i:= 10 then a := a + 10;
MyEdits[i,j].Left := a;
end;
end;
end;
Det er muligt du skal have flere properties på........Du må selv tilpasse
det lidt;
Husk at destroy'e/ Free
Det er noget i den du'r (Ikke testet)
Mvh
Ulrik
| |
Uffe Kousgaard (08-02-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 08-02-01 17:18 |
|
> MyEdits[i,j].Name := 'Edit' + IntToStr(i) + IntTioStr(j);
Den her linie kan du godt skippe. Den er ligegyldig, når du selv "creater"
dine edit-felter
Hilsen
Uffe
| |
Ulrik Vadstrup (09-02-2001)
| Kommentar Fra : Ulrik Vadstrup |
Dato : 09-02-01 08:29 |
|
Uffe Kousgaard <uffe@routeware.dk> skrev i en
nyhedsmeddelelse:hFzg6.314$uw2.5239@news.get2net.dk...
> > MyEdits[i,j].Name := 'Edit' + IntToStr(i) + IntTioStr(j);
>
> Den her linie kan du godt skippe. Den er ligegyldig, når du selv "creater"
> dine edit-felter
>
> Hilsen
> Uffe
>
Jo - men så har edit feltet jo et navn, man kan finde det på, hvis man skal
bruge det senere, til noget andet......eller hva ?
Mvh
Ulrik
| |
|
|