Base Formular maximieren

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

Moderator: Moderatoren

Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Base Formular maximieren

Beitrag von Stancer »

Hallo zusammen,
diese Thema gabs zwar schon aber irgendwie ist da nix brauchbares rausgekommen.
Deshalb meine Frage. Ich möchte per Makro ein Baseinternes Formular öffnen. Dieses soll dann aber auch gleich maximiert werden und nicht wie üblich in irgend einer Ecke hängen.
Das Formular öffne ich so:

Code: Alles auswählen

Sub Artikeldatei_click 'openForm

   Dim prop(1) as New com.sun.star.beans.PropertyValue 
   Dim dbContext As Object 
   Dim oDataSource As Object 

   
   dbContext = createUnoService("com.sun.star.sdb.DatabaseContext") 
   oDataSource = dbContext.GetByName("Datenbankname") 
   oForms = oDatasource.DatabaseDocument.FormDocuments 
   prop(0).Name="ActiveConnection" 
   prop(0).Value=oDataSource.getConnection("","")  
   prop(1).Name="OpenMode" 
   prop(1).Value="open" 
   oForms.loadComponentFromURL("Formularname","_blank",63,prop()) 
   

end sub

Nun möchte ich diese Code gern so erweitern das das Formula direkt nach dem Öffnen maximiert wird.
Kann mir da jemand helfen?

MfG Stancer
OpenOffice portable 2.1, Win XP
Stancer
***
Beiträge: 67
Registriert: Do, 21.06.2007 14:05

Re: Base Formular maximieren

Beitrag von Stancer »

Morgen zusammen,
Nachdem mir hier anscheinend niemand helfen kann/möchte, habe ich ,meine scheinbar aussichtslose Suche fortgesetzt und siehe da, ich bin fündig geworden.
Wen es auch nervt das Base Formulare immer in irgendwelchen Ecken des Fensters rumhängen, der braucht nur dieses Makro:

Code: Alles auswählen

Declare Function ShowWindow Lib "user32" _
(ByVal lHwnd As Long, ByVal lCmdShow As Long) As Boolean 

sub MaximizeFrame( aFrame as object ) 
    dim frame 
    dim window 
    dim handle 

    window = aframe.getContainerWindow() 
    handle = window.getWindowHandle(dimarray(), 1) 
        REM 1=WIN32 

    ShowWindow( handle, 3 ) 

end sub 

sub onWhenLoading( oEvent as object ) 

   MaximizeFrame( oEvent.Source.Parent.Parent.CurrentController.Frame) 

end sub 


1. Code in Makrobibliothek speichern
2. Formular im Bearbeitungsmodus öffnen
3. Formular-Navigator benutzen und Mainform auswählen
4. Rechtsklick darauf und auf Eigenschaften
5. In Formulareigenschaften nun auf Ereignisse
6. "Beim Laden" auswählen und das Makro anklicken
7. Nun noch OnWhenLoading auswählen und OK drücken
8. Formular speichern, Datenbank speichern
9. fertig
OpenOffice portable 2.1, Win XP
keyboard-billy
***
Beiträge: 53
Registriert: Mo, 27.11.2006 15:17
Wohnort: Nürnberg
Kontaktdaten:

Re: Base Formular maximieren

Beitrag von keyboard-billy »

... oder aber etwas übersichtlicher und kürzer :wink: :

Code: Alles auswählen

Option Explicit

Declare Function ShowWindow Lib "user32.dll" _
(ByVal hwnd&, ByVal nCmdShow&) as Boolean

Sub maxFrame()
  Dim oFrame as Object, oWindow as Object, handle&

  oFrame = ThisComponent.CurrentController.Frame
  oWindow = oFrame.ContainerWindow()
  handle = oWindow.getWindowHandle(dimarray(), 1) ' 1 = WIN32
  ShowWindow( handle, 3 )                         ' 3 = SW_MAXIMIZE
End Sub
Und ansonsten unter Formular/Eigenschaften/Beim Laden dann halt die Sub maxFrame angeben.

Btw.: Du scheinst Dich mit der Windows API auszukennen: Wie kann ich die aktuelle Bildschirmauflösung ermitteln? Und gibt es auch eine Windows-API Funktion mit der man die Fenstergröße und -Position einstellen kann?

Greets,
Billy
... im Prinzip ist alles einfach. Vorausgesetzt man weiss, wie's geht!
Antworten