|
Pogosta vprašanja
(Razno)
Pregled pogostih vprašanj
Kako izrišem celoten objekt (npr. meja) občine v Poročilu?
Nobody, pravice editiranja, urejanja,...?
Problematika leta 2000 ?
Kako izvedem oštevilčevanje strani v poročilu ?
Kako lahko sortiram polja znotraj MultipleDataSeta?
Kako razbijem poligone v polilinije ?
Kako izrišem celoten objekt (npr. meja) občine v Poročilu?
V kontrolo Ob izrisu , za karto vpišite naslednjo proceduro Border = True BorderColor = Black Window (CurRec.MinY-100, CurRec.MinX-100, CurRec.MaxY+100, CurRec.MaxX+100)
Nobody, pravice editiranja, urejanja,...?
Nobody je mišljen za to, da uporabniku absolutno prepreči spreminjanje nekega objekta. Tu govorim o uporabniku v smislu FIRME, ne pa kot oseba. Vsak uporabnik namreč ima administratorsko geslo in to pomeni, da se določenih stvari ne bi moglo zaščititi.
Pred nastavitvijo Nobody je seveda opozorilo, ki to odsvetuje. Če pa bi že prišlo do pomote, Vam lahko objekt odklenemo mi.
ZAŠČITA PODATKOV
Vse navedene zaščite so zaščite objektov SDMS. Za zaščito podatkov trenutno ni mehanizma, bo pa zelo v kratkem rešeno podobno kot za objekte. Vsaka podatkovna plast bo dobila dva nova atributa (kdo lahko gleda podatke in kdo jih lahko editira). Pravica kopiranja je nekaj, kar bo šlo v kratkem popolnoma ven. Šlo je za dupliciranje objekta, kopiranje na clipboard, export,... Te pravice bodo prirejene k pravici vpogleda.
Problematika leta 2000 ?
SDMS je Leto2000 kompatibilno in nima nikaršnih tovrstnih problemov.
Kako izvedem oštevilčevanje strani v poročilu ?
V poročilo dodate kontrolo tipa Formula. Nato v rubriko formula vpišite: Tekoča stran - IntToStr (CurRep.PageCurrent) Število vseh strani - IntToStr (CurRep.PageCount) Primer: "Stran: " + IntToStr (CurRep.PageCurrent) + ' / ' + IntToStr (CurRep.PageCount)
Kako lahko sortiram polja znotraj MultipleDataSeta?
Procedura za sortiranje MultipleDataSeta Sub MDSSort Dim Lyr As TLayer, SortFld, ValueFld As TField, I, J, K, NumOfFlds As Long Dim CurDataSet As TDataSet, SortOrder, ValueList As TStringList, N As Float Lyr = SelectLayer If Assigned ( Lyr ) Then SortFld = SelectField ( Lyr ) If Assigned ( SortFld ) Then CurDataSet = SortFld.Parent NumOfFlds = CurDataSet.FieldCount ValueList = CreateStringList SortOrder = CreateStringList Lyr.BeginMultipleUpdate For J = 0 To Lyr.AllRecords.Count - 1 Hint ( 'Obdelujem ' + IntToStr ( J + 1 ) + ' od ' + IntToStr ( Lyr.AllRecords.Count ) ) Lyr.CurrentRecord = Lyr.AllRecords.Items ( J ) If SortFld.FieldType = ftNumber Then SortOrder.Add ( FloatToStr ( SortFld.LineAsNumber ( 0 ) ) ) SortOrder.Data ( 0 ) = 0 For I = 1 To SortFld.LineCount - 1 N = SortFld.LineAsNumber ( I ) For K = 0 To SortOrder.Count - 1 If N <= StrToFloat ( SortOrder.Strings ( K ) ) Then SortOrder.Insert ( FloatToStr ( N ), K ) SortOrder.Data ( K ) = I Break EndIf Next If N > StrToFloat ( SortOrder.Strings ( SortOrder.Count - 1 ) ) Then SortOrder.Add ( FloatToStr ( N ) ) SortOrder.Data ( I ) = I EndIf Next Else For I = 0 To SortFld.LineCount - 1 SortOrder.Add ( SortFld.LineAsString ( I ) ) SortOrder.Data ( I ) = I Next SortOrder.Sorted = True EndIf Lyr.EditRecord.Edit ( Lyr.AllRecords.Items ( J ) ) For I = 0 To NumOfFlds - 1 ValueFld = CurDataSet.Fields ( I ) For K = 0 To ValueFld.LineCount - 1 ValueList.Add ( ValueFld.LineAsString ( K ) ) Next For K = 0 To SortOrder.Count - 1 If ValueFld.FieldType = ftNumber Then Lyr.EditRecord.FldAsNumberMulti ( K, ValueFld ) = StrToFloat ( ValueList.Strings ( SortOrder.Data ( K ) ) ) Else Lyr.EditRecord.FldAsStringMulti ( K, ValueFld ) = ValueList.Strings ( SortOrder.Data ( K ) ) EndIf Next ValueList.Clear Next Lyr.EditRecord.Update SortOrder.Sorted = False SortOrder.Clear Next Lyr.EndMultipleUpdate Message ( 'Obvestilo', 'Urejanje od A - Z končano !' ) SortOrder.Destroy ValueList.Destroy EndIf EndIf EndSub
Kako razbijem poligone v polilinije ?
Uporabite spodnjo proceduro PolygonToPolyline
Sub PolygonToPolyline Dim L1 as TLayer, L2 As TLayer Dim a as String L1 = SelectLayer ("Izberi poligonsko plast") If Not Assigned (L1) Then Exit Endif a = L1.Name + " polilinijska" If Not InputText ("Ime polilinijske plasti","Vnesi ime polilinijske plasti",a) Then Exit EndIF If Length (a) = 0 Then Exit EndIF L2 = L1.Duplicate ( False ) L2.Name = a L2.Comment = "Plast je narejena iz plasti " + L1.Name L2.Store Hint ("Razbijanje poligonov v polilinije...") L1.TopologyBreak ( L2 , False ) Hint ("Končano") EndSub
|