********************************************************************************************* * Modulo Modificar Estructuras Method Estructura(aliasT,Objeto,Drdcopy,MAchcopy,Mext) Class TMntGral_Prg ********************************************************************************************* Local Vsay // Ventana para demarcar la Entrada y Modificacion de Datos. lw1=5 lw2=150 lw3=anchowin/2+30 lw4=altowin-250 Win_mant_datos:= TForm():Create() Win_mant_datos:BorderStyle := bsDialog Win_mant_datos:SetBounds( lw1,lw2,lw3,lw4 ) Win_mant_datos:Brush:Color:=clWindowP Win_mant_datos:Position:=poDesigned Win_mant_datos:Caption:="Estructura del Archivo "+MAchcopy+Mext // Boton Adicionar ::CrearBoton(Win_mant_datos,10,lw4-60, 100, 21,9,"Adicionar",; {|oSender| aSubArray := {Space(10) },; AAdd( aSubArray, Space(1)),; AAdd( aSubArray, Space(3)),; AAdd( aSubArray, Space(3)),; AAdd( aArray, aSubArray ),; ::StructGrid:Items := aArray,; ::StructGrid:Refresh(),; ::StructGrid:SetFocus()}) // Boton Borrar ::CrearBoton(Win_mant_datos,130,lw4-60, 100, 21,9,"Borrar",; {|oSender| aArray:=::BorraItemArray(aArray,::StructGrid:RowPos)}) // Boton Guardar ::CrearBoton(Win_mant_datos,250,lw4-60, 100, 21,9,"Guardar",; {|oSender| ::CreaStrArray(aArray,aliasT,Drdcopy,MAchcopy,Mext),; Win_mant_datos:Close(),Win_mant_datos:Destroy()}) // Boton Para Cancelar. ::CrearBoton(Win_mant_datos,370,lw4-60, 100, 21,9,"Salir",; {|oSender|Win_mant_datos:Close(),Win_mant_datos:Destroy()}) AstrAch:=&AliasT->(DbStruct()) ::regcpos=len(AstrAch) ::StructGrid := TStringGrid():Create( Win_mant_datos ) ::StructGrid:SetBounds( 10, 16, 513, lw4-100 ) ::StructGrid:Brush:Color := clBtnFace ::StructGrid:Header := { "Campo", ; "Tipo", ; "Tamaņo", ; "Decimales"} ::StructGrid:HeaderFont:Bold := .T. ::StructGrid:Sizes := { 120, ; 120, ; 120, ; 120} ::StructGrid:AllowEdit := .T. aArray := {} for ni := 1 to ::regcpos aSubArray := { AstrAch[ni,1] } AAdd( aSubArray, AstrAch[ni,2] ) AAdd( aSubArray, Str(AstrAch[ni,3],3,0)) AAdd( aSubArray, Str(AstrAch[ni,4],3,0) ) AAdd( aArray, aSubArray ) next ::StructGrid:Items := aArray ::StructGrid:Alignments := { taLeftJustify, taLeftJustify, taLeftJustify, taLeftJustify } ::StructGrid:SetFocus() Win_mant_datos:ShowModal() Return Nil ************************************************************************************************** Method CreaStrArray(Astrach,AliasT,Drdcopy,MAchcopy,Mext) Class TMntGral_Prg ************************************************************************************************** sArray:="{" for ni := 1 to len(Astrach) aSubArray := "{"+::comilla+ AstrAch[ni,1]+::comilla aSubArray :=aSubArray+ ","+::comilla+ AstrAch[ni,2]+::comilla aSubArray :=aSubArray+ ","+AstrAch[ni,3] aSubArray :=aSubArray+ ","+AstrAch[ni,4]+"}" If ni=1 sArray:=sArray+aSubArray Else sArray:=sArray+","+aSubArray Endif next sArray:=sArray+"}" DbCreate( "Tempord.dbf",&sArray, "DbfNtx", .T., "StrAlias" ) StrAlias->( DbCloseArea() ) Dbselectarea(AliasT) Dbclosearea(AliasT) DbUseArea( Newarea, "Dbfntx","Tempord","Tempord", !DbShared, !Readonly ) Achcopy=DrdCopy+MachCopy+Mext Append from &Achcopy Dbclosearea("Tempord") Copy file Tempord.dbf To &Achcopy Return