Moduł SterForm.dll jest przeznaczony dla Windows 3.1 i 3.11. Moduł Sterf32.dll dla Windows 95,98 i NT.
Moduł służy do sterowania oknami formularzy programu
"Formularze IPS".
Pozwala na otwieranie okien formularzy
do edycji, przeglądania i wydruku.
Program "Formularze IPS"
musi być zainstalowany.
Autor: Marcin Konopka
e-mail:
mmarcin.konopka@ips-infor.com.pl
tel.0-602-245-732
Moduł jest przeznaczony do bezpłatnego wykorzystania.
Longint - liczba całkowita ze znakiem 4 bajty
Word
- liczba całkowita 2 bajty
PChar - wskaźnik do ciągu znaków
zakończonych zerem
Bool - typ logiczny - 2 bajty
HWnd -
identyfikator okna formularza - zależny od typu Windows
PWord -
wskaźnik do liczby całkowitej typu Word.
FormulExists index 9,
LoadSerwer index 10,
FreeSerwer index 11,
FormVersion index 12,
CreateFormul index 13,
DeleteFormul index 14,
OpenWidokFormul index 15,
SetTextFormul index 16,
GetTextFormul index 17,
OpenWydrukFormul index 18,
PrintFormul index 19,
SetStrukPodDoch index 20,
BylWydruk index 21,
BylaZmiana index 22,
DeleteFormul2 index 23,
OpenWydrukFormul_C index 24,
BylWydruk_C index 25,
PrintFormulToPrinter index 26,
LoadSerwerFree index 27,
OpenWidokFormul32 index 28,
function FormulExists:bool;
Funkcja informuje czy został zainstalowany program Formularze IPS.
Rezultat
True jeśli program jest zainstalowany.
function LoadSerwer:word;
Funkcja odszukuje program "Formularze IPS"
i uruchamia jako serwer formularzy, jeśli do tej pory nie został
uruchomiony.
Rezultatem funkcji jest uchwyt okna serwera jeśli
został poprawnie uruchomiony lub odszukany. Jeśli brak jest
formularzy to rezultatem jest zero.
function LoadSerwerFree(path:PChar):word;
Funkcja uruchamia "Serwer Formularzy IPS" -
plik FORMSERW.EXE, jeśli do tej pory nie został
uruchomiony.
Rezultatem funkcji jest uchwyt okna serwera jeśli
został poprawnie uruchomiony lub odszukany. Jeśli brak jest
formularzy to rezultatem jest zero.
parametr funkcji:
path: ścieżka do katalogu, w którym znajduje się program FORMSERW.EXE.
procedure FreeSerwer;
Procedura kończy działanie serwera formularzy jeśli wszystkie formularze zostały wcześniej zwolnione funkcją DeleteFormul.
function FormVersion:longint;
Funkcja zwraca numer wersji serwera formularzy. Pierwsza wersja ma numer 1. Następne będą zwiększane o jeden jeśli nastąpią zmiany, które musi lub może uwzględnić aplikacja sterująca.
function CreateFormul(symbol,identyfikator:pChar; param:longint):longint;
Funkcja tworzy w pamięci formularz i zwraca jego identyfikator.
Parametry funkcji:
symbol
- służy do określenia modułu-formularza, który
ma być zainicjowany.
Przyjęto, że symbole są podobne do nazw
modułów bibliotecznych zainstalowanych w katalogu programu
"Formularze IPS". Np. nazwa modułu deklaracji VAT-7(6) to
VAT7_6_.DLL a nazwa symbolu VAT7_6.
Nazwy symboli zainstalowanych
modułów można odczytać ze zbioru FORMUL.INI w sekcji [DLL].
Zbiór jest umieszczony w katalogu, w którym jest
zainstalowany program "Formularze IPS".
Szczegółowe
informacje można także uzyskać od autora.
identyfikator
- parametr jest przygotowany na przyszłość. Jeśli moduł
SterForm umożliwi zapisywanie danych formularza, to identyfikator
będzie jednoznacznym określeniem zapisanych danych. Identyfikatorem
może być np. symbol aplikacji sterującej + symbol formularza + numer
miesiąca deklaracji.
Parametr może być pusty.
param - parametry formularza. Obecnie niewykorzystane. Należy wpisywać 0.
Rezultat:
Jeśli formularz nie został utworzony to 0, jeśli jest poprawnie utworzony to liczba dodatnia.
function DeleteFormul2(formul:longint; param:longint):bool;
Funkcja usuwa formularz.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
param - parametry zamknięcia. Obecnie niewykorzystane. Należy wpisywać 0.
Rezultat:
Jeśli formularz został usunięty to true. Jeśli nie to false.
Formularz może nie zostać usunięty jeśli jest np. edytowany i w polu są wpisane błędne dane lub trwa wydruk formularza.
function OpenWidokFormul(formul:longint; opis:pChar; parent:hWnd; param:longint):word;
function OpenWidokFormul32(formul:longint; opis:pChar; parent:hWnd; param:longint):dword;
Funkcja otwiera okienko formularza.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
opis - tekst, który będzie wyświetlany w liście tytułowej okienka.
parent - uchwyt okna nadrzędnego. Jeżeli jest podany to okno formularze jest modalne. Jeśli jest 0 to okno nie zatrzymuje pracy aplikacji, ale nie należy wykorzystywać tej możliwości ze względu na błędy, które mogą powstawać przy obsłudze wielu wątków.
param - parametry okna formularza.
040H - formularz tylko do przeglądania i wydruku. Nie może być edytowany.
Rezultat:
Jeżeli okno zostanie otwarte to liczba dodatnia, 0 jeśli otwarcie nie powiodło się.
Funkcja ByłWydruk
informuje czy użytkownik wydrukował formularz z poziomu
otwartego okna.
Funkcja ByłaZmiana
informuje czy użytkownik edytował pola formularza.
function SetTextFormul(formul:longint; tx:pChar; formatuj,przelicz:bool):longint;
Funkcja przesyła do formularza wartości pól.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
tx
- tekst zawierający zawartość pól. Maksymalna
wielkość tekstu nie może przekroczyć 60KB.
Format danych jest
ściśle określony. Linia tekstu odpowiadająca polu formularza zawiera
numer pola oraz jego zawartość. Numer pola jest poprzedzony małą
literą p i zakończony znakiem równości. Po znaku równości
jest umieszczona zawartość pola zawsze jako tekst Ascii.
np:
p1=123-456-78-90
Jeśli w tekście występują pary znaków o kodach 13 i 10 należy je zastąpić znakami o kodach 255 i 254.
Kwoty można przedstawiać z kropką lub przecinkiem jako znakiem dziesiętnym. Można także stosować znak rozdzielenia tysięcy ale tylko o kodzie 32 (spacja).
Daty należy podawać w formacie dzień-miesiąc-rok. Jeśli pole formularza nie wymaga podania dnia wystarczy podać miesiąc-rok.
Pola, w których znajdują się
"przełączniki" czyli np.kwadraty do zakreślenia należy
przedstawiać jako ciąg tekstowy cyfr "0" i "1".
Pierwsza cyfra zawsze musi być "0".
Cyfra "0"
oznacza kwadrat pusty, cyfra "1" kwadrat zakreślony.
Dla przykładu niech formularz zawiera pola:
1 - tekstowe np: 123-456-78-90
2 - kwotowe np:
1000,23
3 - data np:19-06-1967
4 - logiczne np: drugi kwadrat
zakreślony.
Zapis pól będzie wyglądał następująco:
p1=123-456-78-90 p2=1000.23 p3=19-06-1967 p4=001
formatuj
- jeśli jest true do dane przekazywane do formularza
będą automatycznie formatowane na postać oczekiwaną przez
formularz.
Dla przykładu niech kwota dostarczona ma postać:
1000.23. Formularz (zależnie od typu formularza) może ja
przekształcić na postać 1 000,23. Jeśli dane pole formularza wymaga
podania kwoty bez groszy to grosze zostaną obcięte lub zaokrąglone
automatycznie podczas formatowania.
przelicz - jeśli jest true to formularz przeliczy pola wynikowe po otrzymaniu danych.
Rezultat:
Rezultatem jest długość przekazanego ciągu znaków, 0 jeśli przekazanie nie powiodło się.
function GetTextFormul(formul:longint; tx:pChar; maxTx:longint; konwertuj:bool):longint;
Funkcja odczytuje z formularza zawartość jego pól.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
tx - wskaźnik do bufora danych, do którego zostanie skopiowany tekst zawierający zawartości pól formularza. Format tekstu jest taki jak dla funkcji SetTextFormul.
maxTx - wielkość bufora tx. Standardowo wielkość bufora powinna wynosić 64KB.
konwertuj -
jeśli jest true to kwoty odbierane z formularza będą konwertowane na
format bez znaków tysięcznych i z kropką dziesiętną.
Np.
Jeśli kwota w formularzu ma postać np: 1 000,34 to po konwersji
będzie miała postać 1000.34.
Rezultat:
Rezultatem jest długość skopiowanego tekstu.
function OpenWydrukFormul_C(formul:Longint; opis:PChar; parent:HWnd; odStr,doStr:PWord; param:Longint):bool;
Funkcja wywołuje okienko parametrów wydruku formularza.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
opis - tekst opisu, który pojawi się w okientu informującym o wydruku i w menadżerze wydruku.
parent - uchwyt okna nadrzędnego. Parametr nie powinien być 0.
odStr
- pierwsza strona wydruku formularza. Jeśli jest 0 to
formularz wydrukuje strony poczynając od pierwszej dostępnej a
kończąc na podanej w parametrze doStr.
Jeżeli użytkownik zmienił
zakres stron to parametr jest aktualizowany.
doStr
- ostatnia strona wydruku formularza. Jeśli jest 0 to
formularz wydrukuje strony poczynając od strony podanej w odStr a
kończąc na ostatniej dostępnej.
Jeżeli użytkownik zmienił zakres
stron to parametr jest aktualizowany.
param - parametry wydruku. Obecnie niewykorzystane. Należy wpisywać 0.
Rezultat:
True jeśli nastąpił wydruk i został zakończony. False jeśli użytkownik zrezygnował lub przerwał wydruk.
function PrintFormul(formul:longint; opis:pChar; parent:hWnd; odStr,doStr:word; param:longint):bool;
Funkcja drukuje formularz bez wywoływania parametrów
wydruku. Funkcja jest przydatna do wydruku seryjnego formularzy.
Należy wtedy umożliwić użytkownikowi ustawienie parametrów
wydruku pierwszego formularza funkcją OpenWydrukFormul.
Jeśli
OpenWydrukFormul
jest true to można drukować poprzez PrintFormul
następne formularze tego samego typu z ustawieniami
wybranymi przez użytkownika.
Zakres stron do wydruku należy
przenieść do PrintFormul
z OpenWydrukFormul.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
opis - tekst opisu, który pojawi się w okientu informującym o wydruku i w menadżerze wydruku.
parent - uchwyt okna nadrzędnego.
odStr - pierwsza strona wydruku formularza. Jeśli jest 0 to formularz wydrukuje strony poczynając od pierwszej dostępnej a kończąc na podanej w parametrze doStr.
doStr - ostatnia strona wydruku formularza. Jeśli jest 0 to formularz wydrukuje strony poczynając od strony podanej w odStr a kończąc na ostatniej dostępnej.
param - parametry wydruku. Obecnie niewykorzystane. Należy wpisywać 0.
Rezultat
True jeśli wydruk został zakończony. False jeśli
użytkownik przerwał wydruk.
W tym przypadku należy przerwać pętlę
drukującą formularze seryjnie.
function SetStrukPodDoch(formul:longint; struk:pChar):longint;
Funkcja służy do przesłania dla formularza skali
podatku dochodowego, jeśli ten wykorzystuje ją do obliczeń podatku
oraz jeśli obliczenia mają być wykonywane - parametr przelicz
w SetTextFormul.
Przesłanie
skali podatku powoduje że formularz blokuje edycję własnej skali
podatku i obliczenia opiera na przesłanych danych.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
struk - tekst określający skalę podatku.
Skala podatkowa składa się z progów podatkowych, procentów podatku zależnych od progu podatkowego i kwot podatku, które należy dodać do podatku obliczonego od nadwyżki nad danym progiem podatkowym.
Format danych jest następujący.
W jednej linii tekstu przed znakiem równości jest słowo kluczowe a po znaku równości wartość.
Słowo kluczowe dla kwoty progu: doKwoty_NP_Rok, gdzie NP to numer progu. Rok w postaci 4 cyfrowej.
Słowo kluczowe dla stopy podatku: proc_NP_Rok.
Słowo kluczowe dla kwoty podatku od nadwyżki: kwota_NP_Rok.
Przykład skali podatkowej na podstawie lat 1997 i 1998.
doKwoty_1_1997=20868.00 kwota_1_1997=-278.20 proc_1_1997=20.00 doKwoty_2_1997=41736.00 kwota_2_1997=3895.40 proc_2_1997=32.00 doKwoty_3_1997=0.00 kwota_3_1997=10573.16 proc_3_1997=44.00 doKwoty_1_1998=25252.00 kwota_1_1998=-336.60 proc_1_1998=19.00 doKwoty_2_1998=50504.00 kwota_2_1998=4461.28 proc_2_1998=30.00 doKwoty_3_1998=0.00 kwota_3_1998=12036.88 proc_3_1998=40.00
Kwoty ujemne występujące w pierwszym progu są kwotami wolnymi od podatku.
function BylWydruk_C(formul:Longint; odStr,doStr:PWord):bool;
Funkcja jest pomocna do sprawdzenia czy użytkownik wydrukował formularz z poziomu okna formularza.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
odStr - wartość ustawiona jeśli był wydruk - pierwsza strona do wydruku formularza którą ustawił użytkownik.
doStr - wartość ustawiona jeśli był wydruk - ostatnia strona do wydruku formularza którą ustawił użytkownik.
Rezultat
True jeśli wydruk został wywołany i zakończony. False jeśli użytkownik nie wywołał wydruku lub go przerwał.
function BylaZmiana(formul:longint):bool;
Funkcja informuje czy użytkownik edytował pole formularza w jego otwartym oknie.
Parametry funkcji:
formul - identyfikator formularza otrzymany z funkcji CreateFormul.
Rezultat
True jeśli użytkownik wykonał edycję pola formularza. False jeśli ni było żadnych zmian.