{$DEFINE active_self}
close()
Ferme le formulaire ou le rapport.

createControl('ClassName','ParentPath','ControlName',left,top,width,height)
crée un controle dans le parent nommé ('ParentPath')
si 'ParentPath'='' il sera créé directement dans le formulaire

deleteControl('ControlName')
Supprime le control 'ControlName'

getControls([option])
renvoi la liste des controls
option est facultatif , 'text' par défault
- si option='text' retourne les noms des controles séparés par CRLF
- si option='table' retourne les informations des controles dans une table LUA

getProperty('control.property...')
getProperty('controlName.propertyName1.propertyName2.propertyNameN...')
Retourne la valeur d'une propriété d'un objet de la fenêtre/rapport

setProperty('control.property...','value')
nsbase.window.active.setProperty('controlName.propertyName1.propertyName2.propertyNameN...','value')
Assigne la valeur d'une propriété d'un objet de la fenêtre/rapport.

setFocus('controlName')
Donne le focus à 'controlName'

refresh()
Rafraichit l'affichage du formulaire

{$END_DEFINE}


{$DEFINE dataset}
open()
Ouvre le dataset sur l'ensemble d'enregistrement

close()
Ferme le dataset

refresh()
Invoque le rafraichissement des données.

first()
Se positionne sur le premier enregistrement

previous()
Se positionne sur l'enregistrement précédent

next()
Se positionne sur l'enregistrement suivant

last()
Se positionne sur le dernier enregistrement

insert()
Ajoute un nouvel enregistrement

delete()
Supprime l'enregistrement courant

post()
Poste les données

edit()
Met le formulaire en mode édition

cancel()
Annule les modifications en cours

gotorecord(n)
Se positionne à l'enregistrement n

getItems(['fieldname'[,'option']])
Renvoie la liste des enregistrements du champ "FieldName" du dataset
les CR,LF,TAB du contenu des enregistements sont encodés)
Si 'FieldName' n'est pas spécifié ou='', toutes les valeurs de tous les champs seront renvoyées
-
option est facultatif , 'text' par défault
- si option='text' retourne les enregistements séparés par CRLF
- si option='table' retourne les enregistrements dans une table LUA


getFieldname('name')
Retourne la valeur du champ 'name'

setFieldname('name','value')
Modifie la valeur par 'value' du champ 'name'

setParameter('name','value')
Assigne le parameter 'name'  de la value 'value' utilisé pour les
requêtes paramètrées

locate('fieldname','value','options')
Essaie de se positionner sur un enregistrement pécisé par le le champ 'fieldname' de valeur 'value'
Retourne True si le champ 'fieldname' de valeur 'value' a été trouvé
-
Options :
- "first" => recherche à partir du début (défaut)
- "next" =>  recherche suivante
-
- "startwith" => Dont l'enregistrement commence par la valeur 'value'
- "anywhere" => Dont l'enregistrement contient la valeur 'value'
- "strict" => recherche stricte sur la valeur 'value'(défaut)
-
- "case" => recherche avec la même casse de caractères (défaut)
- "nocase" => recherche quelque soit la casse de caractères
-
- "" => "first,strict,case"

recno
Retourne le numéro d'enregistrement courant

recordcount
Retourne le nombre d'enregistrements total

eof
Retourne true si on atteint le dernier enregistrement, sinon false

state
Retourne l'état du dataset
- 0:Inactif
- 1:Lecture
- 2:Edition
- 3:Insertion
{$END_DEFINE}

nsbase
API spécifiques à NSBase,
-
nsbase est l'objet parent à tous les objets, propriétés et méthodes de NSBase

nsbase.datasetCreate("name")
API de manipulation des enregistrements d'un dataset
-
dataset=nsbase.datasetCreate("name")
Crée une instance d'un "dataset" :
- Si "name" est le nom d'un formulaire ou d'un rapport, dans ce cas il s'agira du dataset principal
- Si "name" est le nom d'un dbgrid, il s'agir du dataset du dbgrid, il devra nommé ainsi "nom_du_formulaire.nom_du_dbgrid", self pour le fomulaire courant, exemple "self.dbgrid1"
- Si "name"= "SQLQuery" le dataset sera un requêteur SQL

nsbase.dataset.SQL
dataset.SQL=requete
Seulement si le le dataset est un requêteur SQL

nsbase.dataset.execSQL()
Execute la requete
Seulement si le le dataset est un requêteur SQL

{$USE dataset nsbase.dataset}

nsbase.application
Méthodes et propriétés de l'application

nsbase.application.getSQLFromDataSource("datasource")
Renvoie la requête SQL de la "datasource"
"datasource" peut être une table ou une vue

nsbase.application.width
Propriété largeur de l'application

nsbase.application.clientWidth
Propriété largeur utile de l'application

nsbase.application.height
Propriété hauteur de l'application

nsbase.application.clientHeight
Propriété hauteur utile de l'application

nsbase.application.top
Propriété position y sur l'écran de l'application

nsbase.application.left
Propriété position x sur l'écran de l'application

nsbase.application.getObjects([option])
renvoi la liste des objets de l'application
option est facultatif , 'text' par défault
- si option='text' retourne les noms des controles séparés par CRLF
- si option='table' retourne les informations des objets dans une table LUA

nsbase.application.windowState
Propriété  de l'état de l'application
- 0 =  Taille normale
- 1 =  Minimisée (icone bureau)
- 2 =  Taille maximum  (tout l'écran)

nsbase.application.centerForm()
Centre l'application sur l'écran

nsbase.application.console
Propriéte de la visibilité de la console : 'true' = affichée, 'false' = cachée

nsbase.application.runmode
Si 'true' le programme est en mode runtime : tous les outils d'édition sont masqués,

nsbase.application.quit()
Quitte l'application

nsbase.application.getInfo('section','type')
Section
- 'executable'=> renvoi le nom du fichier de l'excutable de l'application
- 'mainbase'  => renvoi le nom du fichier de la base principale
- 'database'  => renvoi le nom du fichier de la base contenant les donnée
-
Type d'information
- 'path'      => renvoi le chemin
- 'filename'  => renvoi le nom du fichier
- 'fileext'   => renvoi l'extension du nom du fichier
- 'fullname'  => renvoi le nom de fichier complet
-
Type d'information si section='database'
- 'protocol'  => renvoi le protocole
- 'library'   => renvoi la librarie
- 'hostname'  => renvoi le nom du server
- 'port'      => renvoi le numero de port
- 'database'  => renvoi la base de données
- 'user'      => renvoi le nom de l'utilisateur

nsbase.dialog
Boites de dialogues standards

nsbase.dialog.showMessage('type','msg')
Affiche une boite de dialogue suivant type=error,info,confirmation.
Retourne true si le bouton oui est pressé

nsbase.dialog.input('titre','prompt','Default')
Affiche une boite de dialogue de saisie, retourne 2 valeurs : le texte et l'etat de la saisie, true si le bouton Ok est pressé
exemple:
rc,str=nsbase.dialog.input('title','prompt','Default')
rc => false ou true
str => la chaine

nsbase.dialog.picklist('titre','items',[selectedIndex])
Afiche une boite de dialogue contenant une liste (items)
Retourne index et valeur
Sample:
ix,value=nsbase.dialog.pickList('Selectionnez un item','item1\nitem2\n...')

nsbase.dialog.fileOpen('title','filter','initialDir','filename')
Affiche une boite de dialogue de sélection de fichiers, retourne 2 valeurs : le nom de fichier complet et l'etat de la saisie, true si le bouton Ok est pressé

nsbase.dialog.fileSave('title','filter','initialDir','filename')
Affiche une boite de dialogue pour enregistrement des fichiers , retourne 2 valeurs : le nom de fichier complet et l'etat de la saisie, true si le bouton Ok est pressé

nsbase.dialog.selectDirectory('title','initialDir')
Affiche une boite de dialogue pour la sélection de répertoire , retourne 2 valeurs : le nom du répertoire et l'etat de la saisie, true si le bouton Ok est pressé

nsbase.dialog.showDatasetFindReplace('dbgrid')
Affiche une boite de dialogue pour effectuer des recherches/remplacements dans des dbgrids

nsbase.dialog.showExport()
Affiche la boite de dialogue d'export de la base courante

nsbase.fileSystem
Accès aux fonctions systèmes des fichiers

nsbase.fileSystem.readFile('filename'[,'option'])
option est facultatif , 'text' par défault
- si option='text' retourne le contenu fichier texte
- si option='bin' retourne le contenu du fichier binaire en chaine encodée hexa
- si option='table' retourne le contenu du fichier dans une table LUA

nsbase.fileSystem.writeFile('filename','contenu'[,'option'])
option est facultatif , 'text' par défault
- si option='text' Ecrit la chaine 'contenu' dans un fichier texte
- si option='bin' Ecrit dans un fichier la chaine binaire 'contenu' encodée hexa

nsbase.fileSystem.getDirectory([masque])
Retourne le contenu d'un répertoire dans une table LUA
le masque/chemin par défaut est *
Exemple
[[
for n,item in ipairs(nsbase.filesystem.getDirectory()) do
  print(n,item.name,item.size,item.attr,item.date,item.time)
end
]]

nsbase.fileSystem.directoryExists('directory')
Retourne true, si le répertoire existe

nsbase.fileSystem.fileExists('filename')
Retourne true, si le fichier existe

nsbase.fileSystem.getSize('filename')
Renvoi la taille du fichier en octets

nsbase.fileSystem.getLastModified('filename')
Renvoi la date de modification du fichier

nsbase.fileSystem.mkdir('directory')
Crée un répertoire ou plusieurs répertoires en une seule fois

nsbase.fileSystem.copyFile('source','dest')
Copie le fichier 'source' sur 'dest'

nsbase.filesystem.remove('filename')
Supprime un fichier ou un répertoire vide
Retourne true si ok
Equivalent à os.remove

nsbase.filesystem.removeDirectories('directory')
Supprime récursivement un repertoire et son contenu
ATTENTION à son utilisation !

nsbase.filesystem.rename('oldname','newname')
Renomme un fichier ou un reprtoire
Retourne true si ok
Equivalent à os.rename

nsbase.filesystem.export('datasource','format','filename'[,header])
Exporte le contenu d'une table ou vue (datasource) dans un fichier (filename)
Retourne true si ok
header : paramètre optionnel, si = true écriture entête, option uniquement valable que pour les fichiers dit textes
format :
-   'tab'  : fichier texte avec #9(tabulation) comme séparateur de colonnes
-   ';'    : fichier texte avec ; comme séparateur de colonnes
-   ','    : fichier texte avec , comme séparateur de colonnes
-   'html' : fichier au format html
-   'xml'  : fichier au format xml

nsbase.internet
Accès aux fonctions internet

nsbase.internet.httpGet('url'[,'option'])
option est facultatif , 'text' par défault
- Si option='text' retourne le contenu de la page internet de l'url précisée
- Si option='bin' Retourne le contenu binaire en chaine encodée (hexa)

nsbase.internet.httpPost('url','FormData'[,'option'])
FormData doit contenir les paramétres à transmette sous la forme param1=value&param2=value....
option est facultatif , 'text' par défault
- Si option='text' retourne le contenu de la page internet de l'url précisée
- Si option='bin' Retourne le contenu binaire en chaine encodée (hexa)

nsbase.internet.URLEncode('url')
Renvoie l'url encodée à la norme internet

nsbase.internet.URLDecode('url')
Renvoie l'url décodée suivant la norme internet

nsbase.internet.HTMLToText('html')
Renvoie du texte issue d'une page HTML, sans balises...

nsbase.internet.getValueAfter('Src','After')
Renvoie une chaine de caractéres de 'Src' aprés 'After'

nsbase.internet.getValueBefore('Src','Before')
Renvoie une chaine de caractéres de 'Src' avant 'Before'

nsbase.internet.json
Accès aux fonctions JSON
-
Exemple :
-
local json=nsbase.internet.json()
json.parse(nsbase.internet.httpGet('http://xxxxxx'))
print(json.count('rows'))
print(json.value('rows[0].name'))
-
json.parse(nsbase.internet.httpGet('https://world.openfoodfacts.org/api/v0/product/8480000341778.json'))
print(json.value('product.product_name'))
print(json.value('product.nutriments.sodium'))

nsbase.internet.json.parse('textjson')
Prépare le composant json avec 'textjson'

nsbase.internet.json.count('path')
Renvoie le nombre d'occurences d'un élément précisé par le chemin 'path'

nsbase.internet.json.value('path')
Renvoie la valeur d'un élément précisé par le chemin 'path'

nsbase.lang
Accès aux fonctions multilangues
-
Exemple:
-
function frmMain:ActionOnLoaded()
  self.setProperty('cbxLang.items',nsbase.lang.getList())
  self.setProperty('cbxLang.text',nsbase.lang.get())
end
-
function frmMain:cbxLangActionOnChange()
  nsbase.lang.set(self.getProperty('cbxLang.text'))
end

nsbase.lang.getSys()
Renvoie la langue (installée) du système

nsbase.lang.get()
Renvoie la langue activée dans NSBase

nsbase.lang.set('lang')
Change la langue de NSBase

nsbase.lang.getList()
Renvoie la liste des langues intallées

nsbase.lang.getAppList()
Renvoie la liste des langues intallées du projet

nsbase.lang.translate('section','property')
Traduit la propriété 'property' de la 'section' avec la langue active de NSBase
-
'section' peut être self qui est l'objet courant

nsbase.system
Accès aux fonctions du système

nsbase.system.openURL('url')
Ouvre le navigateur internet du système avec l'url demandée

nsbase.system.openDoc('doc')
Ouvre le document précisé

nsbase.system.getVersion()
Renvoi la version de NSBase

nsbase.system.getOS()
Renvoi le nom du system

nsbase.system.getCodeLang()
Renvoi le code langue du system

nsbase.system.getClipboardText()
renvoi le texte contenu dans le presse papier

nsbase.system.setClipboardText('text')
Met le texte dans le presse papier

nsbase.window
Fonctions de manipulation des fenêtres, de leurs composants et propriétés

nsbase.window.getProperty('window.control.property...')
nsbase.window.getProperty('windowName.controlName.propertyName1.propertyName2.propertyNameN...')
Retourne la valeur d'une propriété.

nsbase.window.setProperty('window.control.property...','value')
nsbase.window.setProperty('windowName.controlName.propertyName1.propertyName2.propertyNameN...','value')
Assigne la valeur d'une propriété d'un objet d'une fenêtre précisée.

nsbase.window.show('name')
Affiche une table,vue,rapport ou formulaire.

nsbase.window.close('name')
Ferme un formulaire ou rapport.
'name' =  nom du formulaire

nsbase.window.getOpened(['option'])
Retourne la liste des formulaires ou rapports ouverts.
-
- option est facultatif, 'text par défaut
- Si option='text'  liste au format texte (\n)
- Si option='table' liste au format table (lua)

nsbase.window.isOpen(windowName)
Retourne vrai si la fenêtre précisée est ouverte

nsbase.window.active
Fonctions de manipulation de la fénêtre active, de ses composants et propriétés

{$USE active_self nsbase.window.active}

nsbase.window.active.dataset
Manipule l'ensemble des données de la fenêtre active

{$USE dataset nsbase.window.active.dataset}

nsbase.self
Pointeur sur l'objet, permet de manipulation de la fenêtre ou rapport, de ses composants, propriétés, méthodes

{$USE active_self nsbase.self}

nsbase.self.newPage()
Provoque un saut de page (uniquement pour les rapports)

nsbase.self.name
Nom de l'objet pointé par self

nsbase.self.dataset
Manipule l'ensemble des données de l'objet

{$USE dataset nsbase.self.dataset}



