Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Hallo Gerhard,

diese Antwort geht an die Liste, direkt schicke ich dir zusätzlich den Screenshot des Dialogs, damit du besser siehst, auf was sich de Code bezieht. Wenn jemand anders den dialog sehen will, kann er/sie die Extension DCM installieren.

Hier zunächst der Code, der von den drei genannten Ereignissen des Rollbalkens "ScrollSatur" (im Bild der senkrechte balken in der Mitte) aufgerufen wird:

   sub scrollSatur(evt as object)

   dim scrollSat as object, dlgm as object, nSat as object

   dlgm = dlg.model
   scrollSat = dlg.getControl("ScrollSatur")
   nSat = dlgm.getByName("nSat")
   nSat.value = Int(100 - scrollSat.value)
   HSV2RGB
   setNew

   End Sub

Wie schon gesagt: ich lese den Wert des Controls und nicht seines Models aus, aber ob das bewusst so gemacht ist, kann ich dir nicht mehr sagen, das ist schon einige jahre her. Ich fülle dann das Feld Sättigung ("nSat", rechts das zweite von oben), hier nun das Model, mit dem zugehörigen Wert und rufe dann die sub HSV2RGB auf, die aus den HSV-Werten die letztlich benötigten RGB-Werte berechnet und in die zugehörigen Felder schreibt, und dann setNew, das das Feld "neu" mit der neuen Farbe füllt.

Natürlich liefert das Ereignis nur den neuen Value zurück, aber es wird eben beim Verschieben des Anfassers mit der Maus immer wieder ausgelöst. Dadurch werden auch immer wieder die subs aufgerufen und die RGB-Werte und das "neu"-Feld verändert. (Beim Aufruf steht das kleine weiße Quadrat im großen Farbfeld in der Mitte, da tut sich bei Grün und Blau praktisch nichts, aber wenn man das Quadrat durch Klicken anderswo positioniert, ändern sich beim Verschieben alle drei Werte.) Beim Rollen durch Klicken in den Rollbalken oder auf die Dreiecke an den Enden oder mit den nachOben- bzw. nachUnten-Tasten kommt natürlich nur immer ein Ereignis pro Klick oder tastendruck.

Nachdem ich den etwas komplizierteren Weg über drei Ereignisse gewählt habe, könnte es sein, dass ich mit dem Ereignis "Beim Justieren" Probleme hatte, aber ich weiß es nicht mehr.

Viel Spaß beim Probieren!

Gerhard


Am 05.11.2018 um 08:34 schrieb Gerhard Dittrich:
Hallo Gerhard,

bei der Dialog-Scrollbar mit der Verknüpfung des Makros mit den Ereignissen "Maustaste losgelassen" und "Mausbewegung bei Tastendruck" wird auch nur der Zielwert angezeigt (genauso wie "bei justieren"). "Taste losgelassen" funktioniert nicht. Auch die Verknüpfung aller 3 Ereignissen mit dem gleichen Makro führt nur zur Anzeige des Zielwerts/Endwert.

Kannst Du mir die relevanten Befehlszeilen schicken, damit ich mir eine Vorstellung davon machen kann, wie Deine Lösung aussieht?

Grüße
Gerhard



Am 03.11.18 um 11:02 schrieb Gerhard Weydt:
Hallo Gerhard,

ich benutze für die Scrollbar im Dialog die Ereignisse "Taste losgelassen", "Maustaste losgelassen" und "Mausbewegung bei Tastendruck", alle mit dem selben Makro verknüpft, das den Value des Controls (nicht des Models!, aber ich kann dir jetzt nicht sagen, ob das etwas bedeutet) verwendet. Ich zeige nicht Datensätze an, sondern berechne mehrere Werte. Die Anzeige dieser Werte läuft jedenfalls beim Verschieben des Anfassers schön durch. Du kannst das sehen, wenn du die Extension DCM installierst und den Scrollbar für die Sättigung mit der Maus bedienst.

Gruß

Gerhard

Am 02.11.2018 um 06:46 schrieb Gerhard Dittrich:


Im Handbuch LibreOffice 6.1, Kapitel Base,  wird das Beispiel "Scrollbar" behandelt, siehe Beispieldatenbank «Beispiel_Datensatz_scrollbar.odb.
(Vielen Dank den Autoren dafür!)

Die Beispieldatenbank "Beispiel_Datensatz_scrollbar.odb" stellt die Scrollbar für Formulare dar.
Wie lauten die Befehle für Dialogboxen?

1. Methode zum Anzeigen der EXAKTEN POSITIONIERUNG des Scroll-Buttons

IM FORMULAR

    oForm = oEvent.Source
    oScrollField = oForm.getByName("Bildlaufleiste")
    oScrollField.ScrollValueMax = loMax
    oScrollField.ScrollValue = loPos

IM DIALOG

    oDialog.getControl("Bildlaufleiste").Model.ScrollValueMax = loMax
    oDialog.getControl("Bildlaufleiste").Model.ScrollValue = loPos

(soweit so gut)

2. Methode zum  AUSLÖSEN DURCH DIE BILDLAUFLEISTE "Beim Justieren"

(a) IM FORMULAR

    oScrollAction = oEvent.Source
    oForm = oScrollAction.Model.Parent
    loPos = oScrollAction.getValue()

(b) IM DIALOG ???

Verwendet man  loPos = oDialog.getControl("Bildlaufleiste").Model.ScrollValue, dann wird der Wert loPos der Position des Scroll-Button nach Loslassen der Mouse-Taste angezeigt.

Gibt es eine "oScrollAction" analoge Methode für Dialogboxen, so dass die einzelnen Datensätze angezeigt werden beim Durchlaufen der Scrollbar und nicht (nur) der Datensatz beim Beenden des Durchlaufens?










--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.