Makros

Menü:

Extras - Makros

Icon:

clip0126

isyControl kann über Makros automatisiert werden um immer wiederkehrende Aufgaben zu vereinfachen. Dazu wird die Scriptsprache "Pascal Script" eingesetzt. Da isyControl selbst in Delphi, also auch einer auf Pascal basierenden Programmiersprache (Object Pascal) programmiert ist, passt das gut zusammen.

Die Makros bestehen also zunächst aus reinem Pascal-Quellcode, der aber auch einige isyControl-Funktionen aufrufen kann. Zur Erstellung der Makros sind Programmierkenntnisse erforderlich. Für den Einstieg in die Pascal-Programmierung gibt es diverse Tutorials, z.B. dieses:

Basic Pascal Tutorial

 

Bearbeitung von Makros:

Makros1

 

Schnellstart von Makros:

Wählen Sie ein Makro aus der Liste und klicken Sie auf clip0128

makros

 

Makro-Sprache

Über den Pascal-Standard hinaus beinhaltet Pascal Script noch einige Klassen und Funktionen, die an das Object Pascal und die VCL (Visual Component Library) von Delphi angelehnt sind. Leider gibt es dazu keine einfache und übersichtliche Dokumentation.

 

Außerdem können folgende Funktionen von Pascal Script aus aufgerufen werden: Diese Funktionen sind kein Bestandteil der Programmiersprache Pascal, sondern spezielle Funktionen aus isyControl

 

procedure ChangeProjectValue(PrjNr:String; FieldName:String; Value:String);

Ändert den Wert des Feldes Fieldname des Projektes PrjNr in der Datenbank auf Value,

 

function GetMainProjectOf(SubPrj: String): string;

Gibt die Projektnummer des übergeordneten Projektes von SubPrj zurück.

 

procedure SetPrjHierarchieValues(PrjNr:String; HierarchieStd:boolean; 

                                 CalcAuftr, CalcPrz, CalcRg, CalcStd, CalcTlAuftr, CalcTlstd, 

                                 CalcBudget, CalcVerlauf, CalcMitAbgeschl: boolean);

Legt im Projekt PrjNr fest, welche Werte in der Hierarchieberechnung aus den Unterprojekten übernommen werden sollen.
Diese Funktion entspricht dem Dialogfenster bei Projekte - Sonderfunktionen - Hierarchieberechnung.

HierarchieStd: Soll die Standard-Einstellung verwendet werden?

CalcAuftr..CalcMitAbgeschl : Individuelle Einstellungen.

 

procedure SetPrjZuschlagTL(PrjNr:String; AuftrSumZuschl:integer; PauschZuschTL:boolean);

Legt im Projekt PrjNr fest, wie die Zuschläge auf die Teilleistungen abgebildet werden sollen.

Diese Funktion entspricht dem Dialogfenster Zuschläge als Teilleistungen in den HOAI-Einstellungen.

AuftrSumZuschl:

0: Zuschläge nicht berücksichtigen
1: Auftragssummen prozentual erhöhen
2: zusätzliche Teilleistung

PauschZuschTL:

pauschale Zuschläge als eigene Teilleistung anlegen

 

procedure AddStdTeilleistungen(PrjNr:String; TLGruppen:String);

Fügt dem Projekt PrjNr die Standard-Teilleistungen TLGruppen hinzu. TLGruppen kann mehrere Standard-Teilleistungsgruppen enthalten, die durch , getrennt sind.

Entspricht dem Dialogfenster "Standardteilleistungen anlegen" in der Verwaltung von Teilleistungen.

 

procedure GenerateBudgetStunden(PrjNr:String; PersGrp:String);

Generiert Budgetstunden für die Personalgruppe PersGrp auf Projektebene im  Projekt PrjNr.

 

function GetActiveProject:String;

Rückgabe: Projektnummer des momentan im Projektfenster aktiven Projektes.

 

function GetActiveMaKuerzel:String;

Rückgabe: Kürzel des momentan im Personalfenster aktiven Mitarbeiters.

Das Personalfenster kann entweder das eigentliche Personalfenster sein, oder das "PersonalFensterLight", in dem nur die Namen der Mitarbeiter angezeigt werden.

 

function GetActiveZeit(Zeit:TMkZeit):String;

Zeit:

Objekt von Typ TMkZeit. Das Objekt muss vor den Aufruf erzeugt werden. Die Funktion füllt es dann mit den Werten des im Kalender angeklickten Zeiteintrags.

Rückgabe:

true wenn ein Zeiteintrag angeklickt war, false wenn nicht.

 

procedure SetReportProject(PrjNr:string);

Legt das Projekt PrjNr zur Verwendung in Reports fest. Ein folgender Aufruf eines Reports, der sich auf Projekte bezieht, zeigt dann nur dieses Projekt.

 

procedure SetReportMaKuerzel(Kuerzel:string);

Legt den Mitarbeiter Kuerzel zur Verwendung in Reports fest. Ein folgender Aufruf eines Reports, der sich auf Mitarbeiter bezieht, zeigt dann nur diesen Mitarbeiter.

 

procedure ShowReport(ReportName, EinstName:string);

Öffnet den Report ReportName mit der Einstellung EinstName in der Vorschau.

 

procedure ExportReport(ReportName, EinstName, ExportFilename: string);

Exportiert den Report ReportName mit der Einstellung EinstName in die Datei ExportFilename

 

procedure PrintReport(ReportName, EinstName:string);

Druckt den den Report ReportName mit der Einstellung EinstName.

 

procedure EditReport(ReportName, EinstName:string);

Öffnet die Berichtseinstellungen des Reports ReportName mit der Einstellung EinstName.

 

procedure LoadDlgSettings(DlgName, EinstName:string; List:TStringList);

Lädt die Berichtseinstellungen des Dialogfensters DlgName, Name der Einstellung EinstName in eine TStringList. Hier können dann programmgesteuert Änderungen an den Berichtseinstellungen vorgenommen werden.

 

procedure SaveDlgSettings(DlgName, EinstName:string; List:TStringList);

Speichert die Berichtseinstellungen aus der TStringlist zurück in die Datenbank zum Dialogfenster DlgName, Einstellung EinstName.

 

function InputText(QuestionText:string;  var aText:String): boolean;

Zeigt ein Eingabefenster mit einem Textfeld zur Eingabe von Text.

QuestionText:

Text der Eingabeaufforderung

aText:

Eingegebener Text

Rückgabe:

true bei OK, false bei Abbruch

 

function InputDate(QuestionText:string; var aDate:TDateTime): boolean;

Zeigt ein Eingabefenster mit einem Textfeld zur Eingabe eines Datums.

QuestionText:

Text der Eingabeaufforderung

aDate:

Eingegebenes Datum

Rückgabe:

true bei OK, false bei Abbruch

 

function InputMonth(QuestionText:string; var aMonth:TDateTime):boolean;

Zeigt ein Eingabefenster mit einem Textfeld zur Eingabe eines Monats.

QuestionText:

Text der Eingabeaufforderung

aMonth:

Eingegebener Monat

Rückgabe:

true bei OK, false bei Abbruch

 

procedure ShowMessage(msg:string);

Zeigt eine Meldung an.

 

function QuestionYesNo(msg:string):integer;

Zeigt eine Frage an.

Rückgabe:

Konstante mrYes bzw mrNo

 

procedure OpenWindow(Name: String);

Öffnet das isyControl-Fenster Name

 

function IsWindowOpen(Name: String; DoOpen: Boolean): boolean;

Prüft, ob das Fenster Name geöffnet ist. Wenn nicht und DoOpen  ist true, wird es geöffnet.

 

procedure ExecuteSQL(sql:string);

Führt einen SQL-Befehl auf der Datenbank aus

 

function CreateQuery(sql:string):TDataset;

Erzeugt eine Query(Datenbankabfrage)

sql:

SQL-Statement

Rückgabe:

Instanz der Query als TDataset-Objekt. Damit kann die Query im weiteren Programmverlauf angesprochen werden

 

procedure SetQuerySQL(Query: TDataset; sql: string);

Bestimmt das SQL-Statement einer vorhandenen Query

Query:

vorhandene TDataset-Instanz

sql:

SQL-Statement

 

procedure AddQuerySQL(Query: TDataset; Line: string);

Fügt eine Zeile zum SQL-Statement einer vorhandenen Query hinzu.

Query:

vorhandene TDataset-Instanz

Line:

Zeile eines SQL-Statements

 

procedure SetQueryDatabaseName(Query: TDataset; DatabaseName:string);

Setzt den Namen der Datenbank für die Query. Standardmäßig wird der aktuelle Datenbankname benutzt. Dieser Befehl wird nur benötigt, wenn das SQL-Statement auf einer anderen Datenbank, z.B. Archiv, ausgeführt werden soll.

Query:

vorhandene TDataset-Instanz

DatabaseName:

Name der Datenbank

 

procedure ExecuteQuery(Query: TDataset);

Führt das SQL-Statement aus. Alternativ kann auch Query.Active:=true benutzt werden.

Query:

vorhandene TDataset-Instanz

 

function QueryParamByName(Query: TDataset; ParamName:string): TParam;

Sucht einen Query-Parameter im SQL-Statement einer vorhandenen Dataset-Instanz

Query:

vorhandene TDataset-Instanz

ParamName:

Name des gesuchten Parameters

Rückgabe:

Instanz des Parameters als TParam-Objekt. Damit kann der Query-Parameter im weiteren Programmverlauf angesprochen werden

 

procedure FreeQuery(Query:TDataset);

Gibt eine vorhandenen Dataset-Instanz frei.

Query:

vorhandene TDataset-Instanz

 

Zusätzlich gibt es noch diesen Typ zur Verwaltung von Arbeitszeiten:

 

type

 TMkZeit = class

 private

   fPrjNr : string;

   fMaKuerzel : string;

   fStartDateTime : TDateTime;

   fEndDateTime   : TDateTime;

   fStunden : double;

   fTeilleistung: String;

   fTaetigkeit : String;

 public

   procedure Clear;

 

   property PrjNr : string read fPrjNr write fPrjNr;

   property MaKuerzel : string read fMaKuerzel write fMaKuerzel;

   property StartDateTime : TDateTime read fStartDateTime write fStartDateTime;

   property EndDateTime : TDateTime read fEndDateTime write fEndDateTime;

   property Stunden : double read fStunden write fStunden;

   property Teilleistung : String read fTeilleistung write fTeilleistung;

   property Taetigkeit : String read fTaetigkeit write fTaetigkeit;

 end;