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.