Autoscroll im TForm funktioniert nicht richtig?

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Autoscroll im TForm funktioniert nicht richtig?

Beitrag von Ralph59 »

Hallo,

ich habe da ein kleines Problem, und ich denke, dass dieses ein Bug ist.

Erst mal die Daten, die Monta gerne haben möchte:
Lazarus Version: 0.9.29
Datum: 2010-11-02
FPC Version: 2.4.0
SVN Revision: 28034
i386-win32-win32/win64

Ich arbeite mit einem WIN7 64 Bit Rechner.

Hier zu meinem Problem:

Ich erstelle gerade ein automatisch generiertes Form zur Darstellung von Grids, das Grid kann in der Spalten und Zeilenzahl variieren, optional kann ein Label oberhalb des Grids dargestellt werden sowie unterschiedliche Buttons unterhalb des Grids mit eintsprechenden angepassten Labels.

Nun prüfe ich nach, ob das Form auf meinem Bildschirm passt. Wenn das Form größer als die darzustellende Fläche ist, dann möchte ich das Form wenn möglich in der Breite oder der höhe entsprechend darstellen, so dass der Benutzer dann das Form immer noch vertikal oder horizontal scrollen kann (je jach Notwendigkeit).

Sobald ich jedoch die properties form.width oder/und form.height setze, habe ich keine Scrollmöglichkeit mehr. Zum Verständniss stelle ich einen Teil des code bei:

Code: Alles auswählen

procedure TSpecDialog1.SetFormParam(Sender, myStringgrid1: TObject; myLabelSpace: Array of integer);
var
  inPosBottomComponents, inPosRightGrid: integer;
begin
  with myStringgrid1 as TStringGrid do
  begin
    inPosBottomComponents:=Top + Height + 20;
    inPosRightGrid:= Left + Width ;
  end;
 
  with Sender as TForm do
  begin
    WindowState:=wsNormal;
    Position:=poScreenCenter;
    if inPosRightGrid > (screen.Monitors[Screen.ActiveForm.Monitor.MonitorNum].Width - 150) then
      WindowState:=wsMaximized
    else
      begin
        WindowState:=wsNormal;
        //Width:=inPosRightGrid;
      end;
    //Height:=inPosBottomComponents;
    AutoSize:=False;
    AutoScroll:= true;
    ;
  end;
end;


Der oben dargestellte code funktioniert, hat jedoch den Nachteil, dass das Form dann sehr klein (im Verhältnis zum darzustellenden Inhalt) auf dem Bildschirm erscheint.

Setze ich vielleicht nur die falschen properties, oder ist das wirklich ein bug?

PS:Ich habe mich natürlich vorher versucht schlau zu machen, und u.a. folgendes gefunden
http://bugs.freepascal.org/view.php?id=16799

Ich könnte auch den kompletten Code posten, ist jedoch noch nicht so, dass ich damit zufrieden bin.

Mit freundlichem Gruß

Ralph
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

Antworten