FAQ - Programmierung (StarBasic und Allgmeines)

Häufige Fragen kurz beantwortet

Moderator: Moderatoren

Forumsregeln
Hier bitte kurze Antworten auf häufige Fragen posten, dabei bitte möglichst auf Dateianhänge verzichten.
Bitte hier (möglichst) keine Diskussionen führen.
Antworten
F3K Total
********
Beiträge: 3566
Registriert: Mo, 28.02.2011 17:49

FAQ - Programmierung (StarBasic und Allgmeines)

Beitrag von F3K Total »

1. Fenster per Makro maximieren oder minimieren

Folgendes Makro z.B. an das Ereignis "Ansicht wurde erzeugt" des Dokumentes (Extras/Anpassen/Ereignisse) binden.
Bei Base-Formularen vorher in den Entwurfsmodus wechseln.

Code: Alles auswählen

sub S_MaximizeFrame
    oframe = Thiscomponent.currentcontroller.frame
    owindow = oframe.getContainerWindow()
       If Not IsNull(oWindow) Then
          oWindow.IsMaximized = True
          'oWindow.IsMinimized = True
       End If
end sub
Stephan
********
Beiträge: 12298
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FAQ - Programmierung

Beitrag von Stephan »

2. Übersicht der sog. 'dispatch-commands'

siehe: http://de.openoffice.info/viewtopic.php ... 47#p291147
Stephan
********
Beiträge: 12298
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FAQ - Programmierung (StarBasic und Allgmeines)

Beitrag von Stephan »

3. [Calc] alle Zellen des aktiven Tabellenblattes markieren welche eine bedingte Formatierung enthalten

Code: Alles auswählen

Sub Main
	akt_blatt = ThisComponent.CurrentController.ActiveSheet
	
	cur = akt_blatt.CreateCursor
	cur.GotoEndOfUsedArea(True)
	letzte_Zeile = Cur.getRangeAddress.EndRow
	letzte_Spalte = Cur.getRangeAddress.EndColumn
	
	bereiche = ThisComponent.CreateInstance("com.sun.star.sheet.SheetCellRanges")
	For i = 0 To letzte_Zeile
		For j = 0 To letzte_Spalte
			If akt_blatt.getCellByPosition(j, i).ConditionalFormatLocal.Count <> 0 Then
				bereiche.addRangeAddress(akt_blatt.getCellByPosition(j, i).getRangeAddress(), False)
			End If
		Next j
	Next i
	
	ctr = ThisComponent.CurrentController
	ctr.Select(bereiche)
	
End Sub
Stephan
********
Beiträge: 12298
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FAQ - Programmierung (StarBasic und Allgmeines)

Beitrag von Stephan »

4. einen Basic-Dialog abhängig vom bestehenden Dialog positionieren

Beispieldatei:
dialog-test.odt
(12.52 KiB) 959-mal heruntergeladen
siehe auch:
viewtopic.php?f=18&p=263207#p263207
Stephan
********
Beiträge: 12298
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FAQ - Programmierung (StarBasic und Allgmeines)

Beitrag von Stephan »

5. Zwischen OpenOffice und LibreOffice per Makro unterscheiden

Beispieldatei:
OpenOffice-LibreOffice-unterscheiden.ods
(9.8 KiB) 776-mal heruntergeladen
siehe auch:
viewtopic.php?f=18&t=67144&p=263618#p263618
viewtopic.php?t=62130
Stephan
********
Beiträge: 12298
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FAQ - Programmierung (StarBasic und Allgmeines)

Beitrag von Stephan »

6. Parameter/Umgebungsvariablen für Environ-Funktion

Environ() gibt den Wert einer Umgebungsvariablen als Zeichenkette zurück. Die verfügbaren Umgebungsvariablen hängen vom eingesetzten Betriebssystem ab.

Beispiel:

Code: Alles auswählen

Sub Test_Environ()
	Msgbox Environ("USERNAME")
End Sub
Für z.B. Windows 7 sind folgende Umgebungsvariablen für Environ() verfügbar:

ALLUSERSPROFILE
APPDATA
CommonProgramFiles
COMPUTERNAME
ComSpec
FP_NO_HOST_CHECK
HOMEDRIVE
HOMEPATH
LOCALAPPDATA
LOGONSERVER
MOZ_PLUGIN_PATH
MpConfig_ProductAppDataPath
MpConfig_ProductCodeName
MpConfig_ProductPath
MpConfig_ProductUserAppDataPath
MpConfig_ReportingGUID
NUMBER_OF_PROCESSORS
OS
Path
PATHEXT
PROCESSOR_ARCHITECTURE
PROCESSOR_IDENTIFIER
PROCESSOR_LEVEL
PROCESSOR_REVISION
ProgramData
ProgramFiles
PSModulePath
PUBLIC
SESSIONNAME
SystemDrive
SystemRoot
TEMP
TMP
USERDOMAIN
USERNAME
USERPROFILE
WecVersionForRosebud.6298
windir
windows_tracing_flags
windows_tracing_logfile

siehe auch:
https://msdn.microsoft.com/de-de/librar ... 64486.aspx
Stephan
********
Beiträge: 12298
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FAQ - Programmierung (StarBasic und Allgmeines)

Beitrag von Stephan »

7. Datums-Steuerelement leeren (getestet LO 7.1.4)

Nachdem ich mich aktuell mit dem Datums-Steuerelement rumgeärgert habe, nachfolgender Tipp zum Leeren Desselben.

Mir hilft das in http://de.openoffice.info/viewtopic.php?f=8&t=49389 Geschriebene leider nicht, Erfolg hatte ich mittels:

Code: Alles auswählen

'...
oDialog.getControl("meinControl").setEmpty()
oDialog.getControl("meinControl").Text = ""




Folgender, merkwürdiger, Weg funktioniert auch:

Code: Alles auswählen

oDialog.getControl("meinControl").Text = "01.01.1900"
Dim x3 As New com.sun.star.util.Date
oDialog.getControl("meinControl").Date = x3
oDialog.getControl("meinControl").Text = ""
"merkwürdig" weil die vorstehende erste Code-Zeile ausgeführt werden MUSS und dabei der zugewiesene String (irgend)ein real existierendes Datum sein muss, mit einem Leerstring funktioniert es nicht.

Sowohl:

Code: Alles auswählen

oDialog.getControl("meinControl").Text = ""
Dim x3 As New com.sun.star.util.Date
oDialog.getControl("meinControl").Date = x3
oDialog.getControl("meinControl").Text = ""
als auch:

Code: Alles auswählen

Dim x3 As New com.sun.star.util.Date
oDialog.getControl("meinControl").Date = x3
oDialog.getControl("meinControl").Text = ""
führen zur sichtbaren Anzeige "01.01.1900" im Datumsfeld.


Hinweis: .Date als Struct "com.sun.star.util.Date" gilt nur für neuere LO-Versionen (https://api.libreoffice.org/docs/idl/re ... 3d82dd3350), für ältere LO- und alle OO-Versionen ist .Date weiterhin ein Long-Wert (http://www.openoffice.org/api/docs/comm ... .html#Date).
Antworten