Autor Beitrag
FTT78
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 22.09.18 16:00 
Hallo zusammen.
Ich versuche nach Jahren mal wieder mit Delphi zu Programmieren.
Ich habe eine Form1 und darin 4 Groupboxen mit den Namen Tipp1 bis Tipp4.
Nun wollte ich in jede Groupbox 49 Panel wärend der Laufzeit einfügen.
Leider bekomme ich es nicht hin an die jeweilige groupbox gebunden wird wegen der ausrichtung.

ausblenden volle Höhe Delphi-Quelltext
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:
procedure TForm1.FormCreate(Sender: TObject);
var newpanel : Tpanel;
  feld: Integer;  //Variable für Tippfeld
  Zeile: Integer;
  Spalte: Integer;
  Nummer : Integer;
  x : Integer;  //Koordinaten Zeile
  y : Integer;  //Koordinaten Spalte
begin
//Beginn Felder erzeugen

//Ende Felder erzeugen

//Beginn Felder füllen
Nummer :=1;
x:=10;
y:=30;
feld:=1;
  for feld := 1 to 4 do
  begin
  Nummer:=1;
    for Zeile := 1 to 7 do
    begin
    Y:=30;
      for Spalte := 1 to 7 do
      begin
        newpanel := Tpanel.create(form1.FindComponent('Tipp' + inttostr(feld)));
        newpanel.name := 'T' + inttostr(feld) + inttostr(Nummer);
        newpanel.caption := inttostr(Nummer);
        newpanel.parent := form1;
        newpanel.Width:=24;
        newpanel.Height:=24;
        newpanel.left := x;
        newpanel.Top  := y;
        newpanel.visible := true;

        y:=y+24;
        Nummer:=Nummer+1;
      end;
    x:=x+24;
    end;
  end;
end;
//Ende Felder füllen
end.


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Habe jetzt eine andere lösung gefunden.
Ich erstelle die Groupboxes wärend der laufzeit.

ausblenden volle Höhe Delphi-Quelltext
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:
procedure TForm1.FormCreate(Sender: TObject);
var newpanel : Tpanel;
    newgroupbox : tgroupbox;
    ngbx : integer;
    ngby : integer;
    feld: Integer;  //Variable für Tippfeld
    Zeile: Integer;
    Spalte: Integer;
    Nummer : Integer;
    x : Integer;  //Koordinaten Zeile
    y : Integer;  //Koordinaten Spalte
begin
//Beginn Felder füllen

ngbx:=20;
ngby:=50;
  for feld := 1 to 4 do
  begin
  Nummer:=1;
  x:=10;
  y:=30;
  //beginn Groupbox erstellen
  newgroupbox := tgroupbox.Create(Form1);
  newgroupbox.Name := 'Tipp' + inttostr(feld);
  newgroupbox.Caption := 'Tipp' + inttostr(feld);
  newgroupbox.Parent := Form1;
  newgroupbox.Width := 188;
  newgroupbox.Height :=225;
  newgroupbox.Left := ngbx;
  newgroupbox.Top := ngby;
  newgroupbox.Visible := true;
  //ende Groupbox erstellen
    for Zeile := 1 to 7 do
    begin
      for Spalte := 1 to 7 do
      begin
        newpanel := Tpanel.create(newgroupbox);
        newpanel.name := 'T' + inttostr(feld) + inttostr(Nummer);
        newpanel.caption := inttostr(Nummer);
        newpanel.parent := newgroupbox;
        newpanel.Width:=24;
        newpanel.Height:=24;
        newpanel.left := x;
        newpanel.Top  := y;
        newpanel.visible := true;

        x:=x+24;
        Nummer:=Nummer+1;
      end;
    y:=y+24;
    x:=10;
    end;
    ngbx := ngbx + 188 +20 ;
  end;
end;
//Ende Felder füllen


Nun muss ich nur noch für jedes Panel ein onklick generieren, wo ich eine funktion aufrufe.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Vileicht kann mir jemand helfen.
Ich versuche die zur Laufzeit erstellten Panel farblich zu ändern doch es klappt nicht so recht.
Habe zu Testzwecken ein Label erstellt, wo der Name des angeklickten Panel angezeigt wird, was auch funktioniert.
Nur das mit der Farbe klappt nicht.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure Tform1.Myclick(Sender: TObject);   //wenn irgend ein Panel gedrückt wurde
begin
  Label1.Caption:= (Sender as Tpanel).name ;
  (sender as Tpanel).Color := clblue;
end;


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Habe es geschafft.
Ich musste nur beim erstellen der Panel folgende eigenschaft anpassen.
ausblenden Delphi-Quelltext
1:
newpanel.parentbackground := false;					


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt