Ich habe folgendes Problem:
Ich möchte in einer Scrollbox quadratische Panels anordnen, mehrere Spalten und mehrere
Zeilen. In dem Moment in dem ich aber den Scrollbar verschiebe und dann einfüge wird das Panel nicht in die richtige Zeile sondern versetzt eingefügt, d.h es bleibe ganze Zeilen frei.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| TForm1 = class(TForm) .... private public panels1: TObjectlist; constructor create(AOwner: TComponent); override; end; |
Mit folgender Routine erzeuge ich die Panel-Liste:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| constructor TForm1.create(AOwner: TComponent); begin inherited create(AOwner); panels1 := TObjectlist.create; panels1.OwnsObjects:=true; end; |
Mit folgender Routine erzeuge ich zur Laufzeit die Panels:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Add1Click(Sender: TObject); var new_panel:TPanel; index:integer; begin new_panel:=TPanel.Create(form1.ScrollBox1); new_panel.Height:=50; new_panel.Width:=50; new_panel.Color:=clwhite; new_panel.Parent:=form1.ScrollBox1; panels1.Add(new_panel); index:=panels1.Count-1; new_panel.Top:= ((index div 3)*70)+20; new_panel.left:= ((index mod 3)*70)+20; end; |
Meine Scrollbox wird nur Horizontal gescrollt und wenn ich das tue und anschließend ein
weiteres Panel einfüge so bleibt der Leerraum stehen.
Es ist egal ob ich die Orginal Delphi 7 Komponente oder die Jedi-Kompo nehme.
Im Moment habe ich keine Ahnung, wie ich das Problem in den Griff kriegen kann.
Weiß jemand Rat?
Danke Thomas