Trabalhando com MsNewGetDados e criação de tabelas diretas no SX2,SX3,SIX e SXB
Olá a todos, recebemos uma contribuição do amigo Junior Plácido mostrando de uma forma simples e prática o uso do componente MsNewGetDados e a criação de campos diretos nas tabelas SX2,SX3,SIX e SXB
O programa irá trazer os dados no GRID, assim como exibi-los, após o cadastro. Esta função já vem com a implementação do código de criação das tabelas e campos automáticos, desta forma é só executar a função e começar à inserir os dados. O programa consiste em uma simulação de locadora de veículos ou controle de veículos por motorista, onde você pode atribuir os veículos ao motorista, e assim, saber com quem está cada veículo, se está livre ou quando estará livre.
Estão finalizadas a parte de cadastro de veículos e motoristas, desta forma, a ABA3(locação/empréstimos) está em andamento.
Vamos ao fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 |
//Bibliotecas #Include 'Protheus.ch' #include "TOTVS.ch" #include "jpeg.ch" //Constantes usadas na criação dos campos #Define _X3_USADO "€€€€€€€€€€€€€€ " #Define _X3_USFILIAL "€€€€€€€€€€€€€€€" #Define _X3_RESERV "þA" #Define _X3_OBRIGA "€" #Define _X3_NAO_OBRIGA "" ////////// /* FONTE CRIADO POR ADEILTON PLACID DOS SANTOS JUNIOR CIENTISTA DA COMPUTAÇÃO ESPECIALISTA EM BANCO DE DADOS, COM EXPERTISE EM DESENVOLVIMENTO DE SOFTWARE, IMPLANTAÇÃO, MANUTENÇÃO E ADMINISTRAÇÃO DO PROTHEUS. ADMINISTRADOR DE BANCO DE DADOS, COM EXPERTISE EM SQL SERVER email: juniorplacidojp@gmail.com Tel: 73 981766403 */ ////////// /*/{Protheus.doc} RESP01 Funcao Padrão que abre uma janela com 3 abas CADASTRO DE VEÍCULOS, MOTORISTAS E EMPRÉSITMO DE VEÍCULOS (não finalizada) @type function @author Adeilton Plácido dos Santos Júnior TEL (73) 981766403 @since 20/07/2018 @version 1.0 @return ${return}, ${return_description} @example (examples) @see (links_or_references) /*/USER Function RUTI02() //VARIÁVEIS DE INTERFACE Local oDlg Local oCodigo Local oNome Local oPlaca Local oStatus //BOTOES Local oBtnConf Local oBtnCanc //VARIAVEIS DO MSNEWGETDADOS PRINCIPAL, CADASTRO DE VEICULOS Local aBotoes := {} //Variável onde será incluido o botão para a legenda Private oLista //Declarando o objeto do browser Private aCabecalho := {} //Variavel que montará o aHeader do grid Private aColsVeic := {} //Variável que receberá os dados //Declarando os objetos de cores para usar na coluna de status do grid Private oVerde := LoadBitmap( GetResources(), "BR_VERDE") Private oVermelho := LoadBitmap( GetResources(), "BR_VERMELHO") //Private oAmarelo := LoadBitmap( GetResources(), "BR_AMARELO") /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ VARIAVEIS REFERENTES AOS VEÍCULOS ABA1 DIALOGS[1] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ //TGETS CADASTRO DE VEICULOS Private oGetCodigo Private cGetCodigo := Space(6) Private oGetNome Private cGetNome := Space(25) Private oGetPlaca Private cGetPlaca := Space(8) Private aVeiculos := {} //RADIOBUTTON CADASTRO DE VEICULOS Private nRadio Private oRadio /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ FIM VARIAVEIS MOTORISTAS $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ //ABAS Private oTFolder /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ VARIAVEIS REFERENTES AOS MOTORISTAS ABA2 DIALOGS[2] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ Private aMotoristas Private oLMot //Declarando o objeto do browser Private aCabecMot := {} //Variavel que montará o aHeader do grid Private aColsMot := {} Private cGCodDriv := Space(6) Private cGNomDriv := Space(25) Private cGCnh := Space(8) Private cGCateg := Space(2) Private oGCodDriv Private oGNomDriv Private oGCnh Private oGCateg Private nRdDriv Private oRdDriv /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ FIM VARIAVEIS MOTORISTAS $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ VARIAVEIS REFERENTES AO EMPRESTIMO DE VEICULOS ABA3 DIALOGS[3] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ Private oGCodMot1 Private cGCodMot1 := Space(6) Private oGNomMot Private cGNomMot Private oGCNHMot Private cGCNHMot Private oGCatMod Private cGCatMod Private oFArial10Neg := TFont():New( "Arial",0,-13,,.T.,0,,700,.F.,.F.,,,,,, ) // FONTE UTILIZADA Private aVeicRent Private oLRent //Declarando o objeto do browser Private aCabRent := {} //Variavel que montará o aHeader do grid Private aColsRent := {} /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ FIM VARIAVEIS AO EMPRESTIMO DE VEICULOS $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */ //Define cor para TSAY porém não funcionou na V12 #define CLR_BLUE 8388608 // RGB( 0, 0, 128 ) //Cria as tabelas utilizadas caso elas não existam no sistema, lembrando que, deve-se ter atençaõ às nomenclaturas SZ1, SZ2, caso no seu banco já //contenha estas tabelas, trocar toda estrutura do fonte. If !TCCanOpen("SZ1"+FWCodEmp("SZ1")+"0") FillSZ1() endif If !TCCanOpen("SZ2"+FWCodEmp("SZ1")+"0") FillSZ2() endif //ODLGPARA TELA oDlg := MsDialog():New() oDlg:cCaption := "..:: CADASTRO DE VEICULOS ::.." oDlg:nWidth := 1300 oDlg:nHeight := 600 oDlg:lCentered := .F. // imprime uma imagem na janela // @ 001,001 Jpeg File "nfp.jpg" Size 100,430 Pixel Of oDlg // Cria a Folder aTFolder := { 'Veículos', 'Motoristas', 'Empréstimo' } oTFolder := TFolder():New( 30,0,aTFolder,,oDlg,,,,.T.,,1200,500) /* TELA DE CADASTRO DE VEICULOS */ //CÓDIGO oCodigo := TSay():New(,,,oTFolder:aDialogs[1]) oCodigo:cCaption := "Codigo" oCodigo:nLeft := 015 oCodigo:nTop := 20 oCodigo:nWidth := 100 oCodigo:nHeight := 020 oGetCodigo := TGet():New(,,,oTFolder:aDialogs[1]) oGetCodigo:nLeft := 015 oGetCodigo:nTop := 34 oGetCodigo:nWidth := 096 oGetCodigo:nHeight := 020 oGetCodigo:cReadVar := "cGetCodigo" oGetCodigo:bSetGet := {|u| if( PCount() > 0, cGetCodigo := u, cGetCodigo ) } //NOME oNome := TSay():New(,,,oTFolder:aDialogs[1]) oNome:cCaption := "Descricao" oNome:nLeft := 130 oNome:nTop := 20 oNome:nWidth := 100 oNome:nHeight := 020 oGetNome := TGet():New(,,,oTFolder:aDialogs[1]) oGetNome:nLeft := 130 oGetNome:nTop := 35 oGetNome:nWidth := 200 oGetNome:nHeight := 020 oGetNome:cReadVar := "cGetNome" oGetNome:bSetGet := {|u| if( PCount() > 0, cGetNome := u, cGetNome ) } //PLACA oPlaca := TSay():New(,,,oTFolder:aDialogs[1]) oPlaca:cCaption := "Placa" oPlaca:nLeft := 350 oPlaca:nTop := 20 oPlaca:nWidth := 100 oPlaca:nHeight := 020 oGetPlaca := TGet():New(,,,oTFolder:aDialogs[1]) oGetPlaca:nLeft := 350 oGetPlaca:nTop := 35 oGetPlaca:nWidth := 100 oGetPlaca:nHeight := 020 oGetPlaca:cReadVar := "cGetPlaca" oGetPlaca:bSetGet := {|u| if( PCount() > 0, cGetPlaca := u, cGetPlaca ) } //STATUS oStatus := TSay():New(,,,oTFolder:aDialogs[1]) oStatus:cCaption := "Status" oStatus:nLeft := 500 oStatus:nTop := 20 oStatus:nWidth := 100 oStatus:nHeight := 020 nRadio := 1 aItens := {'Ativo','Inativo'} oRadio := TRadMenu():New(,,,,oTFolder:aDialogs[1]) oRadio:aItems := aItens oRadio:nLeft := 500 oRadio:nTop := 35 oRadio:nWidth := 100 oRadio:nHeight := 020 oRadio:bSetGet := {|u|Iif (PCount()==0,nRadio,nRadio:=u)} //chamar a função que cria a estrutura do aHeader CriaCabec() //Monta o browser com inclusão, remoção e atualização oLista := MsNewGetDados():New(50,005,280,300, /*5*/,/*6*/,/*7*/,/*8*/,/*9*/,1, 999, /*12*/, /*13*/, /*14*/, oTFolder:aDialogs[1], aCabecalho, aColsVeic,{|| FullField()},) //Carregar os itens que irão compor o conteudo do grid Carregar() //Alinho o grid para ocupar todo o meu formulário oLista:oBrowse:Align := CONTROL_ALIGN_NONE //Ao abrir a janela o cursor está posicionado no meu objeto oLista:oBrowse:SetFocus() //Crio o menu que irá aparece no botão Ações relacionadas aadd(aBotoes,{"NG_ICO_LEGENDA", {||Legenda()},"Legenda","Legenda"}) EnchoiceBar(oDlg, {|| oDlg:End() }, {|| oDlg:End() },,aBotoes) //Botão de confirmar, que chama a função de salvar os dados na tabela oBtnConf := TButton():New(,,,oTFolder:aDialogs[1]) oBtnConf:cCaption := "Confirmar" oBtnConf:nLeft := 620 oBtnConf:nTop := 100 oBtnConf:nWidth := 060 oBtnConf:nHeight := 025 oBtnConf:bAction := {|| fGravar(cGetCodigo, cGetNome, cGetPlaca,nRadio),Carregar(),oLista:ForceRefresh(),CargRent()}//,oLista:Refresh() } oBtnConf := TButton():New(,,,oTFolder:aDialogs[1]) oBtnConf:cCaption := "Excluir" oBtnConf:nLeft := 620 oBtnConf:nTop := 130 oBtnConf:nWidth := 060 oBtnConf:nHeight := 025 oBtnConf:bAction := {|| MsgInfo("EXCLUIR REGISTRO")}//,oLista:Refresh() } //Chama composição da tela de Motoristas, ABA2 DIALOGS[2] fDriver() //Chama composição da tela de Emprestimo de carros, ABA3 DIALOGS[3] fRentVei() oDlg:Activate() Return |
Colaboração de:
Adeilton Placid dos Santos Junior
Cientista da computação especialista em banco de dados, com expertise
em desenvolvimento de software, implantação, manutenção e administração do Protheus.
administrador de banco de dados, com expertise em sql server
https://www.facebook.com/juniorplacidojp
https://www.instagram.com/juniorplacido
https://www.linkedin.com/in/juniorplacido/