Dialogfeldinhalt per Mausklick in Tabelle füllen

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

Moderator: Moderatoren

Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Dialogfeldinhalt per Mausklick in Tabelle füllen

Beitrag von Mobbi »

Hallo Leute,

ich möchte in einem Dialog in einem Eingabefeld eine Zelladresse eingeben können z.B. "$Daten.$C$62" bzw. in einem anderen Feld den Inhalt der Tabellenzelle
Diese möchte ich aber nicht händisch eintippen sondern direkt in der Tabelle durch klick in die genötigte Zelle übernehmen
Die Adresse läßt über den Selection change Listener bestimmen.
Wie bekomme ich es hin, dass ich auch auf das Tabellenblatt klicken kann, obwohl der Dialog noch aktiv ist und auch sichtbar ist?
Die Funktionalität wäre ungefähr wie bei der Zielwertsuche, da kann ich auch trotz offenen Dialog die Formelzelle und variable Zelle direkt aus der Tabelle picken.

viele Grüße
Mobbi
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Dialogfeldinhalt per Mausklick in Tabelle füllen

Beitrag von Stephan »

Du brauchst eine nicht-modalen Dialog, z.B.:

Code: Alles auswählen

Sub erzeuge_warten()
warten_model = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
warten_model.setPropertyValue("Width",  150) '343
warten_model.setPropertyValue("Height", 20)
warten_model.SetPropertyValue("Title","Bitte etwas Geduld")

oMod_warten = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten
	.setPropertyValue("Name","warten1")
	.setPropertyValue("PositionX",5) '192
	.setPropertyValue("PositionY",5) 
	.setPropertyValue("Width",140)
	.setPropertyValue("Height",13)
	.setPropertyValue("Label","Formatierung wird gelesen ...")
	'.setPropertyValue("Align",1)
	'nicht verfügbar in OOo 1.x
	'.setPropertyValue("VerticalAlign",1)
End With
warten_model.insertByName("warten1", oMod_warten)
warten_dialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
warten_dialog.setModel(warten_model)

oWin2 = CreateUnoService("com.sun.star.awt.Toolkit")
warten_dialog.createPeer(oWin2, null)
warten_dialog.setVisible(True)
End Sub
Der Code ist aus mottco entnommen:
http://www.calc-info.de/makros.htm#mottco

dort findest Du weitere DEtails, im Hauptdialog ist auch gezeigt wie Textfelder und WEiteres zu realisieren sind.


Gruß
Stephan
Mobbi
**
Beiträge: 23
Registriert: Do, 11.12.2008 21:52

Re: Dialogfeldinhalt per Mausklick in Tabelle füllen

Beitrag von Mobbi »

Danke Stephan für die kurze Info.
Deinen Quellcode hab ich gleich mal probiert. An nachfolgender Stelle kommt aber jedesmal ne Fehlermeldung und dann kann ich den Dialog nicht mehr schließen und muss ooo abschießen.
Stephan hat geschrieben: warten_dialog.setVisible(True)
Ansonsten trifft die Auswahlfunktionalität aus Mottco ganau auf das was ich suche.
Wo finde ich weitere Infos zu den nicht-modalen Dialogen. Im Forum bin ich nicht wirklich weiter gekommen.
Wie erzeuge ich die Felder? Wie bekomme ich dann Zugriff auf die Tabelle trotz geöffnetem Dialog?

Als Hintergrundinformation eine Infos zu dem Projekt:
Da ich ständig viele Preislisten anpassen muss, wollte ich eine Art erweiterte Zielwertsuche (Massenzielwertbearbeitung) programmieren.
Da soll man wie gewohrt Zielzelle, Zielwertquelle und variable Zelle auswählen können und zusätzlich die Angabe der betroffenen Zeilen z.B. 10 bis 400
Die schleifen und Zielwertermittlung läuft auch schon testweise, nur möchte ich gern via Click die Quell und Zielzellen etc. picken können.
Damit ich nicht jedesmal meine Programmierung anpassen muss.

Gruß
Mobbi
Antworten