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