Scrollbar ermitteln

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Scrollbar ermitteln

Beitrag von Manfred »

Wenn ich mir ein Dialogfenster baue und dann später mit der Maus die Größe verändere, dann kann es ja vorkommen, das irgendwann ein Scrollbar rechts oder unten auftaucht. Wie kann ich das ermitteln, ob er vorhanden ist oder wieder weg ist. Bzw. anders gefragt, wenn ich ein Dialogfenster komplett benutze und dann durch ändern der Breite einen Scrollbalken unten erzeuge, was muß ich dann machen, damit das untere Element nicht darunter verschwindet, sondern entsprechend höher geschoben werden kann? Wie und woher bekomme ich dafür die Maße und die Rückmeldung, das es nun einen Scrollbalken gibt, oder nicht mehr.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Scrollbar ermitteln

Beitrag von Jan »

Hallo Manfred,

gerade diese Woche musste ich mich mal wieder damit beschäftigen. Bei mir läuft das so: Ich gebe dem Dialog oder der Tabpage und den relevanten XbParts auf diesem Dialog ein :layoutAlign mit, damit der sich automoatisch korrekt resized. Und sage ihm (bei Bedarf, da mache ich nicht grundsätzlich) oDlg:drawingArea:scrollbars := XBP_SCROLLBAR_VERT (weil ich nur die vertikale haben möchte, ansonsten muß man natürlich auch die horizontale dazu nehmen).

Bei mir klappt das in dieser Kombination einwandfrei. Automatisch. Deswegen frage ich auch nie ab, wie groß jetzt eigentich der Dialog ist, oder ob es die Scrollbar schon gibt.

Einen Punkt in Deinem Beitrag habe ich nicht ganz verstanden. Also renn ich da vielleicht offene Türen ein: oDlg:drawingArea:currentSize() gibt mir die aktuelle Größe zurück.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Scrollbar ermitteln

Beitrag von Manfred »

LayoutAlign gibt es aber erst in der 2er?
Ich passe es gerade noch in der 1.9er an. Ich werde wohl erst in den nächsten Tagen dazu kommen auf die 2er im scharfen Betrieb umzustellen. Also mß ich da noch etwas warten.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Scrollbar ermitteln

Beitrag von Jan »

Oh! OK, da Du zuletzt immer mit der 2er was gefragt hattest war ich davon asugegangen, daß das hier auch der Fall sei.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Scrollbar ermitteln

Beitrag von Manfred »

indirekt. Ich möchte noch zweigleisig fahren, bis der erste User die 2er im Einsatz hate und nichts grobes findet. Ich hatte aber auch LayoutAlign wieder vergessen. Du hattest es ja schonmal erwähnt vor längerer Zeit. Kommt direkt auf meine Liste für Samstag in OS.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Scrollbar ermitteln

Beitrag von Jan »

Ich hab sowas in der 1.9 immer über den oDlg:resize gemacht. Wo ich mir noch unsicher ist, ist dieser Text aus der 2.0-Hilfe: "Under Windows, an XbpIWindow object displays scroll bars only if needed. No scroll bars are displayed if all child objects are visible on the screen, regardless of the value assigned to :scrollbars." Ich meine mich erinnern zu können, das ich in de r1.9 eine Scrollbar erzwingen konnte, egal, ob alles auf den Dialog passte oder nicht. Da bin ich mir aber im Moment nicht mehr so ganz sicher.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Scrollbar ermitteln

Beitrag von AUGE_OHR »

@Manfred : wenn der Scrollbalken kommt und was verdeckt ... was willst du dagegen tun ?

wie man beim plazieren von XbParts die o:DrawingArea benutzt sollte man ein "resize" ebenso einsetzten.

Code: Alles auswählen

oDlg:DrawingArea:Resize := {|aOld,aNew,oSelf| Do_Resize(aOriginal,aNew,oSelf) }
aNew enthält die Grösse der (neuen) o:DrawingArea ... egal ob nun gerade Scrollbars "visible" sind oder nicht.

---

ich nutzt nun NICHT aOld, aber wohl der LayoutManager in der v1.9x
wenn man 100 x min/max/normal macht sieht man was passiert -> Chaos
deshalb verwende ich immer die "aOriginal" Daten in Relation zu aNew

auf diesem einfachen Prinzip beruht auch DXE_Dialog.

nach dem o:Create läuft mein LayoutManager durch die DrawingArea:Childlist() und sammelt alle Infos von den XbParts.
der DXE_Dialog hat nun seine eigene o:Resize() Methode die auch reagiert wenn man ein Table PC von Landscape auf Portait wechselt. da der DXE_Dialog auch auf Strg-MausWheel reagiert ist auch ein "Zoom" mit den Fingern auf dem Table PC möglich.

---

um eine Scrollbar zu "erzwingen" muss man
1.) o:drawingArea:scrollbars := "bestücken"
2.) eine XbpStatic auf die o:DrawingArea platzieren welche grösser ist als o:drawingArea
3.) nach der Anzeige (o:Show) muss man ein "resize" einleiten damit Scrollbars erscheinen

---

Frage : beachtet der v2.x LayoutManager auch Fonts oder nur Pos / Size ?
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Scrollbar ermitteln

Beitrag von Manfred »

Hi Jimmy
ich dachte mir, das ich das beim Resize berücksichtige und dann alles etwas nach oben schiebe und kleiner mache.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Scrollbar ermitteln

Beitrag von AUGE_OHR »

Manfred hat geschrieben: So, 21. Jan 2018 9:14 ich dachte mir, das ich das beim Resize berücksichtige und dann alles etwas nach oben schiebe und kleiner mache.
damit du dann in einer rekursiven Schleife landest ... :roll:
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Scrollbar ermitteln

Beitrag von Manfred »

war wie gesagt nur eine idee, weil es mir zum ersten mal bewußt aufgefallen ist. Aber wieso eine rekursive Schleife? Wenn ich den Dialog mit der Maus in der größe ziehe, oder drücke sollte doch nur solange ein resize stattfinden, bis ich die Maustaste loslasse. Aber ist auch egal. Ich dachte nur es gäbe da etwas vom System her, was ich übersehen habe. Ich begrenze die Fläche so weit es geht dann eben nach unten ab, setze also den untersten part so, das der Scrollbalken nicht stört und das sollte genügen. Ist eh nur ein Dialog, welcher selten aufgerufen wird.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten