Aan hvdberg: Thnx voor je advies maar het probleem is niet de het creëeren van de controls.
ik heb immers al een draaiende app, die de controls runtime creëert, misschien leg ik het zelf verkeerd uit.
Ik wil dat die controls en de waarden daarin geupdate worden
Screenshot:
Je ziet links het form dat runtime zijn controls creëerd bij de procedure FormCreate
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
| For tabteller := 1 to adoquery1.recordcount do
begin
with TTabSheet.Create(Self) do
begin
//creëren pagecontrol
j:=tabteller-1;
PageControl := pgcontrol;
//Caption := adoquery1.fieldbyname('TabNaam').AsString;
PageControl.Pages[j].Caption:=trim(adoquery1.fieldbyname('TabNaam').AsString);
//einde creëren pagecontrol
//scrollbox maken
scBox := TScrollBox.Create(PageControl.Pages[j]);
scBox.Name := 'scBox'+ trim(adoquery1.fieldbyname('TabID').AsString);
scBox.Parent := PageControl.Pages[j];
scBox.Align := alClient;
scBox.BorderStyle := bsNone;
//lus maken om tabs te vullen
//vullen van juiste tab met de juiste gegevens
algemaakt:=true;
x:= 0;
zz:=0;
offsetx := 175;
offsety := 0;
t:=false;
//opvragen gegevens uit de juiste tabel
frmVoorblad.ADOQuery2.Close;
frmVoorblad.ADOQuery2.SQL.Clear;
frmVoorblad.ADOQuery2.SQL.Add('select * from '+trimright(ADOQuery1.fieldbyname('TABID').AsString)+' ORDER BY groep_id');
frmVoorblad.ADOQuery2.Open;
veldoffset := 5;
veldteller := 0;
grBoxHoogte := 0;
while not ADOQuery2.Eof do
begin
//group box maken
grBox := TGroupBox.Create(scbox);
grBox.Name := 'grBox'+ trim(adoquery1.fieldbyname('TabID').AsString)+ IntToStr(ADOQuery2.fieldbyname('Groep_id').asinteger);
grBox.Parent := ScBox;
grbox.Caption := 'Groep ' + IntToStr(ADOQuery2.fieldbyname('Groep_id').asinteger);
grBox.Top := zz +offsety + grBoxHoogte + 15;
zz:=grbox.top;
grBox.Height := 0;
grBox.Left := 25;
grBox.PopupMenu := PopupMenu1;
//einde group box maken
//group box vullen
groep := ADOQuery2.fieldbyname('Groep_id').asinteger;
i := 0;
while (ADOQuery2.fieldbyname('Groep_id').asinteger = groep) and (not ADOQuery2.Eof) do
begin
grBox.Width := 400;
veld := TEdit.create(grBox);
labelnaam := TLabel.create(grBox);
grBox.caption := ' ' + ADOQuery2.fieldbyname('Groep_naam').asstring;
veld.Name:='veld'+inttostr(veldteller);
labelnaam.Name:='labelnaam'+inttostr(veldteller);
veld.Parent := grBox;
labelnaam.Parent := grBox;
veld.Top := veldoffset + (i * veld.Height) + 15;
labelnaam.Top := veldoffset + (i * veld.Height) + 15;
veld.Left := 60 + 175;
labelnaam.Left := 40;
grBox.Height := grBox.Height + veld.Height;
veld.text := ADOQuery2.Fieldbyname('Inhoud').asstring;
labelnaam.caption := ADOQuery2.Fieldbyname('Naam').asstring + ' ' + ADOQuery2.Fieldbyname('Memo').asstring;
adoquery2.Next;
inc(veldteller);
inc(i);
end;
grBox.Height := grBox.Height + veld.Height + 10;
grBoxHoogte := grBox.Height;
//einde group box vullen |
dit is maar een stukje dus...
De code is nog niet optimaal ik ben een beginner dus kraak me niet af op mijn eventuele chaotische werkwijze
Ok nu kun je in het rechterform
een keuze uit de juiste tab + groep maken
en er een nieuw label + veld op toevoegen
ik wil alleen dat deze wijzigingen meteen runtime doorgevoerd worden naar m'n hoofdform en dat krijg ik dus niet voor elkaar
Ik hoop dat het nu een stuk duidelijker is.
Alvast bedankt