Kurze Frage zum UNOGridControl

Hallo zusammen,

ich hab mir gerade einen Dialog gebaut und im Makro ein GridControl.

Dazu hab ich eine Frage: Ist das ausschließlich Read-Only? Habe gerade
mit xRay keine Eigenschaft für die Spalten gefunden, um darein zu
schreiben. Die Daten stammen aus einem Array und die Zeilenköpfe auch.
Beide hab ich mit addRows an das DataModel übergeben und es wird auch
korrekt dargestellt.

Viele Grüße

Stefan Deutsch

Hallo Stefan,

du hast wahrscheinlich das DefaultGridDataModel verwendet und möglicherweise die Beschreibung von Thomas Krumbein, aus der auch ich das Verfahren gelernt habe.
ich habe gerade gestern aufgrund einer Anfrage in der discuss-Liste rausgeknobelt, wie man ein sortierbares Tabellengitter erzeugen kann (bei Bedaf kann ich dir die Mail weiterleiten), und dabei gesehen, dass es auch das Interface
https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1awt_1_1grid_1_1XMutableGridDataModel.html
gibt. Ich habe da allerdings noch nichts ausprobiert, aber die genannten Methoden dürften das wohl sein.

Gruß
Gerhard

Hi Gerhard,

bitte leit mir die Mail weiter. Über die Methode updateCellData() kann
ich den Zellinhalt im Makrocode manipulieren. Bei Neuaufruf des DIalogs
wird dann auch korrekt der neue Wert ausgegeben. Über getCellData() kann
ich auch das Array verändern, aus dem die Daten für das Grid stammen.
Nur direkt im Dialog kann ich aber immer noch nicht in das Grid
schreiben. Wäre das nicht ein Anwendungsgebiet für einen Listener, der
darauf wartet, dass ich in eine Zelle clicke und dann einen neuen Dialog
öffnet, indem ich den gewünschten Wert eintrage? Wäre nur eine etwas
umständliche Bedienung.

Noch eine Nebenfrage: Kann das Gridcontrol keine Variablen in Long
verarbeiten. Wenn ich diese übergebe, wird nichts angezeigt. Übergebe
ich Integer klappt's.

Vielen Dank schonmal! Stefan

Hallo Stefan, hallo Gerhard,

im aktuellen Handbuch LO 7.2 steht dafür ein Dialogbeispiel - aber auch
ohne dass die Daten direkt editiert werden. Ich klicke auf den Datensatz
in dem Gridcontrol und bearbeite die Daten mit Formularfeldern obberhalb
des Gridcontrol. Dann speichere ich das dort und mache ein Update für
die entsprechende Zeile.

Selbst wenn Du dort direkt in das Gridcontrol schreiben kannst: Du wirst
immer den gesamte SQL-Code selbst erstellen müssen. Und vermutlich ist
das ja nicht mit der Eingabe getan - denn wann wird abgespeichert? Das
wird dann vermutlich ein deutlicher Mehraufwand.

Gruß

Robert

Hallo zusammen,

dein Beispiel hat mir weitergeholfen Robert, danke! Es werden auf
Kommission ausgegebene Artikel in dem Dialog abgerechnet, bzw. das, was
zurückommt. Dadurch ist das eh recht aufwendig.

Viele Grüße

Stefan

Hallo Stefan,

die Mail geht direkt an dich.

Mit einer Long-Variable klappt es bei mir. Ich habe bisher einen Array von Strings übergeben, nun habe ich das als Variant definiert und einen der numerischen Werte mit CLng in Long umgewandelt (es ist allerdings immer noch eine Ganzzahl); aber der Code funktioniert immer noch. Was bei dir möglicherweise anders ist, weiß ich kja nicht. Aber letztlich wird ja ein String angezeigt, wenn es mit direkter Übergabe von Long nicht klappt, dann mache doch zunächst einen String daraus.

Beim Rumprobieren hatte ich mal den MouseListener des Grids etabliert, der lieferte currentColumn; ich schätze, dass er auch currentRow liefert, habe aber nicht darauf geachtet. Der Listener springt aber auch an, wenn man in die Kopfzeile klickt und dann sicher auch bei der Kopfspalte, das müsste sich hoffentliich über den Wert von Zeile und Spalte entscheiden lassen.
Ich sehe jetzt, dass Robert das in seinem Beispiel verwendet. Er schreibt nichts vom Listener, ich gehe davon aus, dass er das GridControl im DesignMode hinzugefügt hat und dann dort das Makro beim Mausereignis aufruft.
Meine Mail bezieht sich auf das Erzeugen des sortierbaren Grids per MakroCode, danach hatte Jörg gefragt. Das ist wohl nicht nötig, wenn man das GridControl im DesignMode hinzufügt, ich interpretiere Roberts Beispiel so, dass dadurch schon der allgemeine Fall eines MutableGrid implementiert wird. Bei meinen Versuchen bin ich mit dem Grid aus dem Design Mode nicht weitergekommen, aber da hatte ich mich wohl irgendwo verrannt, so wie es aussieht.

Gruß
Gerhard