|
Każde okno aplikacji podstawowej ma przypisaną jakąś tabelę, która generuje zestaw zdarzeń, które można przechwycić w aplikacji API funkcją GetMessage i tym samym mieć wpływ na zachowanie się interfejsu bazy danych. Można odczytywać i modyfikować pola z poszczególnych rekordów tabeli - zarówno te oryginalne z aplikacji, a także nowe pola użytkownika. Nalezy odróżnić poniższe funkcje od funkcji operacji na bazie danych. Tutaj odczytujemy i zapisujemy wartości pól z tabel aplikacji R2Płatnik działającej równolegle z aplikacją API, zaś przy operacjach na bazie danych otwieramy własne tabele i to do nich odnoszą się funkcje odczytu i zapisu rekordów
procedure GetFieldAsString(TableName,Name,Value:PChar);stdcall;
Odczytuje wartość tekstową z pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola w tabeli
Value - zmienna typu string na wartość tekstową pola
Zwracane wartości
Brak
Uwagi
Poniższe procedury służą do przekazywania do aplikacji API wartości pól rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej. Lista tabel i pól aplikacji jest dostępna w załączniku. Odczytać wartość pola można w dowolnym momencie, aczkolwiek pomocne może być tutaj przechwycenie zdarzenia Change o numerze 1020, które mówi nam jakie pole zostało zmienione w danej chwili przez użytkownika.
function GetFieldAsInt(TableName,Name:PChar):integer;stdcall;
Odczytuje wartość liczbową z pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Zwracane wartości
Zwraca wartość liczbową pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej.
Uwagi
Lista tabel i pól aplikacji jest dostępna w załączniku
function GetFieldAsBool(TableName,Name:PChar):Boolean;stdcall;
Odczytuje wartość logiczną z pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Zwracane wartości
Zwraca wartość logiczną pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej.
Uwagi
Lista tabel i pól aplikacji jest dostępna w załączniku
function GetFieldAsFloat(TableName,Name:PChar):Double;stdcall;
Odczytuje wartość zmiennoprzecinkową z pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Zwracane wartości
Zwraca wartość zmiennoprzecinkową pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej.
Uwagi
Lista tabel i pól aplikacji jest dostępna w załączniku
function GetFieldAsDateTime(TableName,Name:PChar):Double;stdcall;
Odczytuje wartość typu data/czas z pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Zwracane wartości
Zwraca wartość typu data/czas pola tabeli z rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej. Część całkowita to liczba dni od 31-12-1899, zaś część ułamkowa to czas w milisekundach jaki upłynął od godz. 0:00.
Uwagi
Lista tabel i pól aplikacji jest dostępna w załączniku
procedure SetFieldBegin(TableName:PChar);stdcall;
Rozpoczyna procedurę modyfikacji pól w tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Zwracane wartości
Brak
Uwagi
Jeśli chcemy zmienić wartości jakichkolwiek pól w tabeli przypisanej do danego okna, najpierw należy zainicjować procedurę modyfikacji. Najlepiej to zrobić wywołując SetFieldBegin w aplikacji API w momencie przechwycenia zdarzenia AfterInsert lub AfterEdit tabeli (zdarzenia numer 1013 i 1014)
Przykład
if InitMessageQueue then begin
repeat
if GetMessage(Msg) then begin
1013,1014:SetFieldBegin(JakisForm)
1018:begin
SetFieldAsString(JakisForm,'PoleX','NowaWartoscPola');
SetFieldEnd(JakisForm)
end;
end;
until False
DestroyMessageQueue;
end;
procedure SetFieldAsString(TableName,Name,Value:PChar);stdcall;
Zapisuje wartość tekstową do pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Value - zmienna typu string na wartość tekstową pola
Zwracane wartości
Brak
Uwagi
Poniższe procedury służą do przekazywania z aplikacji API do aplikacji podstawowej, wartości pól rekordu, na którym znajduje się w danej chwili użytkownik w aplikacji podstawowej. Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin
procedure SetFieldAsInt(TableName,Name:PChar; Value:integer);stdcall;
Zapisuje wartość liczbową do pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Value - wartość liczbowa pola
Zwracane wartości
Brak
Uwagi
Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin
procedure SetFieldAsBool(TableName,Name:PChar; Value:Boolean);stdcall;
Zapisuje wartość logiczną do pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Value - wartość logiczna pola
Zwracane wartości
Brak
Uwagi
Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin
procedure SetFieldAsFloat(TableName,Name:PChar; Value:Double);stdcall;
Zapisuje wartość zmiennoprzecinkową do pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Value - wartość zmiennoprzecinkowa pola
Zwracane wartości
Brak
Uwagi
Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin
procedure SetFieldAsDateTime(TableName,Name:PChar; Value:Double);stdcall;
Zapisuje wartość typu data/czas do pola tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Name - nazwa pola tabeli
Value - wartość typu data/czas pola (część całkowita, to liczba dni od 31-12-1899, zaś część ułamkowa to czas w milisekundach jaki upłynął od godz. 0:00)
Zwracane wartości
Brak
Uwagi
Najpierw należy zainicjować procedurę modyfikacji funkcją SetFieldBegin
procedure SetFieldEnd(TableName:PChar);stdcall;
Kończy procedurę modyfikacji pól w tabeli działającej aplikacji R2Płatnik
Parametry
TableName - nazwa tabeli w aplikacji
Zwracane wartości
Brak
Uwagi
Jeśli chcemy zatwierdzić zmiany wartości jakichkolwiek pól w tabeli przypisanej do danego okna, najpierw należy zakończyć procedurę modyfikacji. Należy to zrobić wywołując SetFieldEnd w aplikacji API w momencie przechwycenia zdarzenia AfterPostAddon tabeli (zdarzenie numer 1018)
procedure AddUserField(TableName,FieldName,DisplayLabel:PChar; FieldType:Byte; Size:integer; Visible,ReadOnly:Boolean);stdcall;
Dodaje pole użytkownika do dowolnej tabeli aplikacji
Parametry
TableName - nazwa tabeli w aplikacji
FieldName - nazwa pola w bazie danych
DisplayLabel - nazwa pola w aplikacji podstawowej
FieldType - typ pola:
Size - rozmiar pola w bazie (odnosi się tylko do pól typu "string" i "text")
Visible - czy pole ma być widoczne w oknie aplikacji podstawowej
ReadOnly - czy pole ma mieć atrybut "tylko do odczytu"
Zwracane wartości
Brak
Uwagi
Brak
procedure AddUserLookupField(TableName,FieldName,DisplayLabel:PChar; FieldType:Byte; Size:integer; Visible,ReadOnly:Boolean; LookupTable,KeyField,LookupKeyField,LookupResultField:PChar);stdcall;
Dodaje pole użytkownika typu "wgląd do innej tabeli" (lookup)
Parametry
TableName - nazwa tabeli w aplikacji
FieldName - nazwa pola
DisplayLabel - nazwa pola w aplikacji podstawowej
FieldType - typ pola:
Size - rozmiar pola w bazie (odnosi się tylko do pól typu "string" i "text")
Visible - czy pole ma być widoczne w oknie aplikacji podstawowej
ReadOnly - czy pole ma mieć atrybut "tylko do odczytu"
LookupTable - tabela, do której ma wgląd pole ('tabela lookup')
KeyField - nazwa pola w tabeli, wg którego następuje wgląd do 'tabeli lookup' (klucz obcy - z reguły należy wcześniej utworzyć takie pole typu Integer np."X_IDowolnejBiblioteki")
LookupKeyField - nazwa pola w 'tabeli lookup', wg którego następuje do niej wgląd (klucz podstawowy - z reguły będzie to pole "X_I")
LookupResultField - nazwa pola w 'tabeli lookup', które ma być rezultatem wglądu
Zwracane wartości
Brak
Uwagi
Lista tabel aplikacji jest dostępna w załączniku
procedure CreateUserTable(Name,TableName, MasterTable:PChar; Kind:Byte; Bin, LPR, Visible, Auto:Boolean);stdcall;
Tworzy nową tabelę użytkownika do aplikacji
Parametry
Name - nazwa tabeli w aplikacji
TableName - nazwa tabeli w bazie danych
MasterTable - nazwa tabeli nadrzędnej (master) - tylko jeśli parametr Kind=4; w pozostałych przypadkach pusta
Kind - rodzaj tabeli:
0 - Biblioteka (tabela niezależna - pojawi się w Menu-Okna-biblioteki użytkownika)
1 - Dane podstawowe (tabela zależna od tabeli 'PRACOWNICY' - pojawi się w oknie głównym na pasku 'Dane podstawowe')
2 - Zatrudnienie (tabela zależna od tabeli 'PRACOWNICY' - pojawi się w oknie głównym na pasku 'Zatrudnienie')
3 - Rozliczenie pracy (tabela zależna od tabeli 'AKTUALNE ZATRUDNIENIE' - pojawi się w oknie głównym na pasku 'Rozliczenie pracy')
4 - Do tabeli (tabela zależna od tabeli nadrzędnej MasterTable)
Bin - czy tabela ma być umieszczona w bazie danych 'Bin' (wspólnej dla firm)
LPR - czy do tabeli ma zostać utworzone okno typu 'Lista-Pozycja-Razem'
Visible - czy tabela ma być widoczna w aplikacji jako pozycja w Menu-Biblioteki użytkownika (jeśli parametr Kind=4) lub na paskach okna głównego, czy tylko w bazie danych
Auto - czy tabela ma być typu "AutoTransact", tzn. jeśli będzie posiadać tabelę podrzędną (detail), to jej edycja wprowadzi tabelę nadrzędną (master) również w tryb edycji. Rezygnacja ze zmian wprowadzonych w tabeli nadrzędnej (master) spowoduje także rezygnację ze zmian w tabeli podrzędnej (detail)
Zwracane wartości
Brak
Uwagi
Brak