Keine Scrollbar bei Elementen mit Anchor

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Keine Scrollbar bei Elementen mit Anchor

Beitrag von MitjaStachowiak »

Hallo,
ich habe während der Arbeit an meinen letzten Programmen ein Paar Fehlerchen in Lazarus entdeckt...
Um diese zu veranschaulichen habe ich gleich mal ein Vorführprogramm hoch geladen:
http://www.mitjastachowiak.de/?File=projects/Bugs.exe
oder
http://www.mitjastachowiak.de/projects/Bugs.exe

Die meisten kann man leicht umgehen, nur mit den Scrollbars komme ich nicht weiter: Immer wenn ich in einer TScrollBox Elemente mit Anchor verbinde, erscheint keine Scrollbar, wenn diese "über den Tellerrand schauen"...
Hat dazu jemand eine Idee?

Ich habe im Augenblick ein wenig zu viel zu tun, um mich dem Bug Tracker anzunehmen. Es währe als nett, wenn jemand den zuständigen Leuten mal den Link schicken könnte; gegebenen Falls in Englisch - sollte schnell gehen und leicht behebbar sein.
- Ich kann's aber auch demnächst irgendwann selber machen -

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Keine Scrollbar bei Elementen mit Anchor

Beitrag von MAC »

also scroll box funkioniert bei mir in der IDE. ich hab ne box genommen - alle 4 seiten nen anchor eingestellt und dann nen bitbutton drauf und bewegt (normaler button geht auch) und die scrollleisten kommen.

Gib mal angaben über dein Lazarus ? FPC ?
Also ich hab SVN 29154 FPC: 2.4.3 - Laz: 0.9.31

sonnst nimmst du das onrezise ereignis und bearbeitest die größer der scrollbox da ... bisschen unschöner aber auch machbar...

Code: Alles auswählen

Signatur := nil;

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Keine Scrollbar bei Elementen mit Anchor

Beitrag von MitjaStachowiak »

Ups, jetzt habe ich mich unklar ausgedrückt *sorry*... Ich meinte, nicht die ScrollBox hat Anker, sondern Elemente in der ScrollBox sind mit Ankern verbunden:
Man setzt in die ScrollBox einen Button und klebt an diesen Button einen zweiten - mit AnchorToNeighbour, so, dass der zweite Button etwas über den Rand geht. Dann gibt es bei mir keine ScrollBars...

Meine Version ist "Lazarus IDE v0.9.28.2 Beta".

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Keine Scrollbar bei Elementen mit Anchor

Beitrag von MAC »

Das könnte eher Feature statt Bug sein :mrgreen:
Wenn ich ein Button zum unteren Rand ( wie bei dir) mit dem Abstand -20 stezte, dann gilt dieser Abstand sehr wahrscheinlich zum Rand der Scrollbox - und der Verändert sich ja nicht wenn man scrollt.

Code: Alles auswählen

Signatur := nil;

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Keine Scrollbar bei Elementen mit Anchor

Beitrag von MitjaStachowiak »

Nein, die Anker sind nicht relativ zur ScrollBox.
In diesem Programm sieht man es nochmal: http://www.mitjastachowiak.de/?/Project ... Funktionen

Hier (http://www.mitjastachowiak.de/projects/Bugs.rar) habe ich nochmal das andere Programm mit Quellcode:
Button 3 hängt an Button 1. Button 3 erzeugt aber keine Scrollbars...

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Keine Scrollbar bei Elementen mit Anchor

Beitrag von MitjaStachowiak »

So, ich habe das Problem (hinreichend) gelöst:
Man macht in die Scrollbox, in der die Scrollbars fehlen, ein Label, das nur ein Leerzeichen (oder so) als Inhalt hat, sodass man es nicht sieht.
Dann gibt man diesem Label die gleiche Position, wie dem letzten Element (Das keine Scrollbars auslöst). Dies kann man zum Beispiel erreichen, in dem man die Werte von ClientToScreen der ScrollBox von den Werten von ClientToScreen dieses letzten Elements abzieht, und dem Label diese Differenz als Position gibt.

Klingt etwas aufwändig, ist es aber eigentlich nicht. Ich würde daraus gerne eine allgemeine Funktion machen. Diese müsste immer dann aufgerufen werden, wenn die Position von einem der Elemente in der Scrollbox geändert wird. Weiß jemand, ob es da einen Trick gibt, der es ermöglicht, eine Funktion immer dann aufzurufen wenn eines dieser Sub-Elemente verschoben wird?

Antworten