Histórico da Página
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include "totvs.ch" // Definições para integração com leitor de código de barras #define PRODUCT_MODE "PRODUCT_MODE" // Decode only UPC and EAN barcodes. This is the right choice for shopping apps which get prices, reviews, etc. for products. #define ONE_D_MODE "ONE_D_MODE" // Decode only 1D barcodes. #define QR_CODE_MODE "QR_CODE_MODE" // Decode only QR codes. #define DATA_MATRIX_MODE "DATA_MATRIX_MODE" // Decode only Data Matrix codes. #define AZTEC_MODE "AZTEC_MODE" // Decode only Aztec. #define PDF417_MODE "PDF417_MODE" // Decode only PDF417. // Definições dos valores usados para orientação da tela do dispositivo #define ORIENTATION_UNSPECIFIED -1 // Usado somente para o SetScreenOrientation. Posição livre definida pelo usuário ou sensor do dispositivo. #define ORIENTATION_PORTRAIT 1 // Tela na posição retrato. #define ORIENTATION_LANDSCAPE 2 // Tela na posição paisagem. #define ORIENTATION_INVERTED_PORTRAIT 4 // Tela na posição retrato invertido. #define ORIENTATION_INVERTED_LANDSCAPE 8 // Tela na posição paisagem invertida. // Definições para o formato dos valores de coordenadas globais para Geolocalização (GPS) #define GEOCOORDINATE_DEGREES 0 // -23.50607°, -46.64371° Formato em graus com fração decimal. #define GEOCOORDINATE_DEGREESHEMISPHERE 1 // 23.50607° S, 46.64376° W Formato em graus com fração decimal e letra para indicar hemisfério. #define GEOCOORDINATE_DEGREESMINUTES 2 // -23° 30.364', -46° 38.625' Formato em graus com fração em minutos. #define GEOCOORDINATE_DEGREESMINUTESHEMISPHERE 3 // 23° 30.365' S, 46° 38.626' W Formato em graus com fração em minutos e letra para indicar hemisfério. #define GEOCOORDINATE_DEGREESMINUTESSECONDS 4 // -23° 30' 21.9", -46° 38' 37.5" Formato em graus com fração em minutos e segundos. #define GEOCOORDINATE_DEGREESMINUTESSECONDSHEMISPHERE 5 // 23° 30' 21.8" S, 46° 38' 37.5" W Formato em graus com fração em minutos e segundos e letra para indicar hemisfério. // Definições de funcionalidades/componentes para os métodos de OpenSettings() e TestDevice() #define BLUETOOTH_FEATURE 1 #define NFC_FEATURE 2 #define WIFI_FEATURE 3 #define LOCATION_FEATURE 4 Function u_tstMobile() Local calibri18Black := TFont():New("Calibri",,018,,.T.,,,,,.F.,.F.) DEFINE MSDIALOG oDlg TITLE "Testes com TMobile" FROM 000, 000 TO 275310, 700 COLORS 0, 16777215 PIXEL PRIVATE oMbl := TMobile():New(oDlg) oTFont:= TFont():New('calibri',,-18,,.T.) oTSay := TSay():New( 005, 045,{||"Integrações disponíveis na classe tMobile para a plataforma TOTVS | FatClient Embarcado"},oDlg; ,,oTFont,.T.,.F.,.F.,.T.,0,,270,020,.F.,.T.,.F.,.F.,.F.,.F. ) SetCss("TButton{color: black;}") @ 035, 007 BUTTON oButton01 PROMPT "Ler Código de Barras" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl1() } PIXEL @ 035, 180 BUTTON oButton02 PROMPT "Listar Dispositivos Bluetooth Pareados" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl2() } PIXEL @ 055, 007 BUTTON oButton03 PROMPT "Capturar Foto" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl3() } PIXEL @ 055, 180 BUTTON oButton04 PROMPT "Mostrar Orientação da Tela" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl4() } PIXEL @ 075, 007 BUTTON oButton05 PROMPT "Especificar Orientação da Tela" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl5() } PIXEL @ 075, 180 BUTTON oButton06 PROMPT "Ativar bScreenOrientationChanged" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl6() } PIXEL @ 095, 007 BUTTON oButton07 PROMPT "Mostrar Coordenadas de Geolocalização" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl7() } PIXEL @ 095, 180 BUTTON oButton08 PROMPT "Ativar bGeoCoordinateUpdate" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl8() } PIXEL @ 115, 007 BUTTON oButton09 PROMPT "Habilitar Atualizações de Coordenadas" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl9() } PIXEL @ 115, 180 BUTTON oButton10 PROMPT "Desabilitar Atualizações de Coordenadas" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl10() } PIXEL @ 135, 007 BUTTON oButton11 ACTIVATE DIALOGPROMPT "Testar Componente/Funcionalidade" SIZE 150, 012 OF oDlg CENTERED Return Static Function u_tmbl1() LOCAL cBarType LOCAL aBarResult // Especificar aqui um tipo de código de barras para limitar a leitura. //cBarType:= PRODUCT_MODE; cBarType:= ""; aBarResult:= oMbl:BarCode() If aBarResult[1] = "" sMsg := "NenhumACTION {|| u_tmbl11() } PIXEL @ 135, 180 BUTTON oButton12 PROMPT "Abrir Menu de Configurações" SIZE 150, 012 OF oDlg ACTION {|| u_tmbl12() } PIXEL ACTIVATE DIALOG oDlg CENTERED Return Static Function u_tmbl1() LOCAL cBarType LOCAL aBarResult // Especificar aqui um tipo de código de barras foi lido." Elsepara limitar a leitura. //cBarType:= PRODUCT_MODE; sMsg cBarType:= "Código de barras lido:" + chr(13) + chr(13) + "Código: " +"; aBarResult:= oMbl:BarCode() If aBarResult[1] + chr(13) + "Formato: " + aBarResult[2] EndIf MsgInfo(sMsg) Return Static Function u_tmbl2() LOCAL aDevicesResult Local i aDevicesResult:= oMbl:GetPairedBluetoothDevices() sMsg := "" For i := 1 to len(aDevicesResult) sMsg := sMsg + "Nome= "" sMsg := "Nenhum código de barras foi lido." Else sMsg := "Código de barras lido:" + chr(13) + chr(13) + "Código: " + aBarResult[1] + chr(13) + "Formato: " + aDevicesResultaBarResult[i2][1] + chr(13)EndIf sMsg := MsgInfo(sMsg + "Endereço: " + aDevicesResult[i][2] + chr(13) + chr(13) Next i) Return Static Function u_tmbl2() LOCAL aDevicesResult Local i aDevicesResult:= oMbl:GetPairedBluetoothDevices() If sMsg := "" For i sMsg := "Nenhum1 dispositivo pareado ou interface Bluetooth desligada."to len(aDevicesResult) Else sMsg := "DispositivossMsg Bluetooth+ Pareados"Nome: " + chr(13)aDevicesResult[i][1] + chr(13) + sMsg := sMsg + EndIf "Endereço: " MsgInfo(sMsg) Return Static Function u_tmbl3(+ aDevicesResult[i][2] + chr(13) + chr(13) LocalNext cFilePathi Local cMsg If sMsg = "" DEFINE DIALOG oDlgsMsg TITLE:= "ExemploNenhum dispositivo TMobilepareado TakePicture"ou FROMinterface 180,180 TO 610,700 PIXEL cFilePath:= oMbl:TakePicture() if (cFilePath = "") cMsg := "Nenhuma imagem foi gravada." else cMsg := "Arquivo: " + cFilePath endifBluetooth desligada." Else sMsg := "Dispositivos Bluetooth Pareados:" + chr(13) + chr(13) + sMsg EndIf MsgInfo(sMsg) Return Static Function u_tmbl3() Local cFilePath Local cMsg //DEFINE PorDIALOG seroDlg oTITLE Android"Exemplo umTMobile sistemaTakePicture" baseadoFROM no180,180 linuxTO e para indicar que o arquivo encontra-se no // lado do client, é adicionada uma letra de unidade de disco fictícia. cFilePath:= "C:610,700 PIXEL cFilePath:= oMbl:TakePicture() if (cFilePath = "") cMsg := "Nenhuma imagem foi gravada." else cMsg := "Arquivo: " + cFilePath endif // Por oTBitmap1ser := TBitmap():New(01,01,260,184,,cFilePath,.F.,oDlg,,,.F.,.T.,,,.F.,,.T.,,.F.) oTBitmap1:lAutoSize := .F. oSay:= TSay():New(187, 02, {||cMsg},oDlg,,,,,,.T.,CLR_RED,CLR_WHITE,200,10) oTButton1 := TButton():New( 200, 110, "Fechar", oDlg, {||oDlg:End()},40,10,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE DIALOG oDlg CENTERED Return Static Function u_tmbl4() PrintOrientation( oMbl:GetScreenOrientation() ) Return Static Function u_tmbl5() DEFINE MSDIALOG oDlgInput TITLE "Escolha uma orientação para a tela" FROM 180,180 TO 260,360 PIXEL nRadio := 1 aItems := {'-1=Unspecified','1=Portrait','2=Landscape','4=Inverted Portrait','8=Inverted Landscapeo Android um sistema baseado no linux e para indicar que o arquivo encontra-se no // lado do client, é adicionada uma letra de unidade de disco fictícia. cFilePath:= "C:" + cFilePath oTBitmap1 := TBitmap():New(01,01,260,184,,cFilePath,.F.,oDlg,,,.F.,.T.,,,.F.,,.T.,,.F.) oTBitmap1:lAutoSize := .F. oSay:= TSay():New(187, 02, {||cMsg},oDlg,,,,,,.T.,CLR_RED,CLR_WHITE,200,10) oTButton1 := TButton():New( 200, 110, "Fechar", oDlg, {||oDlg:End()},40,10,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE DIALOG oDlg CENTERED Return Static Function u_tmbl4() PrintOrientation( oMbl:GetScreenOrientation() ) Return Static Function u_tmbl5() DEFINE MSDIALOG oDlgInput TITLE "Escolha uma orientação para a tela" FROM 180,180 TO 260,360 PIXEL nRadio := 1 aItems := {'-1=Unspecified','1=Portrait','2=Landscape','4=Inverted Portrait','8=Inverted Landscape'} cCombo1:= aItems[1] oCombo1 := TComboBox():New(01,01,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},; aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') oBtn1 := TButton():New( 25, 002, 'Ok', oDlgInput, {|| oMbl:SetScreenOrientation(VAL(cCombo1)), oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtn2 := TButton():New( 25, 034, 'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static Function u_tmbl6() oMbl:bScreenOrientationChanged := { |nOrientation| PrintOrientation(nOrientation) } MsgInfo("O blobo de código bScreenOrientationChanged foi ativado." + CRLF + ; "Mude a orientação da tela do dispositivo móvel para que" + CRLF + ; "uma mensagem seja exibida mostrando a nova orientação.") Return Static Function u_tmbl7() DEFINE MSDIALOG oDlgInput TITLE "Escolha um formato para a coordenada" FROM 180,180 TO 260,460 PIXEL oFont := TFont():New('Courier new',,-16,.T.) nRadio := 1 aItems := {'0=Graus com fração decimal',; '1=Graus com fração decimal e letra para hemisfério',; '2=Graus com fração em minutos',; '3=Graus com fração em minutos e letra para hemisfério',; '4=Graus com fração em minutos e segundos',; '5=Graus com fração em minutos e segundos e letra para hemisfério'} cCombo1:= aItems[1]] oSay1 := TSay():New(01,01,{||'Formato:'},oDlgInput,,oFont,,,,.T.,CLR_BLACK,CLR_WHITE,45,20) oCombo1 := TComboBox():New(01,0150,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},; aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') oBtn1 := TButton():New( 25, 002, 'Ok', oDlgInput, {|| msgInfo(oMbl:SetScreenOrientationGetGeoCoordinate(VAL(cCombo1)),"Coordenadas recebidas"), oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtn2 := TButton():New( 25, 034, 'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static Function u_tmbl6tmbl8() oMbl:bScreenOrientationChangedbGeoCoordinateUpdate := { |nOrientationcGeoPosition| PrintOrientation(nOrientationMsgInfo(cGeoPosition,"") } MsgInfo("O blobo de código bScreenOrientationChangedbGeoCoordinateUpdate foi ativado." + CRLF + ; "MudeA acada orientaçãoatualização dade telacoordenada dogeográfica, dispositivo móvel para queuma mensagem" + CRLF + ; "umaserá mensagem seja exibida mostrandocom aas novacoordenadas orientaçãoatualizadas.") Return Static Function u_tmbl7tmbl9() DEFINE MSDIALOG oDlgInput TITLE "Escolha um formato para a coordenadaHabilitar Atualizações de Coordenadas" FROM 180,180 TO 260310,460 PIXEL oFont := TFont():New('Courier new',,-16,.T.) nRadio := 1 aItems := {'0=Graus com fração decimal',; '1=Graus com fração decimal decimal e letra para hemisfério',; '2=Graus com fração em minutos',; '3=Graus com fração em minutos e letra para hemisfério',; '24=Graus com fração em minutos e segundos',; '35=Graus com fração em minutos e segundos e letra para hemisfério',;'} cCombo1:= aItems[1] oSay1 := TSay():New(01,01,{||'Formato:'},oDlgInput,,oFont,,,,.T.,CLR_BLACK,CLR_WHITE,55,20) oCombo1 := TComboBox():New(01,55,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},; '4=Graus com fração em minutos e segundos',;aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') '5=Graus com fração em minutos e segundos e letra para hemisfério'} cCombo1nGet2 := aItems[1]0 oSay2 oSay1 := TSay():New(01 20, 01,{||'FormatoIntervalo:'},oDlgInput,,oFont,,,,.T.,CLR_BLACK,CLR_WHITE,4555,20) oCombo1oGet1 := TComboBoxTGet():New(01 20,50 55, { | u |if If( PCount()>0,cCombo1 == 0, nGet2, nGet2 := u,cCombo1 ) },oDlgInput, ; 030, 010, aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1'"@E 99999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nGet2",,,,.F. ) oBtn1 := TButton():New( 2550, 002, 'Ok', oDlgInput, {|| msgInfo(oMbl:GetGeoCoordinateEnableGeoCoordinateUpdate(nGet2,VAL(cCombo1)),"Coordenadas recebidas"), , oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtn2 := TButton():New( 50, 034, 'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static oBtn2 := TButton():New( 25, 034, 'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static Function u_tmbl8() oMbl:bGeoCoordinateUpdate := { |cGeoPosition| MsgInfo(cGeoPosition,"") } MsgInfo("O blobo de código bGeoCoordinateUpdate foi ativado." + CRLF + Function u_tmbl10() oMbl:EnableGeoCoordinateUpdate(-1,0) msgInfo("Atualizações de Coordenadas Desativadas.","") Return Static Function u_tmbl11() DEFINE MSDIALOG oDlgInput TITLE "Escolha um componente/funcionalidade para testar" FROM 180,180 TO 260,460 PIXEL oFont := TFont():New('Courier new',,-16,.T.) nRadio := 1 aItems := {'1=Bluetooh',; "A cada atualização de coordenada geográfica, uma mensagem" + CRLF + '2=NFC',; "será exibida com as coordenadas atualizadas.") Return Static Function u_tmbl9() DEFINE MSDIALOG oDlgInput TITLE "Habilitar Atualizações de Coordenadas" FROM 180,180 TO 310,460 PIXEL '3=Wi-Fi',; '4=Localização'} cCombo1:= aItems[1] oFontoSay1 := TFontTSay():New('Courier new',,-1601,01,{||'Componente:'},oDlgInput,,oFont,,,,.T.,CLR_BLACK,CLR_WHITE,55,20) nRadiooCombo1 := 1 aItems := {'0=Graus com fração decimal'TComboBox():New(01,60,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},; '1=Graus com fração decimal e letra para hemisfério',; '2=Graus com fração em minutos',aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') oBtn1 := TButton():New( 25, 002, 'Ok', oDlgInput, {|| ; '3=Graus com fração em minutos e letra para hemisfério',IIf(oMbl:TestDevice(VAL(cCombo1)),MsgInfo("O componente está ativado!",""),MsgStop("O componente está desativado ou ausente no dispositivo.","") ); ,oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtn2 := TButton():New( 25, 034, '4=Graus com fração em minutos e segundos',; '5=Graus com fração em minutos e segundos e letra para hemisfério'} cCombo1:= aItems[1] oSay1 := TSay():New(01,01,{||'Formato:'},oDlgInput,,oFont,,,,.T.,CLR_BLACK,CLR_WHITE,55,20) oCombo1 := TComboBox():New(01,55,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static Function u_tmbl12() DEFINE MSDIALOG oDlgInput TITLE "Escolha qual tela de configurações deseja abrir" FROM 180,180 TO 260,460 PIXEL oFont := TFont():New('Courier new',,-16,.T.) nRadio := 1 aItems := {'1=Bluetooh',; '2=NFC',; aItems,80,20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') '3=Wi-Fi',; '4=Localização'} nGet2 cCombo1:= 0 aItems[1] oSay2oSay1 := TSay():New( 2001, 01,{||'IntervaloConfigurações:'},oDlgInput,,oFont,,,,.T.,CLR_BLACK,CLR_WHITE,5570,20) oGet1oCombo1 := TGetTComboBox():New( 2001, 5575, { | u | Ifif( PCount() == 0, nGet2, nGet2 >0,cCombo1:= u ,cCombo1) },oDlgInput, ; 030, 010, "@E 99999"aItems,60, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nGet2",,,,.F. 20,oDlgInput,,,,,,.T.,,,,,,,,,'cCombo1') oBtn1 := TButton():New( 5025, 002, 'Ok', oDlgInput, {|| oMbl:EnableGeoCoordinateUpdateOpenSettings(nGet2,VAL(cCombo1)), oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) oBtn2 := TButton():New( 5025, 034, 'Cancela', oDlgInput, {|| oDlgInput:End() },25,15,,,.F.,.T.,.F.,,.F.,,,.F. ) ACTIVATE MSDIALOG oDlgInput CENTERED Return Static Function u_tmbl10() oMbl:EnableGeoCoordinateUpdate(-1,0) msgInfo("Atualizações de Coordenadas Desativadas.","") Return Static Function PrintOrientation( nOrientation ) cMsg:= "" Do Case Case nOrientation == ORIENTATION_PORTRAIT cMsg:= "Portrait Orientation" Case nOrientation == ORIENTATION_LANDSCAPE cMsg:= "Landscape Orientation" Case nOrientation == ORIENTATION_INVERTED_PORTRAIT cMsg:= "Inverted Portrait Orientation" Case nOrientation == ORIENTATION_INVERTED_LANDSCAPE cMsg:= "Inverted Landscape Orientation" OtherWise cMsg:= "Not supported!" EndCase MsgInfo(cMsg) Return |
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas