Position im Tabellenkontollfeld
Moderator: Moderatoren
Position im Tabellenkontollfeld
Hallo,
in einem Formular habe ich ein Tabellenkontrollfeld ( MainForm_Grid ).
Die Inhalte werden durch einen Dialog bearbeitet. Danach kommt es zum reload
des Hauptformulares um dessen Ansicht zu aktualisieren. Dadurch springt der Markierer
oder der Cursor des Tabellenfeldes wieder in die 1. Position.
Wie kann ich mir merken welche Position ( also die Zeile ) der Markierer
vor dem bearbeiten hatte, und wie kann ich ihn nach dem reload wieder dort hinbewegen?
So kann ich einfach weiterabeiten und muß nicht durch die Zeilen scrollen.
Bisher fand ich oForm.last() und oForm.first(), das hilft mir aber nicht.
Danke
in einem Formular habe ich ein Tabellenkontrollfeld ( MainForm_Grid ).
Die Inhalte werden durch einen Dialog bearbeitet. Danach kommt es zum reload
des Hauptformulares um dessen Ansicht zu aktualisieren. Dadurch springt der Markierer
oder der Cursor des Tabellenfeldes wieder in die 1. Position.
Wie kann ich mir merken welche Position ( also die Zeile ) der Markierer
vor dem bearbeiten hatte, und wie kann ich ihn nach dem reload wieder dort hinbewegen?
So kann ich einfach weiterabeiten und muß nicht durch die Zeilen scrollen.
Bisher fand ich oForm.last() und oForm.first(), das hilft mir aber nicht.
Danke
Re: Position im Tabellenkontollfeld
Eigentlich geht es ganz einfach:
Leider sind solche Hinweise äußerst schwer zu finden. Ich wurde durch andere Helfer auf den richtigen Weg gebracht (Dank u.a. an F3K, RobertG, DPunch). Gruß Jürgen
Code: Alles auswählen
dim curRow as Integer
curRow = oForm.getRow ' die aktuelle Zeile merken
oForm.reload
oForm.absolute(curRow) ' neu setzen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Position im Tabellenkontollfeld
Ich bedanke mich, hat sofort funktioniert! 
Grüße

Das kann man laut sagen!Leider sind solche Hinweise äußerst schwer zu finden.
Da schließe ich mich glatt an.Ich wurde durch andere Helfer auf den richtigen Weg gebracht (Dank u.a. an F3K, RobertG, DPunch). Gruß Jürgen
Grüße
Re: Position im Tabellenkontollfeld
eigentlich nicht, es braucht nur die api-referenz:Leider sind solche Hinweise äußerst schwer zu finden.
http://www.openoffice.org/api/docs/comm ... l#absolute
und um dort die richtige Stelle zu finden entweder XRAY (http://sourceforge.net/projects/ooomacr ... ion%205.2/) oder ähnliche Tools oder ganz einfach (ich verwende das auf Bequemlichkeit meist):
Msgbox <objekt>.dbg_properties
Msgbox <objekt>.dbg_methods
Gruß
Stephan
Re: Position im Tabellenkontollfeld
Theoretisch hast du recht (und diese Seite zu XResultSet ist bei mir inzwischen standardmäßig als Tab geöffnet). Aber wenn man wissen will, welche Eigenschaften und Methoden es bei einem Objekt gibt, muss man sehr viel durch die Interfaces (Schnittstellen) suchen und blättern, und auch über Xray ist es ziemlich umständlich.Stephan hat geschrieben:eigentlich nicht, es braucht nur die api-referenz:
http://www.openoffice.org/api/docs/comm ... l#absolute
Am wichtigsten bei deinem Beitrag dürfte der Hinweis auf diese Hilfsmittel (API, Xray) sein, und der sollte auch TheTheo und späteren Lesern helfen. Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: Position im Tabellenkontollfeld
Entschuldigung, nur ich verstehe echt Null warum.und auch über Xray ist es ziemlich umständlich
ja, und so lag es auch in meiner AbsichtAm wichtigsten bei deinem Beitrag dürfte der Hinweis auf diese Hilfsmittel (API, Xray) sein, und der sollte auch TheTheo und späteren Lesern helfen.
Eine ernsthafte Diskussion zum Thema erwarte ich hingegen nicht, da ja heutzutage eine Mehrheit glaubt programmieren müsse man nicht lernen und eine Programmiersprache wäre dann gut dokumentiert wenn es genügend Beispielcode im Netz gibt, den man mit Copy und Paste in seine eigenen Programm reinkopieren und sich anschließend Programmierer nennen kann.
Ja, das mag unfreundlich klingen ist aber so ungefähr das was bei Vielen 'Programmierern' hinsichtlich VBA statttfindet und was diese 'Programmier' nun auch bei StarBasic & Co erwarten.
Du, Jürgen, bist damit nicht gemeint, allein solltest auch Du verstehen können das:
Leider sind solche Hinweise äußerst schwer zu finden. Ich wurde durch andere Helfer auf den richtigen Weg gebracht (Dank u.a. an F3K, RobertG, DPunch).
eigentlich nichts weiter ist als ein notwendiger Lernprozess und man nicht erwarten kann irgendwas auf der Welt zu können ohne es zu erlernen.
Gruß
Stephan
Re: Position im Tabellenkontollfeld
Klar, weil du weisst wo du suchen musst. Dann ist es immer einfach.Entschuldigung, nur ich verstehe echt Null warum.
Du warst so freundlich die richtige Stelle in der Api referenz anzugeben.
(http://www.openoffice.org/api/docs/comm ... l#absolute)
Was du nicht sagst ist, woher du das weisst. Bzw wie der logische Zusammenhang zu finden ist
ausgerechnet an dieser Stelle nachzulesen.
Du glaubst doch nicht ernsthaft das hier von einer guten Dokumentation die Rede sein kann. Ich arbeite mit... programmieren müsse man nicht lernen und eine Programmiersprache wäre dann gut dokumentiert ....
StarOffice von den ersten Tagen an. Insbesondere ist der Zusammenhang Formulare und Basic oder Macros
einfach grauenhaft dokumentiert. Und das ist immer noch so. Ich habe immer noch schneller einen Dialog
geschrieben ( also quasi ein eigenes Formular entwickelt ) als mich durch die "Informationen" zu kämpfen, wie die
verschiedenen Formularelemente durch Basic anzusprechen und zu steuern sind.
Was jetzt, programmieren lernen oder die Api-Referenz zu verstehen? Das ist nicht das Gleiche!...nichts weiter ist als ein notwendiger Lernprozess und man nicht erwarten kann irgendwas auf der Welt zu können ohne es zu erlernen.
Aber egal, machen wir mal weiter, nur so als sportliche Herausforderung.
Ich hatte gefragt:
Dank Deiner und Jürgens Hilfe ist das jetzt so. Nochmals Dank.Wie kann ich mir merken welche Position ( also die Zeile ) der Markierer
vor dem bearbeiten hatte, und wie kann ich ihn nach dem reload wieder dort hinbewegen?
Aber - die Position des Markierers im sichtbaren Bereich des Grids hat sich verändert.
Das Grid zeigt 8 nur Datensätze aus einer gößeren Menge an. Nach dem reload und setzten des
Markieres ( oForm.absolute(igendwas) ) steht er irgendwo im sichtbaren Bereich,
nur nicht mehr an der gleichen Stelle wie vor der Bearbeitung.
Wie bekomme ich den Markierer im sichtbaren Breich des Grids wieder dorthin wo er vorher stand?
Ich will gar nicht wissen wie das geht. Was ich gerne wüsste, insbesondere von Stephan, ist,
wo oder wonach in der Api-Referenz nun zu suchen ist und noch wichtiger:
Wie bist du darauf gekommen? (Falls eine Lösung überhaupt gibt)
Das wäre sehr hllfreich.
Dank und Grüße
Re: Position im Tabellenkontollfeld
Moin,
Angenommen ich möchte etwas übers Tabellenkontrollfeld wissen:
Dann mache ich z.B. ein XRAY auf das Tabellenkontrollfeld (mit MRI geht das auch):
Wenn ich oben links die Services anklicke habe ich folgendes Ergebnis:
Nun z.B. den Service com.sun.star.form.component.GridControl markieren und auf API Doc klicken - ob das online funzt kann ich nicht sagen, ich habe das SDK für Windows lokal auf meinem Rechner und XRAY entsprechend konfiguriert.
Dann öffnet Firefox mir diese lokale Seite von wo aus ich weiternavigiere ...
Nun ein XRAY auf das Formular:
Markiere ich nun die Methode (oben links) absolute und klicke auf API Doc kommt:
HTH
Gruß R
ich zeige Dir mal, wie ich das mache:TheoTheo hat geschrieben:Ich will gar nicht wissen wie das geht. Was ich gerne wüsste, insbesondere von Stephan, ist,
wo oder wonach in der Api-Referenz nun zu suchen ist und noch wichtiger:
Wie bist du darauf gekommen? (Falls eine Lösung überhaupt gibt)
Angenommen ich möchte etwas übers Tabellenkontrollfeld wissen:
Dann mache ich z.B. ein XRAY auf das Tabellenkontrollfeld (mit MRI geht das auch):
Code: Alles auswählen
Sub S_xray_Grid
oform = Thiscomponent.drawpage.forms.MainForm
ogrid = oform.MainForm_Grid
xray ogrid
End Sub
Dann öffnet Firefox mir diese lokale Seite von wo aus ich weiternavigiere ...
Nun ein XRAY auf das Formular:
Code: Alles auswählen
Sub S_xray_Form
oform = Thiscomponent.drawpage.forms.MainForm
xray oform
End Sub
... also das gleiche, was Stephan oben verlinkt hat.absolute
boolean
absolute( [in] long row )
raises( SQLException );
Description
moves the cursor to the given row number in the result set.
If the row number is positive, the cursor moves to the given row number with respect to the beginning of the result set. The first row is row 1, the second is row 2, and so on.
If the given row number is negative, the cursor moves to an absolute row position with respect to the end of the result set. For example, calling absolute(-1) positions the cursor on the last row, absolute(-2) indicates the next-to-last row, and so on.
An attempt to position the cursor beyond the first/last row in the result set leaves the cursor before/after the first/last row, respectively.
Note: Calling absolute(1) is the same as calling XResultSet::first() . Calling moveToPosition(-1) is the same as calling moveToLast().
HTH
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO