O Gardens-Software

Język programowania aplikacji 4GL

Język programowania 4GL QLX


"...nie myśl jak masz to zrobić, pomyśl tylko po co..."

QLX jest językiem programowania wysokiego poziomu. Składnia języka QLX została uproszczona do minimum tak aby język służył aplikacji Gardens Buildera w sposób optymalny. Założeniem jest aby pozwalał on na rozbudowę aplikacji przez konsultantów merytorycznych, a nie tylko przez programistów. Zaletą języka QLX jest wysoki stopień optymalizacji i specjalizacji w budowaniu aplikacji biznesowych.
Składnia języka QLX jest prosta. Składa się ze składni podstawowej i dwóch rozszerzeń : biblioteki SYS oraz metod obiektu struktury danych DS.

QLX - Skladnia podstawowa

:typy
Systemowe :
o Boolean , Integer, Decimal, Date, Text, BLOB, Rec, Object

Przodkowie typów własnych (Custom Types) i ich reprezentacja w typach systemowych ():
o Number (Decimal), Option(Integer), String (Text), Field(?), COM (Object)
:Konwersja typów
Konwersja podczas wartościowania operacji dwóch zmiennych odbywa się wg porządku (od najniższego typu):

Boolean, Integer, Decimal, Date, Text, Blob , Rec Object

Dla dwóch typów następuje konwersja do typu większego.

Konwersja przy przypisaniu jest możliwa we wszystkie strony.

Możliwe jest przypisanie jako operacja np.: l = ((p=5)-4); lub l = p = i = 5;
:pętle
FOR (iEx = minValue;maxValue ) { statement }
WHILE ( bEx ) { statement }
:instrukcja warunkowa :
IF ( bEx ) { statement }
ELSE { statement}
:operatory :
& - i bEx= bEx1 & bEx2

| - lub bEx= bEx1 | bEx2

<> - różny bEx= bEx1 <> bEx2 lub bEx = !(bEx1 = bEx2)

! - negacja bEx= ! bEx1
:zwrócenie wartości funkcji i przerwanie:
EXIT ( Value, [break] );
:obsługa wyjątków :
TRY { statement }
:commit transakcji bazodanowych :
COMMIT ( [tConnection, bClose] )


QLX - Podstawowe udogodnienia GUI

ERROR ( tInfo );
Systemowe :
Przerwanie pojedynczej ścieżki kodu i transakcji bazodanowych ( jeśli nie w klauzuli TRY, komunikat w GUI)

tInfo - komunikat o błędzie
DIALOG ( tInfo ,[ iType ] ) : iModal
Komunikaty i pytania dialogowe

tInfo - komunikat

iType - rodzaj okienka dialogowego
STATUS ( ['O','U','C'], tId, tInfo, iSize )
O - otwarcie okna statusów lub dołączenie kolejnego panelu statusu,

U - aktualizacja statusu,

C - zamknięcie okna statusów,

tid - identyfikator statusu,

tInfo - Etykieta statusu,

iSize - Max. Zakres paska stanu.
INFO ( tInfo , [clear ] )
Dodanie linii w okienku pomocniczym "Info".

iInfo - komunikat,

clear - jeżeli clear = 1 to zawartość okienka Info jest czyszczona przed dodaniem nowej linii.
RUNWIN ( tName , [iType, iReportType ] )
Uruchomienie okna lub raportu (podgląd, wydruk, eksport)
CREATE ( COMobject )
Zbudowanie instancji obiektu COM, COM+


QLX - Przykłady metod obiektu Schematu danych (DS methods)

DS:    
  _ASXML :Text Generuje XML z Ds.
  _DSNAME :Text Nazwa DS 
  _FIRSTFIELD :fname Zwraca nazwę pierwszego pola struktury w przypadku kiedy jest to struktura konstruowana dynamicznie. 
  _FROMXML(Blob, [Bool recid]) Parsuje XML do Ds.
  _GETDS(fname,Rec) : Bool Umożliwia wędrówkę po węzłach DS
  _GETFIELD (fname):TextValue Zwraca wartość pola wg jego nazwy 
  _GETTYPE(fname) :text Zwraca typ pola wg jego nazwy 
  _MODIFYALL(fname, textvalue) Modyfikuje wszystkie wartość w polu dla wszystkich wybranych rekordów
  _NEXTFIELD :fname  Zwraca nazwą kolejnego pola dla przypadku dynamicznej konstrukcji struktury DS 
  _SETCONN(conn) Umożliwia zmianę źródła danych. Struktura DS może być zasilana z wielu baz danych. 
  _SETFIELD(fname,textval)  Ustala wartość w polu wg jeg nazwy. 
  _SETRANG(fname,val) Założenie drugiego poziomu filtrów
  _SORT(f1,f2,...) Umożliwia sortowanie struktur w pamięci niezależnie od sortowanie w bazie danych 
  _SUMFIELD(fname): decimal  Zwraca sumę wartości w określonym polu  
  _SUMFIELDS (SumDS,[fname 1,...,fname n]); Buduje tempds - sumds Bez pól buduje z wszystkich pól które typu decimal
  CLEAR Czyści wartości bieżącego rekordu 
  COPY(rec, noisnert) Noinsert 1 - Kopiuje tylko jeden poziom bez wstawiania do bazy 0 - domyślnie kopiuje całą strukturę z rec do struktury podobnej wraz z podstrukturami z wstawieniem do bazy
  COUNT(memonly bool) Zwraca ilość rekordów
  CREATEDS Tworzy strukturę danych w bazie danych 
  DELETE :bool Kasuje rekord wraz z podstrukturami
  DELETEALL Kasuje wszystkie rekordy wraz z podstrukturami 
  EXPORT(FileName,[CSV,XML,TAB], [header str])  Exportuje dane zawarte w strukturze DS do pliku 
  FIND( Fname,val ,[bConti]):bool Szuka tekstu w polu CS bConti : 0, brak - od poczatku, 1 - od miejsca
  FIRST : bool Ustawia kursor na pierwszym rekordzie danych
  GETFILTERS(fname):text Zwraca bieżące filtry założone na danych DS
  IMPORT(FileName,[CSV,XML,TAB], bool recid, [header str]) Importuje dane do struktury DS z pliku 
  INSERT Wstawia rekord danych do bazy danych 
  LAST : bool Ustawia kursor na ostatnim rekordzie danych
  LOOP ([memonly bool, reverse])  {} Przegląda wszystkie rekordy w zbiorze danych struktury DS
  MARK Zaznacza bieżący rekord  
  MARKED :Bool Sprawdza czy bieżący rekord jest zaznaczony 
  NEXT : bool Przesuwa kursor DS na kolejny rekord danych 
  ORDER( f1,f2,...) Powoduje sortowanie danych pobieranych z bazy danych 
  SETFILTERS( f1,f2...)  Zakłada filtr pierwszego poziomu na wielu polach  
  UPDATE Modyfikuje dane w bazie danych 
  DS:Pola  dostęp bezpośrednio do pól struktury ds:nazwasubds:nazwapola... lub "ds:nazwa pola" 
  Definiowane metody DS w pakiecie związanym z DS   ds:nazwmetody(params)  lub "ds:nazwa metody"(params)


QLX - Przykłady metod biblioteki SYS

SYS:  
 ASTIME (Date):Text Zwraca czas ze zmiennej Data i Czas 
 BLOB(op[I E C],

I - import zmienną Blob z pliku, E - eksportuje zmienną Blob z pliku, P - pakuje zmienną blob U - rozpakowuje zmienną blob

 CHAR(AsciCode) Zwraca znak z kodu Asci 
 CLOSE Zamyka urządzenie I/O 
 COS(x) Zwraca cosinus kąta 
 CREATEDS(dsname,temprec): Bool Tworzy DS wg DSTree zawartym w ogrodzie
  CTAN(x) Zwraca cotangens kąta 
 DATEDIFF (Date1,Date2):Int Oblicza różnicę między datą i czasem 
 DATEINT (Date,Text[YMDWRhms]):Int Konweruje zmienną Data i Czas do wartości liczbowych 
 DATEMAKE (Date,Int,Text[YMDhms]):Date Tworzy zmienną typu Data i Czas
 DELETEFILE(fname) Kasuje plik z dysku 
 GETERROR:text Zwraca ostatni błąd przechwycony w klauzuli TRY 
 OPEN(name,CLIENT,SERVER,LPT,FILE) Otwiera urządzenie I/O 
 OPENFILE(Mask) :FileName Otwira okno dialogowe wyboru pliku do otwarcia 
 RAND(Max) Funkcja losowa
  READ:text Czyta dane z urządzenia I/O np. z portu TCP/IP 
  ROUND(Dec,Precision,[+,-]): Dec Zaokrągla zmienne liczbowe 
 RUNSERVER(PacName,Port) Uruchamia nasłuch serwera W czasie połączenia klienta uruchamiany jest PacName:Run
  SAVEFILE(Mask) :FileName Otwira okno wyboru pliku do zapisu 
  SHELL(FileName, Params, Operat) Podejmuje akcje dla pliku zgodnie z shellem systemu
  SIN(x) Zwraca sinus kąta 
 SQL(command,[ Conn , dsresult])): Bool Wywołanie komendy SQL, w wybranej bazie danych 
 STRCOPY (Text,Pos,[Len]):Text Kopiuje substring ze zmiennej tekstowej
 STRLEN (Text):Int Zwraca długość zmiennej tekstowej 
 SYSDATE Zwraca datę i czas systemowy 
 TAN(x) Zwraca tangens kąta 
 USERLOGIN ([UserId],[Password]):UserId Zwraca identyfikator zalogowanego użytkownika systemu 
  WRITE(text) Umożliwia zapis do urządzenia I/O np. portu TCP/IP  


QLX - metody obiektów GUI (okna, raporty, GDI)

Obj:  
 SETPROP(name,val,[noupdate=0]) Ustalenie właściwości
  ADD(id,label,i1,i2,parid/accel) Dodawanie podelementu
  DEL(id) Kasowanie podelementu Id = ?ALL? wszystkie
  SETITEM(id, name,val) Ustalenie właściwości podelementu
  UPDATE Odświerzenie 
  _HANDLE Zwraca uchwyt okna
  FOCUS Ustawia focus na obiekcie
Gdi:  
 RECT(x,y,w,h) Rysuje prostokąt 
  LINE(x,y,w,h) Rysuje linie 
  CLEAR Czyści buforową bitmapę 
  SETCOLOR (Col, Typ, Wi) Ustala kolor i grubość linii 
  ELIPS(x,y,w,h) Rysuje elipsę 
 ADDACTION Dodanje akcję podręcznego menu GDI
 DRAW(blobpicture,[X,Y,W,H,Stretch]) Rysuje obiekty w formacie BMP i EMF
 DRAWTEXT(X,Y,W,H,Text) Rysuje tekst 
 FLOODFILL(X,Y,[Color]) Wypełnia obszar kolorem 
 GRADIENT Rysuje strukturę wielu gradientów
 SAVEAS(FileName, [W,H]) Zapisuje obraz w formacie EMF.
Win:  
 RUNMODAL(name,&ds,typ,R_typ) Uruchamia okno( raport) modalne względem Win: Oparte na DS. podanym przez referencje
  PROCMSG Przetwarza zdarzenia okna
  DIALOG( text,ds.,typ,f1?fn) :int Buduje okno dialogowe modalne z editami lub z gridem Typ 0 ? edits1 ? read grid 2 ? edit grid 3 - tree  4 - ListView f1?fn nazwy pól
  CLOSE(action) Action = mok,mcancel
Rep:  
 PRINTSEC (SecName,bool nomove) Drukuje wybraną sekcję raportu 
  PAGENEXT Powoduje przejście do kolejnej strony wydruku 
  PAGENO : int Zwraca numer bieżącej strony 


 
Zamów demo on-line oprogramowania
Zostań partnerem Gardens Software
Zamów wizytę konsultanta Gardens
Zostaw numer telefonu - oddzwonimy