TScrollBox - Designzeitproblem

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

TScrollBox - Designzeitproblem

Beitrag von af0815 »

Ich verwende eine TScrollBox, da ich ein Layout habe das größer als der vorhandene Platz ist. Es sind ganz einfach jede Menge Panel, die per Anchors der Reihe nach vertikal aufgefädelt sind. Soweit so gut. Nur komme ich zur Designzeit nicht an die Panels heran, die am unteren Rand in der Scrollbox verschwunden sind. Der vertikale Scrollbar auf der Seite wird zwar angezeigt, ist aber ohne Funktion und kann nicht mit der Maus erreicht werden. Auch das Scrollrad der Maus ist ohne Funktion.

Wie kann ich da scrollen, damit ich die unteren Panels erreichen kann ?

Edit:
Man kann den VertScrollBar im OI öffnen und dort die Position ändern. Ist aber für eine GUI nicht gerade prickelnd

Lazarus 2.3.0 rmain-2_3-342-gc44d729ba2 FPC 3.2.3 i386-win32-win32/win64
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: TScrollBox - Designzeitproblem

Beitrag von theo »

af0815 hat geschrieben:
Di 31. Mai 2022, 08:40
Man kann den VertScrollBar im OI öffnen und dort die Position ändern. Ist aber für eine GUI nicht gerade prickelnd
So, oder einfach das Formular vergrössern, während der Entwurfszeit.
Etwas anderes wüsste ich auch nicht.

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

Re: TScrollBox - Designzeitproblem

Beitrag von wp_xyz »

Nicht 100% sicher, ob das Folgende ein Control in den sichtbaren Bereich holt, aber ich würde das gewünschte Panel im Objekt-Baum (über dem Objektinspektor) anklicken. Das Panel müsste natürlich einen "sprechenden" Namen haben, so dass man es leicht findet.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TScrollBox - Designzeitproblem

Beitrag von af0815 »

wp_xyz hat geschrieben:
Di 31. Mai 2022, 11:51
Nicht 100% sicher, ob das Folgende ein Control in den sichtbaren Bereich holt, aber ich würde das gewünschte Panel im Objekt-Baum (über dem Objektinspektor) anklicken. Das Panel müsste natürlich einen "sprechenden" Namen haben, so dass man es leicht findet.
Nein, wenn man das macht wird das Panel nicht in den sichtbaren Bereich gebracht. Man kann manchmal die Eckmarkierungen sehen, aber nicht aktiv. Die Namen der Panels sagen alles aus, das ist kein Problem die zu finden bzw. das Richtige zu erwischen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TScrollBox - Designzeitproblem

Beitrag von af0815 »

Das Scrolling zur Designzeit ist definitiv abgeschaltet im Code
Lazarus/lcl/include/controlscrollbar.inc

Code: Alles auswählen

procedure TControlScrollBar.ScrollHandler(var Message: TLMScroll);
var
  NewPos: Longint;
begin
  if (csDesigning in FControl.ComponentState) then
    exit; //prevent wierdness in IDE.
...
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: TScrollBox - Designzeitproblem

Beitrag von fliegermichl »

Wobei ich das spasseshalber mal auskommentiert hab, IDE neu gebacken und es geht trotzdem nicht.

Benutzeravatar
kupferstecher
Beiträge: 422
Registriert: Do 17. Nov 2016, 11:52

Re: TScrollBox - Designzeitproblem

Beitrag von kupferstecher »

In so einem Spezialfall würde ich wohl die Panels als Seiten in ein TNotebook packen und dann erst in der Form-Create in der Scrollbox sauber untereinander anordnen. Ist zwar ein Workaround, aber über den OI dann gut zu navigieren.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TScrollBox - Designzeitproblem

Beitrag von charlytango »

af0815 hat geschrieben:
Di 31. Mai 2022, 08:40
Es sind ganz einfach jede Menge Panel, die per Anchors der Reihe nach vertikal aufgefädelt sind.
nur eine Interessenfrage ohne Lösungskompetenz...

@af0815
Sind die Panels mehrere Instanzen vom gleichen Typ, also so etwas wie die fortlaufenden Forms in Access? Scrollen und editieren in einem samt drauf liegender Funktionen in Form von Buttons. Ist ziemlich fein und wurde von den Benutzern als Design immer gerne angenommen.

Gibt es ähnliches fertig in Lazarus/FPC?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TScrollBox - Designzeitproblem

Beitrag von af0815 »

charlytango hat geschrieben:
So 5. Jun 2022, 10:04
@af0815
Sind die Panels mehrere Instanzen vom gleichen Typ, also so etwas wie die fortlaufenden Forms in Access? Scrollen und editieren in einem samt drauf liegender Funktionen in Form von Buttons. Ist ziemlich fein und wurde von den Benutzern als Design immer gerne angenommen.
Nein die Panels können absolut verschieden sein. Auch kann das Panel einfach nur ein Container für Frames sein, oder Buttons beinhalten. Wären die vom gleichen Typ, bräuchte ich das Scrollen nicht, da ich das erste konfiguriere und die restlichen Panels dann funktionieren. So habe ich es bisher gemacht und kein Problem. Nur diesmal wird das Benutzerinterface inhomogener, deshalb ist für mich die Frage ganz einfach aufgetaucht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: TScrollBox - Designzeitproblem

Beitrag von wp_xyz »

Noch eine Idee:
- Setze das ChildSizing der Scrollbox auf ControlsPerLine=1, Layout=cclLeftToRightThenTopToBottom, EnlargeHorizontal=crsHomogenousChildResize, ShrinkHorizontal=crsHomogenousChildResize. Damit werden die Panels horizontal über die gesamte Scrollbox-Breite ausgedehnt; vertikal nehmen sie den jeweils benötigten Platz ein (damit das unterste Control nicht am Rand klebt, muss es ein unteres Borderspacing bekommen). Damit das alles funktioniert, dürfen die einzelnen Panels keine Anker und nur noch Align=alNone haben.
- Die Reihenfolge der Panel wird beim ChildSizing durch die Z-Reihenfolge bestimmt. Klicke das zu bearbeitende Panel im Objekt-Baum an und wähle im Kontext-Menü "Move to back". Damit kommt dieses Panel in der Scrollbox an den oberen Rand, so dass du deine Änderungen vornehmen kannst.
- Um die Reihenfolge zur Laufzeit wieder richtigzustellen, würde ich im OnCreate des Formulars für jedes Panel in der Reihenfolge von oben nach unten die Methode BringToFront aufrufen:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.BringToFront;    // das wird das oberste Panel
  Panel2.BringToFront;    // das wird unterhalb von Panel1 angeordnet
  Panel3BringTofront;     // und das unterhalb von Panel2
  // etc

Antworten