Scrollbox bei Laufzeit erzeugen

Rund um die LCL und andere Komponenten
Antworten
Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

Scrollbox bei Laufzeit erzeugen

Beitrag von Hartkern »

Hallo,

ich versuche gerade eine Scrollbox samt einem TImage als Inhalt während der Laufzeit zu erzeugen, jedoch fehlen die Scrollbars!

Code: Alles auswählen

constructor TMap.create(aOwner: TComponent);
begin
  SScrBox :=TScrollbox.Create(aOwner);
  SScrBox.Parent :=(aOwner as TWinControl);
  SScrBox.AutoSize:=true;
  SScrBox.AutoScroll:=true;
  FKarte :=TImage.Create(aOwner); //Ob aowner oder SScrBox macht keinen Unterschied
  FKarte.Parent :=SScrBox;
  FKarte.Picture.LoadfromFile('gittertest.bmp');
  FKarte.AutoSize:=true;
  FKarte.Visible := True;
  FKarte.enabled := True;
  FKarte.show;
 
end;                      

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Scrollbox bei Laufzeit erzeugen

Beitrag von wp_xyz »

Wenn du Scrollbox.AutoSize auf true setzst, stellt sich die Größe der Scrollbox so ein, dass der komplette Inhalt, also das Bild, sichtbar ist. Daher sind in diesem Fall keine Scrollbars erforderlich und werden ausgeblendet. Lass mal Scrollbox.AutoSize auf false.

Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

Re: Scrollbox bei Laufzeit erzeugen

Beitrag von Hartkern »

Wenn ich die Autosize := False setz, ist die ScrollBox wesentlich kleiner als ihr Owner,das geladenen Image wird ebenso nicht komplett ausgefüllt angezeigt, in meinem Fall ein TPanel auf Form1. Ebenfalls tauchen auch keine Scrollbars auf.

Achja das Bild was geladen wird, ist auf jedenfall so groß das eine Scrollbox sinnvoll ist.

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: Scrollbox bei Laufzeit erzeugen

Beitrag von theo »

Code: Alles auswählen

begin
  SScrBox :=TScrollbox.Create(...);
  SScrBox.Parent :=(...);
  SScrBox.Align:=alClient; //<--
  SScrBox.AutoScroll:=true;
  FKarte :=TImage.Create(...); 
  FKarte.Parent :=SScrBox;
  FKarte.Picture.LoadfromFile('...');
  FKarte.AutoSize:=true;
  FKarte.Visible := True;
  FKarte.enabled := True;
  FKarte.show;
end;     

Antworten