ScrollBox zur Designzeit scrollen

Für Fragen rund um die Ide und zum Debugger
TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

ScrollBox zur Designzeit scrollen

Beitrag von TBug »

Kann jemand einem DAU (also mir) sagen, wie ich zur Designzeit eine TScrollBox hoch/runter bzw. links/rechts scrolle?

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von Komoluna »

Ganz einfach:

Code: Alles auswählen

Scrollbox1.HorzScrollBar.Position;
Scrollbox1.VertScrollBar.Position
MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von TBug »

Komoluna hat geschrieben:Ganz einfach:

Code: Alles auswählen

Scrollbox1.HorzScrollBar.Position;
Scrollbox1.VertScrollBar.Position
Wenn ich "zur Laufzeit" gefragt hätte, dann wäre Deine Antwort richtig gewesen.

Aber ich fragte "zur Designzeit", also im Formulardesigner.

.

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

Re: ScrollBox zur Designzeit scrollen

Beitrag von wp_xyz »

Geht nicht zur Designzeit.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von Komoluna »

Bei mir geht das. Beispielprojekt anbei.

MFG

Komoluna
Dateianhänge
scrollbox demo.rar
(123.16 KiB) 123-mal heruntergeladen
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

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

Re: ScrollBox zur Designzeit scrollen

Beitrag von wp_xyz »

Oh... Wieder etwas gelernt.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von Komoluna »

Soweit ich mich erinnern kann, geht das schon mindestens seit Laz 1.0...

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von TBug »

Komoluna hat geschrieben:Soweit ich mich erinnern kann, geht das schon mindestens seit Laz 1.0...
So ein schönes Demo mit einer Scrollbox.

Und jetzt nochmals die Frage:

Wie kann ich jetzt zur Designzeit, also im Formulardesigner, mit der Maus oder Tastatur in der Scrollbox scrollen, damit mir zum Beispiel jetzt der untere oder linke Teil der Scrollbox angezeigt wird, so dass ich den Button, welcher in der Scrollbox ist zu sehen bekomme?

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von Komoluna »

Das geht leider nicht. Die Komponenten werden zur Designtime zwar so angezeit, wie im richtigen Programm, aber so weit ich weiß, werden sämtliche Inputs an den Formulareditor weitergegeben(Klick/doppelklick, etc.)
Wenn man selber eine Komponenten entwickelt, müsste man theoretisch trotzdem auf Input events reagieren können, aber die eingebauten Controls machen das glaube ich nicht.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: ScrollBox zur Designzeit scrollen

Beitrag von Michl »

TBug hat geschrieben:wie ich zur Designzeit eine TScrollBox hoch/runter bzw. links/rechts scrolle?
Komoluna hat geschrieben:Ganz einfach:

Code: Alles auswählen

Scrollbox1.HorzScrollBar.Position;
Scrollbox1.VertScrollBar.Position
Allerdings hat hier noch niemand gesagt, dass du das Ganze nicht im Quelltexteditor oder per Maus, sondern im Objektinspektor unter Eigenschaften von Scrollbox1 -> HorzScrollBar -> Position erreichst.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von TBug »

Michl hat geschrieben:Allerdings hat hier noch niemand gesagt, dass du das Ganze nicht im Quelltexteditor oder per Maus, sondern im Objektinspektor unter Eigenschaften von Scrollbox1 -> HorzScrollBar -> Position erreichst.
So mach ich das schon die ganze Zeit seit ich mich mit dieser Scrollbox herumärgere.

Wie bequem ist dies doch in Delphi. Dort kann man schön mit der Maus einfach die Scrollbar anpacken und den sichtbaren Bereich verschieben.

Mittlerweile zweifle ich daran, ob es eine gute Idee war, meine Delphi-Anwendungen und Komponenten nach Lazarus zu portieren. Ständig nur Probleme und Einschränkungen und Verrenkungen um das zu erreichen was mit Delphi ein Einzeiler gewesen ist.

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

Re: ScrollBox zur Designzeit scrollen

Beitrag von wp_xyz »

TBug hat geschrieben:[Mittlerweile zweifle ich daran, ob es eine gute Idee war, meine Delphi-Anwendungen und Komponenten nach Lazarus zu portieren. Ständig nur Probleme und Einschränkungen und Verrenkungen um das zu erreichen was mit Delphi ein Einzeiler gewesen ist.
Das ist nur eine Frage der Gewohnheit. Mittlerweile empfinde ich dasselbe, wenn ich mal wieder ein altes Projekt mit Delphi überarbeite. Wahnsinn, was mit Lazarus geht und mit Delphi nicht!

Zurück zu deinem Problem:
Erstmal: einen Button in einer Scrollbox zu verstecken, so dass er vom Programmierer und also auch vom Benutzer nicht gesehen wird - diese Idee könnte glatt von MS sein! Wirklich nicht sehr benutzerfreundlich.
Aber wie dem auch sei: Ich würde den Button und den anderen Content nicht direkt auf der Scrollbox platzieren, sondern auf einem separat entworfenen Formular, das zur Laufzeit in die Scrollbox eingefügt wird (Form.Parent := Scrollbox). Du musst nur darauf achten, dass dieses Formular schon existiert, bevor es für die Scrollbox benötigt wird.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von TBug »

wp_xyz hat geschrieben:Zurück zu deinem Problem:
Erstmal: einen Button in einer Scrollbox zu verstecken, so dass er vom Programmierer und also auch vom Benutzer nicht gesehen wird - diese Idee könnte glatt von MS sein! Wirklich nicht sehr benutzerfreundlich.
Es geht ja nicht um einen Button, sondern hier um Einstellmöglichkeiten, wie im Objektinspektor, um in meiner Kompenenten-Test-Anwendung sämliche Einstellungen einer Komponete zur Laufzeit zu testen.

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: ScrollBox zur Designzeit scrollen

Beitrag von TBug »

Ei, ei, ei und noch ein Hühnerei.

Die Scrollbox ist unter Windows ja zu überhaupt nichts zu gebrauchen.

Das Ding ist ja eine BugBox.
(siehe Projekt im Anhang)
Dateianhänge
BugScrollBox.zip
(125.32 KiB) 86-mal heruntergeladen

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

Re: ScrollBox zur Designzeit scrollen

Beitrag von wp_xyz »

Gemach, gemach...

Hab dein Projekt gerade nach Delphi 7 übertragen, und da verhält sich die Scrollbox genauso. Also ist schon mal Lazarus nicht schuld...

Ich habe mal in deinem Scrollby-Code, die negativen Zahlen eingesetzt (also -100 statt 100, bzw 100 statt -100), und dann ist alles normal.

ScrollBy und Scrollbar haben nichts miteinander zu tun. Was sich also mit ScrollBy verändert, das ist die Eigenschaft "Top" der eingefügten Controls - diese werden genau um den "Scrollby"-Wert verändert. Diese Änderung wird nicht an den Scrollbar weitergegeben. Es gibt also zwei Möglichkeiten, in einer Scrollbox zu scrollen: mit Hilfe der ScrollBy-Methode (wie beschrieben: Veränderung der relativen Position der Controls auf der Scrollbox), und mit Hilfe des Scrollbars (Scrollbox.VertScrollbar.Position := Scrollbox.VertScrollbar.Position + 100; d.h. Veränderung des sichtbaren Ausschnitts der hinter der Scrollbox liegenden Fläche).

Es ist wie wenn du mit der Kamera ein Panorama aufnehmen willst: Du kannst entweder mit der Kamera über die Landschaft schwenken, oder die Kamera still halten und die Landschaft vorbeischieben (ok - ich geb's zu, das Beispiel ist etwas konstruiert...).

Antworten