OBS/Auswertung/DataInOut/SpreadGrid: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Spread Grid ==
Ein Spread Grid ist eine flexible Tabelle mit aufbereiteten Daten. Über Scripting können hier bliebige Werte aufbereitet werden, bei denen dann die Daten entsprechend bestimmter Eingaben ausgewertet und angezeigt werden.
[[Datei:SpreadGrid.png]]
==Verwendung von eigenen Macros innerhalb des Grids==
==Verwendung von eigenen Macros innerhalb des Grids==


Zeile 18: Zeile 25:


===Schreibt den Text "cText" in die angegebene Zelle===
===Schreibt den Text "cText" in die angegebene Zelle===
<code>procedure SetCellText(oGrid: TObject; x, y: integer; cText: string);</code>
<code>procedure SetCellText(oGrid: TObject; x, y: integer; cText: string);</code><br/>
<code>procedure SetGridText(oGrid: TObject; cCell: string; cText: string);</code>
<code>procedure SetGridText(oGrid: TObject; cCell: string; cText: string);</code><br/>
Beispiele:
Beispiele:
<source lang="delphi">  
<source lang="delphi">  
Zeile 26: Zeile 33:
</source>  
</source>  
===Schreibt eine Zahl nValue in die angegebene Zelle===
===Schreibt eine Zahl nValue in die angegebene Zelle===
<code>procedure SetCellValue(oGrid: TObject; x, y: integer; nValue: Double);</code>
<code>procedure SetCellValue(oGrid: TObject; x, y: integer; nValue: Double);</code><br/>
<code>procedure SetGridValue(oGrid: TObject; cCell: string; nValue: Double);</code>
<code>procedure SetGridValue(oGrid: TObject; cCell: string; nValue: Double);</code><br/>


===Liest den Text aus der angegebenen Zelle===
===Liest den Text aus der angegebenen Zelle===
<code>function GetCellText(oGrid: TObject; x, y: integer): string;</code>
<code>function GetCellText(oGrid: TObject; x, y: integer): string;</code><br/>
<code>function GetGridText(oGrid: TObject; cCell: string): string;</code>
<code>function GetGridText(oGrid: TObject; cCell: string): string;</code><br/>


===Liest einen Wert aus der angebenen Zelle===
===Liest einen Wert aus der angebenen Zelle===
<code>function GetCellValue(oGrid: TObject; x, y: integer): Double;</code>
<code>function GetCellValue(oGrid: TObject; x, y: integer): Double;</code><br/>
<code>function GetGridValue(oGrid: TObject; cCell: string): Double;</code>
<code>function GetGridValue(oGrid: TObject; cCell: string): Double;</code><br/>


===Setzt die Zeilenanzahl des Grids===
===Setzt die Zeilenanzahl des Grids===
<code>procedure SetGridRowCount(oGrid: TObject; nRows: integer);</code>
<code>procedure SetGridRowCount(oGrid: TObject; nRows: integer);</code><br/>


===Setzt die Spaltenanzahl des Grids===
===Setzt die Spaltenanzahl des Grids===
<code>procedure SetGridColCount(oGrid: TObject; nCols: integer);</code>
<code>procedure SetGridColCount(oGrid: TObject; nCols: integer);</code><br/>


===Leert die angebenen Zellen bestimmter Zeilen===
===Leert die angebenen Zellen bestimmter Zeilen===
<code>procedure ClearGridRows(oGrid: TObject; nRow, nRowCount: Integer);</code>
<code>procedure ClearGridRows(oGrid: TObject; nRow, nRowCount: Integer);</code><br/>
Beispiel:
Beispiel:
<source lang="delphi">  
<source lang="delphi">  
Zeile 58: Zeile 65:


===Setzt die Hintergrundfarbe der Zeile nRow auf die Farbe oColor===
===Setzt die Hintergrundfarbe der Zeile nRow auf die Farbe oColor===
<code>procedure SetGridRowColor(oGrid: TObject; nRow: integer; oColor: TColor);</code>
<code>procedure SetGridRowColor(oGrid: TObject; nRow: integer; oColor: TColor);</code><br/>
Beispiel:
Beispiel:
<source lang="delphi">  
<source lang="delphi">  
Zeile 66: Zeile 73:


===Aufruf beim Klicken auf eine Zelle===
===Aufruf beim Klicken auf eine Zelle===
<code>procedure OnClickCell(ARow,  ACol: Integer);</code>
<code>procedure OnClickCell(ARow,  ACol: Integer);</code><br/>
Beispiel:
Beispiel:
<source lang="delphi">  
<source lang="delphi">  
Zeile 78: Zeile 85:


===Aufruf wenn auf einen Zelle im Grid doppelgeklickt wird===
===Aufruf wenn auf einen Zelle im Grid doppelgeklickt wird===
<code>procedure OnDblClickCell(ARow,  ACol: Integer);</code>
<code>procedure OnDblClickCell(ARow,  ACol: Integer);</code><br/>
<source lang="delphi">  
<source lang="delphi">  
procedure OnDblClickCell(ARow,  ACol: Integer);
procedure OnDblClickCell(ARow,  ACol: Integer);
Zeile 89: Zeile 96:


===Aufruf wenn die ausgewählte Zelle gewechselt wird===
===Aufruf wenn die ausgewählte Zelle gewechselt wird===
<code>procedure OnCellChanging(OldRow, OldCol, NewRow, NewCol: Integer);</code>
<code>procedure OnCellChanging(OldRow, OldCol, NewRow, NewCol: Integer);</code><br/>
<source lang="delphi">  
<source lang="delphi">  
procedure OnCellChanging(OldRow, OldCol, NewRow, NewCol: Integer);
procedure OnCellChanging(OldRow, OldCol, NewRow, NewCol: Integer);
Zeile 102: Zeile 109:


===Aufruf wenn auf {{Key|F8 Grid füllen}} geklickt wird===
===Aufruf wenn auf {{Key|F8 Grid füllen}} geklickt wird===
<code>procedure FillGrid();</code>   
<code>procedure FillGrid();</code><br/>   
Beispiel:
Beispiel:
<source lang="delphi">  
<source lang="delphi">  
Zeile 111: Zeile 118:
end;   
end;   
</source>
</source>
===Kalkulation sofort durchführen===
<code>RefreshGrid(oGrid:TObject):String;</code><br/>


==Folgende Funktionen können innerhalb des Grids verwendet werden:==
==Folgende Funktionen können innerhalb des Grids verwendet werden:==
Zeile 208: Zeile 218:
* MATCH(lookup; range) : returns the index of the element param in the range
* MATCH(lookup; range) : returns the index of the element param in the range
* INDEX(range; val1, val2) : returns the value of element at index val1,val2 in the range
* INDEX(range; val1, val2) : returns the value of element at index val1,val2 in the range
== Beispiele ==
=== Artikel-Lieferanten-Auswerung ===
Warengruppe und ein Datumsbereich können eingegeben werden.
Es werden für den Zeitraum pro Artikel die Lieferanten und Einkaufswerte ausgewertet.
[[Datei:ArtikelLieferantenEinkaufsauswertung.zip]]

Aktuelle Version vom 23. Juli 2024, 12:35 Uhr

Spread Grid

Ein Spread Grid ist eine flexible Tabelle mit aufbereiteten Daten. Über Scripting können hier bliebige Werte aufbereitet werden, bei denen dann die Daten entsprechend bestimmter Eingaben ausgewertet und angezeigt werden.


SpreadGrid.png

Verwendung von eigenen Macros innerhalb des Grids

Um ein eigenes Macro innerhalb des Grids zu verwenden muss das Macro im dafür vorgesehenen Bereich angelegt werden (rechts neben dem Grid).

Beispiel für ein Macro mit Parametern:

function Test(nVal: integer; cText: string): string;
begin   
    result := cText+ ' ' + IntToStr(nVal);
end;

der Aufruf erfolgt innerhalb einer Zelle:

=macro("test", "15", "Ausgabe")


Folgende Methoden stehen innerhalb der Makros für den Zugriff auf das Grid bereit

Schreibt den Text "cText" in die angegebene Zelle

procedure SetCellText(oGrid: TObject; x, y: integer; cText: string);
procedure SetGridText(oGrid: TObject; cCell: string; cText: string);
Beispiele:

 
SetCellText(oGrid, 2, 2, 'Test');
SetGridText(oGrid, 'C3', 'Test');

Schreibt eine Zahl nValue in die angegebene Zelle

procedure SetCellValue(oGrid: TObject; x, y: integer; nValue: Double);
procedure SetGridValue(oGrid: TObject; cCell: string; nValue: Double);

Liest den Text aus der angegebenen Zelle

function GetCellText(oGrid: TObject; x, y: integer): string;
function GetGridText(oGrid: TObject; cCell: string): string;

Liest einen Wert aus der angebenen Zelle

function GetCellValue(oGrid: TObject; x, y: integer): Double;
function GetGridValue(oGrid: TObject; cCell: string): Double;

Setzt die Zeilenanzahl des Grids

procedure SetGridRowCount(oGrid: TObject; nRows: integer);

Setzt die Spaltenanzahl des Grids

procedure SetGridColCount(oGrid: TObject; nCols: integer);

Leert die angebenen Zellen bestimmter Zeilen

procedure ClearGridRows(oGrid: TObject; nRow, nRowCount: Integer);
Beispiel:

 
ClearGridRows(oGrid,5,0);//Leert alle Zellen ab Zeile 5

Leer die angegebenen Zellen bestimmter Spalten

procedure ClearGridCols(oGrid: TObject; nCol, nColCount: Integer); Beispiel:

 
ClearGridCols(oGrid,5,0);//Leert alle Zellen ab Spalte 5

Setzt die Hintergrundfarbe der Zeile nRow auf die Farbe oColor

procedure SetGridRowColor(oGrid: TObject; nRow: integer; oColor: TColor);
Beispiel:

 
SetGridRowColor(oGrid, 2, clYellow);
SetGridRowColor(oGrid, 3, clRed);

Aufruf beim Klicken auf eine Zelle

procedure OnClickCell(ARow, ACol: Integer);
Beispiel:

 
procedure OnClickCell(ARow,  ACol: Integer);
begin
    DebugLine(CRLF+'ClickCell');
    DebugLine('Zeile '+IntToStr(ARow)); //Gibt die angeklickte Zeile aus
    DebugLine('Spalte '+IntToStr(ACol)); //Gibt die angeklickte Spalte aus
end;

Aufruf wenn auf einen Zelle im Grid doppelgeklickt wird

procedure OnDblClickCell(ARow, ACol: Integer);

 
procedure OnDblClickCell(ARow,  ACol: Integer);
begin
    DebugLine(CRLF+'DblClickCel');
    DebugLine('Zeile '+IntToStr(ARow)); //Gibt die angeklickte Zeile aus
    DebugLine('Spalte '+IntToStr(ACol)); //Gibt die angeklickte Spalte aus
end;

Aufruf wenn die ausgewählte Zelle gewechselt wird

procedure OnCellChanging(OldRow, OldCol, NewRow, NewCol: Integer);

 
procedure OnCellChanging(OldRow, OldCol, NewRow, NewCol: Integer);
begin
    DebugLine(CRLF+'OnCellChanging');
    DebugLine('Alt Zeile '+IntToStr(OldRow)); //Vorherige Zeile
    DebugLine('Alt Spalte '+IntToStr(OldCol)); //Vorherige Spalte
    DebugLine('Neu Zeile '+IntToStr(NewRow)); //Aktuelle Zeile
    DebugLine('Neu Spalte '+IntToStr(NewCol)); //Aktuelle Spalte
end;

Aufruf wenn auf F8 Grid füllen geklickt wird

procedure FillGrid();
Beispiel:

 
procedure FillGrid();
begin                                  
    SetGridRowCount(oGrid,100); //Legt die Anzahl der Zeilen fest
    ClearGridRows(oGrid,5,0);//Leert die Zellen des Grids
end;

Kalkulation sofort durchführen

RefreshGrid(oGrid:TObject):String;

Folgende Funktionen können innerhalb des Grids verwendet werden:

Constants

  • PI
  • E
  • True
  • False

Single parameter functions

  • ABS(parameter) : absolute value
  • ROUND(parameter) : rounds value
  • TRUNC(parameter) : truncates value
  • CEILING(parameter; significance) : rounds the parameter to the nearest multiple of significance
  • FRAC(parameter) : returns fractional part of value
  • FACT(parameter) : factioral of value
  • INT(parameter) : int part of value
  • SIN(parameter) : sine of value
  • COS(parameter) : cosine of value
  • TAN(parameter) : tangens of value
  • COTAN(parameter) : cotangens of value
  • SINH(parameter) : hyperbolic sine of value
  • COSH(parameter) : hyperbolic cosine of value
  • TANH(parameter) : hyperbolic tangens of value
  • COTANH(parameter) : hyperbolic cotangens of value
  • ASIN(parameter) : arcsin of value
  • ACOS(parameter) : arccos of value
  • ATAN(parameter) : arctangens of value
  • ACOTAN(parameter) : arccotangens of value
  • LN(parameter) : natural logarithm of value
  • LOG2(parameter) : base 2 logarithm of value
  • LOG10(parameter) : base 10 logarithm of value
  • EXP(parameter) : exponential of value
  • RAND(parameter) : random between 0 and value
  • RADIANS(parameter) : converts degrees to radians
  • DEGREES(parameter) : converts radians to degrees
  • SQR(parameter) : square of value
  • SQRT(parameter) : square root of value
  • CUBE(parameter) : cubic square of value
  • CHS(parameter) : change sign
  • POWER(parameter,exp) : parameter to exponent exp

Multi parameter functions

  • LT(param1;param2) : larger than : returns 1 of param1>param2
  • ST(param1;param2) : smaller than : returns 1 of param1<param2
  • EQ(param1;param2) : equal : returns 1 of param1=param2 else 0
  • CHOOSE(sel;param1;param2) : returns param1 if sel>0 else param2

Cell range functions

  • SUM(range) : sum of all cell values in range
  • PRODUCT(rangfe) : product of all cell values in range
  • AVERAGE(range) : average of all cell values in range
  • MIN(range) : min. cell value in range
  • MAX(range) : max. cell value in range
  • COUNT(range) : nr. of cells in range
  • COUNTA(range) : nr of non blank cells in range
  • COUNTIF(range;condition) : nr of cells meeting condition in range
  • STDEV(range) : standard deviation of range
  • STDEVP(range) : standard deviation of total population of range
  • DEVSQ(range) : sum of squares of deviations of range
  • VAR(range) : variance of range

Date & Time functions

  • HOUR(parameter) : gets the hour from a cell containing a valid time string
  • MIN(parameter) : gets the minute from a cell containing a valid time string
  • SECOND(parameter) : gets the second from a cell containing a valid time string
  • DAY(parameter) : gets the day from a cell containing a valid time string
  • MONTH(parameter) : gets the month from a cell containing a valid time string
  • YEAR(parameter) : gets the year from a cell containing a valid time string
  • WEEKDAY(parameter) : gets the day of the week from a cell containing a valid time string
  • TODAY : gets the current day
  • NOW : gets the current time

Logical functions

  • AND(parameters) : logical AND function
  • OR((parameters) : logical OR function
  • NAND(parameters) : logical NAND function
  • NOR((parameters) : logical NOR function
  • XOR((parameters) : logical XOR function
  • NOT(parameter) : logical NOT function
  • TRUE : constant returning true
  • FALSE: constant returning false

String functions

  • LEN(parameter) : returns the length of a string value
  • LOWER(parameter) : returns string in lowercase
  • UPPER(parameter) : returns string in uppercase
  • CONCATENATE(parameter list) : returns concatenated string of parameters
  • SUBSTITUTE(param text; param oldtext; param new text) : returns string with oldtext replaced by newtext
  • LEFT(param string;len integer) : returns first len charactares of string
  • RIGHT(param string;len integer) : returns last len characters of string
  • MID(param string; pos; len: integer): returns len characters starting from position pos in string
  • TRIM(param) : removes all spaces from text except spaces between words
  • SEARCH(find text; text) : returns position of string find text in text
  • LOOKUP(param; range1, range2) : returns the value of the element in range2 that has the index of the matching element in range1 for param
  • MATCH(lookup; range) : returns the index of the element param in the range
  • INDEX(range; val1, val2) : returns the value of element at index val1,val2 in the range

Beispiele

Artikel-Lieferanten-Auswerung

Warengruppe und ein Datumsbereich können eingegeben werden. Es werden für den Zeitraum pro Artikel die Lieferanten und Einkaufswerte ausgewertet. Datei:ArtikelLieferantenEinkaufsauswertung.zip