Wie scrolle ich ein Grid-Control (auf einem Basic-Dialog) per Code?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Stephan
********
Beiträge: 10169
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Wie scrolle ich ein Grid-Control (auf einem Basic-Dialog) per Code?

Beitrag von Stephan » Mi, 06.09.2017 01:32

Hallo,

ich muss in einem Grid-Control (mit langer Datenliste) einige Zeilen per Code markieren. Weil dabei u.U. für den Anwender garkeine Markierung direkt sichtbar wird (nämlich dann wenn das Grid zufällig so gescrollt ist das keine der zu markierenden Zeilen im sichtbaren Bereich liegt) würde ich gerne, nach der Markierung, das Grid per Code so scrollen das die oberste markierte Zeile am oberen Rand des Grids liegt.

Ich finde nix dazu.

Hat jemand eine Lösung?


Beispieldatei hängt an.


Gruß
Stephan
Dateianhänge
Beispiel_GridControl.ods
(11.77 KiB) 19-mal heruntergeladen

Toxitom
********
Beiträge: 3439
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Wie scrolle ich ein Grid-Control (auf einem Basic-Dialog) per Code?

Beitrag von Toxitom » Mi, 06.09.2017 19:47

Hey Stefan,

hmm, eigentlich gar nicht so schwierig;))

die Methode: gotoCell(Spaltenindex, Rowindex) - diese Zelle wird dann als erste im Grid angezeigt.

Für Dein Beispiel:

Code: Alles auswählen

Sub markieren()
	'hier wir die k-Zeile markiert:
	gc = oDialogControl.getControl("MyGrid")
	gc.selectRow(5)
	gc.gotoCell(0, 5)    '<-- setzt die 5. Zeile als erste im Display, ebenso die erste Spalte.
End Sub
Falls sie nicht sichtbar ist!

Ist sie eh noch im Display, wird nicht gescrollt. In dem Fall erst mal ne niedrigere wählen (z.b. 10) - dann wieder zurück;)

Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 5- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Stephan
********
Beiträge: 10169
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wie scrolle ich ein Grid-Control (auf einem Basic-Dialog) per Code?

Beitrag von Stephan » Mi, 06.09.2017 22:52

die Methode: gotoCell(Spaltenindex, Rowindex)
hatte ich gestern bereits in der IDL-Referenz gefunden und las sich gut, aber funktionierte scheinbar nicht.
In dem Fall erst mal ne niedrigere wählen (z.b. 10) - dann wieder zurück;)
In der Tat, das klappt. Danke.

Ich verstehe jetzt garnicht, warum ich das gestern nicht probiert hatte, aber ich war der festen Überzeugung mit gc.gotoCell(0, 5) müsste die 5. Zeile in erste Position gescrollt werden (an den oberen Rand des Grid). Ich habe, jetzt im Nachhinein, keine Ahnung wie ich darauf kam, denn in der IDL-Referenz steht das garnicht, sondern nur: "moves the cursor to the given cell".


btw.:
auf Deiner Seite, ist die Beispieldatei nicht erreichbar:
http://www.mic-consulting.de/de/artikel ... ridDlg.ods



Gruß
Stephan

Toxitom
********
Beiträge: 3439
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Wie scrolle ich ein Grid-Control (auf einem Basic-Dialog) per Code?

Beitrag von Toxitom » Do, 07.09.2017 10:22

Danke für den Hinweis.
auf Deiner Seite, ist die Beispieldatei nicht erreichbar:
http://www.mic-consulting.de/de/artikel ... ridDlg.ods
geht jetzt:)
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 5- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste