Open Location von Formularen anpassen

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

Moderator: Moderatoren

tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Open Location von Formularen anpassen

Beitrag von tobiman26 »

Hallo meine lieben Forum Besucher und Nutzer
Meine Situation:
Ich in Base eine auf Formularen basierende Anwendung erstellt mit der der Nutzer mit den Hinterlegten Daten bequem arbeiten und neue Daten hinzufügen kann.
Mein Problem:
Einige Formulare öffnen andere und bleiben offen jetzt soll sich das neue Zentriert über dem alten öffnen ich kenne mich leider mit Basic nicht so gut aus. Ich weiß das es in C# ein Befehl dafür gibt

Code: Alles auswählen

form1.StartPosition = FormStartPosition.CenterParent
aber gibt es sowas für basic auch?
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Open Location von Formularen anpassen

Beitrag von Stephan »

Ich in Base eine auf Formularen basierende Anwendung erstellt


Das meint genau was dasteht? Ich frage das deshalb weil ein "Formular" bei OO/LO üblicherweise ein 'spezielles' Textdokument meint, also nicht einen Dialog, wohingegen in der MS-Office-Welt z.b. bei Access üblicherweise (auch) ein Dialog (eine 'Form') als Formular angesprochen wird.

("auch" weil die Dinge bei MS Word noch einmal anders sind denn dort gibt es 'eigentliche' Formulare, Ansicht-Symbolleisten-Formular, die aber nur näherungsweise den Formularen in OO/LO entsprechen, weil diese, bezogen auf MS Word, anzusprechen wären mit Ansicht-Symbolleisten-Steuerelementtoolbox.)
aber gibt es sowas für basic auch?
nicht das ich wüsste.

Sowohl 'echte' Formulare (also spezielle Textdokumente) als auch Basic-Dialoge müssten durch Umrechnung anhand ihrer Größe positioniert werden, d.h. Größe und Position des bestehenden Dialoges müssen ausgelesen werden und dann anhand der Größe des neu anzuzeigenden Dialogs dessen x- und y-Position berechnet werden.
Ich habe dafür leider keinen fertigen Code zur Hand, für die Situation eines Basic-Dialogs habe ich schnell die angehängte Testdatei erstellt, deren Code ist:

Code: Alles auswählen

Dim frm
Dim dia
Dim frm2
Dim dia2

Dim pX
Dim pY

Sub Main
BasicLibraries.LoadLibrary("Standard")
DialogLibraries.LoadLibrary("Standard")
frm = DialogLibraries.Standard.Dialog1
dia = CreateUnoDialog(frm)
	
dia.execute()
End Sub


Sub zweiter_dialog(xx, yy)
BasicLibraries.LoadLibrary("Standard")
DialogLibraries.LoadLibrary("Standard")
frm2 = DialogLibraries.Standard.Dialog2
dia2 = CreateUnoDialog(frm2)
dia2.Model.PositionX = xx
dia2.Model.PositionY = yy
dia2.execute()
End Sub

Sub links_oben()
	pX = dia.Model.PositionX
	pY = dia.Model.PositionY
	zweiter_dialog(pX, pY)
End Sub

Sub mitte()
	pX = dia.Model.PositionX
	pY = dia.Model.PositionY
	breite = dia.Model.Width
	hoehe = dia.Model.Height
	
	'zweiter hat Höhe: 50 / Breite: 100
	tmpX = (breite/2)-(100/2)+pX
	tmpY = (hoehe/2)-(50/2)+pY
	
	zweiter_dialog(tmpX, tmpY)
End Sub
ACHTUNG: die Größenangaben entsprechen nicht Pixeln sondern sog. Twips, deren GRöße von den Fonteinstellungen des Systems abhängig sind.



Gruß
Stephan
Dateianhänge
dialog-test.odt
(12.52 KiB) 183-mal heruntergeladen
tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Re: Open Location von Formularen anpassen

Beitrag von tobiman26 »

ah ok danke
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
tobiman26
***
Beiträge: 63
Registriert: Mi, 20.01.2016 15:17
Kontaktdaten:

Re: Open Location von Formularen anpassen

Beitrag von tobiman26 »

Also bei mir sind es Formulare und keine Dialoge und dein Code lässt sich leider nicht auf Formulare übernehmen
Formulare in die Daten aus der Datenbank geladen werden
Mfg Tobias 8)

Windows 7 64bit + AOO 4.1.2 + LO 5.0.0.0
OpenSUSE 42.1 32 bit + LO 5.0.2.2
Antworten