Jens
(Fresh Scripter)
2003-01-10 08:28 AM
Protect ListView temporary from new sort

Hallo.

After select an Item from ListView the Script makes some operations and then it changes the ListView in
order to visualisize the result. For this im using $Item.Index.
During Script aktion it is possible to sort the ListView new and then $Item.Index is wrong.
How can I protect the ListView temporary from new sort.
I have tryed BeginUpdate/EndUpdate, but it will only disable the rendering - sort is possible.

Thanks for your help.
Jens


JochenAdministrator
(KiX Supporter)
2003-01-10 08:40 AM
Re: Protect ListView temporary from new sort

Jens,

Have you tried to set .HeaderStyle temporary to 2 (IIRC it is the value for No Sort )

hth

J.

[ 10. January 2003, 08:43: Message edited by: jpols ]


Jens
(Fresh Scripter)
2003-01-10 09:09 AM
Re: Protect ListView temporary from new sort

Thanks for the fast help.

Temporary set .HeaderStyle=1 and reset after changings to .HeaderStyle=2 is working fine.

Can you explain me IIRC value ?

Jens


JochenAdministrator
(KiX Supporter)
2003-01-10 09:44 AM
Re: Protect ListView temporary from new sort

IIRC is short for "If I Recall Correctly" [Wink]

Jens
(Fresh Scripter)
2003-01-10 09:59 AM
Re: Protect ListView temporary from new sort

That's a good question. But I think to use the
Index is easier and faster then comparing all
Items in a very large List. :-)


JochenAdministrator
(KiX Supporter)
2003-01-10 10:02 AM
Re: Protect ListView temporary from new sort

So now I starting to fail following you [Eek!]

What exactly should the ListView behave please post a script snippet of what you have !


Jens
(Fresh Scripter)
2003-01-10 11:07 AM
Re: Protect ListView temporary from new sort

It is a Script to change DHCP Server entries and
handle the reservations. For security reasons only a small range of IP's has access to the internet.
The ListView shows a just in time dumped DHCP entries list. After selecting an Item you can open or close
the Access.
In order to save the time for dumping and realoading the hole list from the DHCP Server again the script
has to update the ListView entries too.

code:
; created by Jens Ludolph 2002
; changed by Jens Ludolph 10.01.03
; Version KiXtart 2001.412
;========================================
Break ON
;========================================
$Path="D:\IPtoDHCP\"
$closeAccess=0
$LabelBackColor=&C9C9C9
;----------------------------------------
; FormDefinition
;----------------------------------------
$Title=" DHCP Konfiguration"
;----------------------------------------
$Form = CreateObject("Kixtart.Form")
$Form.Caption = $Title
$Form.Size = 620,418
$form.fontname = "Arial"
$form.fontsize = 9
$form.fontbold = 0
$form.forecolor = &808080
;----------------------------------------
; ListDefinition
;----------------------------------------
$XCoo=20
$YCoo=70
$ListView = $Form.ListView
$ListView.Location = $XCoo,$YCoo
$ListView.Size = 350, 216
$ListView.FullRowSelect = True
$ListView.OnClick = "fn_collect()"
$ListView.Sorted = 1
$ListView.MultiSelect = False
;$ListView.GridLines = True
$ListView.Columns.Count = 3
$ListView.Columns(0).Text = "Name"
$ListView.Columns(0).Width = 110
$ListView.Columns(1).Text = "IP-Address"
$ListView.Columns(1).Width = 110
$ListView.Columns(2).Text = "Mac-Address"
$ListView.Columns(2).Width = 110
;----------------------------------------
$prgProgressBar = $Form.ProgressBar("",$XCoo-10,$YCoo-30+320,380,20)
$prgProgressBar.Style = 1
$prgProgressBar.ForeColor =&808080
;----------------------------------------
; FrameDefinition
;----------------------------------------
$DHCP_Frame=$Form.Frame("DHCP Server List")
$DHCP_Frame.Location = $XCoo-10,$YCoo-30
$DHCP_Frame.Size = 380, 290
$Inte_Frame=$Form.Frame("Internet Address")
$Inte_Frame.Location = 400,$YCoo-30
$Inte_Frame.Size = 200, 140
$Pool_Frame=$Form.Frame("Pool Address")
$Pool_Frame.Location = 400,$YCoo+120
$Pool_Frame.Size = 200, 140
;----------------------------------------
; LabelDefinition
;----------------------------------------
$lbl_internet_na=$form.label("",460,$YCoo,110,18)
$lbl_internet_na.backcolor=$LabelBackColor
$lbl_internet_na.fontsize = 9
$lbl_internet_na.borderstyle = 5
$form.printxy(410,$YCoo-30+30,"Name :")
;----------------------------------------
$lbl_internet_ip=$form.label("",460,$YCoo+18+5,110,18)
$lbl_internet_ip.backcolor=$LabelBackColor
$lbl_internet_ip.fontsize = 9
$lbl_internet_ip.borderstyle = 5
$form.printxy(433,$YCoo-30+30+18+5,"IP :")
;----------------------------------------
$lbl_internet_ma=$form.label("",460,$YCoo+18+5+18+5,110,18)
$lbl_internet_ma.backcolor=$LabelBackColor
$lbl_internet_ma.fontsize = 9
$lbl_internet_ma.borderstyle = 5
$form.printxy(422,$YCoo-30+30+18+5+18+5,"Mac :")
;----------------------------------------
$lbl_pool_na=$form.label("",460,$YCoo+150,110,18)
$lbl_pool_na.backcolor=$LabelBackColor
$lbl_pool_na.fontsize = 9
$lbl_pool_na.borderstyle = 5
$form.printxy(410,$YCoo+150,"Name :")
;----------------------------------------
$lbl_pool_ip=$form.label("",460,$YCoo+150+18+5,110,18)
$lbl_pool_ip.backcolor=$LabelBackColor
$lbl_pool_ip.fontsize = 9
$lbl_pool_ip.borderstyle = 5
$form.printxy(433,$YCoo+150+18+5,"IP :")
;----------------------------------------
$lbl_pool_ma=$form.label("",460,$YCoo+150+18+5+18+5,110,18)
$lbl_pool_ma.backcolor=$LabelBackColor
$lbl_pool_ma.fontsize = 9
$lbl_pool_ma.borderstyle = 5
$form.printxy(422,$YCoo+150+18+5+18+5,"Mac :")
;----------------------------------------
; ButtomDefinition
;----------------------------------------
$Bt_Exit = $Form.Button
$Bt_Exit.Location = $Form.ClientWidth-10-75,$Form.ClientHeight-10-23
$Bt_Exit.Size = 75,23
$Bt_Exit.Text = "Exit"
$Bt_Exit.OnCLick = "Quit()"
;----------------------------------------
$Bt_Neu = $Form.Button
$Bt_Neu.Location = $Form.ClientWidth-10-75-10-75,$Form.ClientHeight-10-23
$Bt_Neu.Size = 75,23
$Bt_Neu.Text = "New"
$Bt_Neu.OnCLick = "fn_bt_neueAuswahl()"
;----------------------------------------
$Bt_Scope1 = $Form.Button
$Bt_Scope1.Location = $XCoo+15,$YCoo-30+$DHCP_Frame.ClientHeight-10-23
$Bt_Scope1.Size = 100,23
$Bt_Scope1.Text = "Location1"
$Bt_Scope1.OnCLick = "fn_bt_Scope1()"
;----------------------------------------
$Bt_Scope2 = $Form.Button
$Bt_Scope2.Location = $XCoo+15+100+10,$YCoo-30+$DHCP_Frame.ClientHeight-10-23
$Bt_Scope2.Size = 100,23
$Bt_Scope2.Text = "Location2"
$Bt_Scope2.OnCLick = "fn_bt_Scope2()"
;----------------------------------------
$Bt_Scope3 = $Form.Button
$Bt_Scope3.Location = $XCoo+15+100+10+100+10,$YCoo-30+$DHCP_Frame.ClientHeight-10-23
$Bt_Scope3.Size = 100,23
$Bt_Scope3.Text = "Location3"
$Bt_Scope3.OnCLick = "fn_bt_Scope3()"
;----------------------------------------
$Bt_closeAccess = $Form.Button
$Bt_closeAccess.Location = 465,$YCoo+75
$Bt_closeAccess.Size = 100,23
$Bt_closeAccess.Text = "Close Access"
$Bt_closeAccess.OnCLick = "fn_bt_closeAccess()"
;----------------------------------------
$Bt_openAccess = $Form.Button
$Bt_openAccess.Location = 465,$YCoo+150+75
$Bt_openAccess.Size = 100,23
$Bt_openAccess.Text = "Open Access"
$Bt_openAccess.OnCLick = "fn_bt_openAccess()"
$Bt_closeAccess.Enabled = False
$Bt_openAccess.Enabled = False
;----------------------------------------
;$Form.TopMost=True
$Form.Visible=True
$Form.Center
$Form.Show

fn_Label("Please select scope",&008040)

While $Form.Visible
$=Execute($Form.DoEvents)
Loop
;----------------------------------------
; FunctionDefinition
;----------------------------------------
Function fn_ListCreate()
;----------------------------------------
$J=0
$RowIndex=0
$draw_end=0
$ListView.HeaderStyle=1
$ListView.Items.clear
$draw_entry=0
$draw_end=10
$ProgressPrompt = "Export DHCP data from " + $ServerIP
fn_Draw_State($draw_entry, $draw_end, 0.03)
SHELL "%COMSPEC% /C " + $Path + "DHCPCMD.exe " + $ServerIP + " enumclients " + $ScopeIP + " -h >" + $Path + $Location+ ".txt"
If Open (10, $path + $Location + ".txt", 2) = 0
$TempDHCPList = ''
$LineDHCPList = ReadLine (10)
While @error = 0
If $LineDHCPList<>"DHCP Server version 4.1" AND $LineDHCPList<>"Command successfully completed." AND Len($LineDHCPList)<53 AND INSTR($LineDHCPList,"(null)")=0
$TempDHCPList = $TempDHCPList + $LineDHCPList + ','
EndIf
$LineDHCPList = ReadLine (10)
Loop
Close (10)
$ArrayDHCPList = Split (SubStr ($TempDHCPList, 1, Len ($TempDHCPList) - 1), ',', -1)
$ListView.Items.Count = Val(UBound ($ArrayDHCPList)+1)
$ProgressPrompt = "Input DHCP data"
FOR $Index = 0 TO Val(UBound ($ArrayDHCPList))
if Val(UBound ($ArrayDHCPList))<=90
$draw_entry=$draw_end
$draw_end=$draw_entry+(90/Val(UBound ($ArrayDHCPList)))
fn_Draw_State($draw_entry, $draw_end, 0.03)
else
if $J=(Val(UBound ($ArrayDHCPList))/90)+1
$draw_entry=$draw_end
$draw_end=$draw_entry+1
fn_Draw_State($draw_entry, $draw_end, 0.03)
$J=0
endif
endif

for $m=len($ArrayDHCPList[$Index]) to 1 Step -1
if SUBSTR($ArrayDHCPList[$Index],$m-1,1)=" "
$MacAd=SUBSTR($ArrayDHCPList[$Index],$m,len($ArrayDHCPList[$Index]))
$ListView.Items($RowIndex).SubItems(2).Text = $MacAd
$ArpIn=RTRIM(SUBSTR($ArrayDHCPList[$Index],1,$m-1))
goto "enum_name"
endif
next
:enum_name
for $m=len($ArpIn) to 1 Step -1
if SUBSTR($ArpIn,$m-1,1)=" "
$Name=SUBSTR($ArpIn,$m,len($ArpIn))
if $Name="(null)"
$RowIndex=$RowIndex-1
goto "enum_fin"
endif
$ListView.Items($RowIndex).SubItems(0).Text = $Name
$ArpIn=RTRIM(SUBSTR($ArpIn,1,$m-1))
goto "enum_ip"
endif
next
:enum_ip
for $m=len($ArpIn) to 1 Step -1
if SUBSTR($ArpIn,$m-1,1)=" "
$IPBase=SUBSTR($ArpIn,$m,len($ArpIn))
$ListView.Items($RowIndex).SubItems(1).Text = $IPBase
goto "enum_fin"
endif
next
:enum_fin
$RowIndex=$RowIndex+1
$J=$J+1
NEXT
fn_Draw_State($draw_end, 100, 0.03)
fn_Draw_State(0,0,0.03)
fn_Label("Select from list",&008040)
ENDIF
$ListView.HeaderStyle=2
EndFunction
;----------------------------------------
Function fn_collect()
;----------------------------------------
$ListView.HeaderStyle=1
DIM $IPPart[10]
$found=0
$red_inter=0
$green_inter=0
$green_pool=0
$J=0
$draw_end=0
$ProgressPrompt = "Checking selection"
if $lbl_internet_na.caption=$lbl_pool_na.caption
fn_clearLabel()
endif
For Each $Item in $ListView.SelectedItems
$Name_sel=$Item.SubItems(0).Text
$IPBase_sel=$Item.SubItems(1).Text
$MacAd_sel=$Item.SubItems(2).Text
$SelInd=$Item.Index
Next
$I=1
$SP=SPLIT($IPBase_sel,".")
For Each $Element In $SP
$IPPart[$I]=ltrim($Element)
$I=$I+1
Next
select
case VAL($IPPart[3])=XXX or VAL($IPPart[3])=YYY or (VAL($IPPart[3]+$IPPart[4])<=ZZZZZZ And $Location="Location2") or (VAL($IPPart[3]+$IPPart[4])<=10161 And $Location="Location3")
For $Index=0 to $RowIndex-1
fn_create_draw($draw_entry,$RowIndex,$J)
if $Name_sel=$ListView.Items($Index).SubItems(0).Text And $Index<>$SelInd
fn_red_pool($ListView.Items($Index).SubItems(0).Text,$ListView.Items($Index).SubItems(1).Text,$ListView.Items($Index).SubItems(2).Text)
$SelInd_pool=$Index
else
if INSTR($Name_sel,"FREE")
if $green_inter=0
fn_green_inter($Name_sel,$IPBase_sel,$MacAd_sel)
endif
$SelInd_internet=$SelInd
goto "end_fn_collect"
else
if $red_inter=0
fn_red_inter($Name_sel,$IPBase_sel,$MacAd_sel)
endif
$SelInd_internet=$SelInd
endif
endif
$J=$J+1
Next
case VAL($IPPart[3])<>XXX or VAL($IPPart[3])<>YYY or (VAL($IPPart[3]+$IPPart[4])>ZZZZZZ And $Location="Location2") or (VAL($IPPart[3]+$IPPart[4])>10161 And $Location="Location3")
For $Index=0 to $RowIndex-1
fn_create_draw($draw_entry,$RowIndex,$J)
if $Name_sel=$ListView.Items($Index).SubItems(0).Text And $Index<>$SelInd
fn_red_inter($ListView.Items($Index).SubItems(0).Text,$ListView.Items($Index).SubItems(1).Text,$ListView.Items($Index).SubItems(2).Text)
fn_red_pool($Name_sel,$IPBase_sel,$MacAd_sel)
$found=1
$SelInd_internet=$Index
else
if $found=0
if $green_pool=0
fn_green_pool($Name_sel,$IPBase_sel,$MacAd_sel)
endif
endif
$SelInd_pool=$SelInd
endif
$J=$J+1
Next
endselect
:end_fn_collect
fn_Draw_State($draw_end, 100, 0.01)
fn_Draw_State(0,0,0.01)
if $lbl_internet_na.caption="" or INSTR($lbl_internet_na.caption,"FREE")<>0
$Bt_closeAccess.Enabled = False
else
$Bt_closeAccess.Enabled = True
endif
if $lbl_pool_na.caption<>"" And $lbl_internet_na.caption<>""
$Bt_openAccess.Enabled = True
else
$Bt_openAccess.Enabled = False
endif
if (INSTR($Name_sel,"FREE")=1 and $lbl_pool_na.caption="") or $lbl_internet_na.caption=""
fn_Label("Select from list",&008040)
else
fn_Label("Select from list or action button",&008040)
endif
$ListView.HeaderStyle=2
EndFunction
;----------------------------------------
Function fn_dhcp_change($fnCaller)
;----------------------------------------
$ListView.HeaderStyle=1
$DelStr=$Path+"DHCPCMD.exe " + $ServerIP + " removereservedip " + $ScopeIP + " " + ltrim($lbl_internet_ip.caption) + " " + ltrim($lbl_internet_ma.caption)
$AddStr=$Path+"DHCPCMD.exe " + $ServerIP + " addreservedip " + $ScopeIP + " " + $IPNew + " " + $MacNew + " " + $NameNew
if $fnCaller=1
fn_Label("closing access for " + ltrim($lbl_internet_na.caption),&808080)
fn_close($DelStr)
$ProgressPrompt="closing access for " + ltrim($lbl_internet_na.caption)
fn_Draw_State(0, 100, 0.03)
fn_Draw_State(0, 0, 0.03)
fn_Label("protecting IP " + ltrim($lbl_internet_ip.caption),&808080)
fn_open($AddStr)
$ProgressPrompt="protecting IP " + ltrim($lbl_internet_ip.caption)
fn_Draw_State(0, 100, 0.03)
fn_Draw_State(0, 0, 0.03)
fn_Label("close Access finished",&808080)
$status="close Access finished"
Sleep 1
else
fn_Label("preaparing access for " + ltrim($lbl_pool_na.caption),&808080)
fn_close($DelStr)
$ProgressPrompt="preaparing access for " + ltrim($lbl_pool_na.caption)
fn_Draw_State(0, 100, 0.03)
fn_Draw_State(0, 0, 0.03)
fn_Label("openinging IP " + ltrim($lbl_internet_ip.caption),&808080)
fn_open($AddStr)
$ProgressPrompt="openinging IP " + ltrim($lbl_internet_ip.caption)
fn_Draw_State(0, 100, 0.03)
fn_Draw_State(0, 0, 0.03)
fn_clearLabel_pool()
fn_Label("open Access finished",&808080)
$status="open Access finished"
Sleep 1
endif
if $lbl_pool_na.caption=""
fn_Label("Select from list",&008040)
else
fn_Label("Select from list or action button",&008040)
endif
fn_writeLog($DelStr, $AddStr, $status)
$fnCaller=0
$ListView.HeaderStyle=2
EndFunction
;----------------------------------------
Function fn_close($DelStr)
;----------------------------------------
; $nul=messagebox("%COMSPEC% /C " + $DelStr + " >NUL:","ok",0)
SHELL "%COMSPEC% /C " + $DelStr + " >NUL:"
EndFunction
;----------------------------------------
Function fn_open($AddStr)
;----------------------------------------
; $nul=messagebox("%COMSPEC% /C " + $AddStr + " >NUL:","ok",0)
SHELL "%COMSPEC% /C " + $AddStr + " >NUL:"
fn_green_inter($NameNew,$IPNew,$MacNew)
EndFunction
;----------------------------------------
Function fn_writeLog($DelStr, $AddStr, $status)
;----------------------------------------
$nul=open(8, $path + "DHCPkonf.log", 5)
$nul=writeline(8, "====================================================" + Chr(13)+ Chr(10))
$nul=writeline(8, @Date + " " + @Time + Chr(13)+ Chr(10))
$nul=writeline(8, "====================================================" + Chr(13)+ Chr(10))
$nul=writeline(8, $DelStr + Chr(13)+ Chr(10))
$nul=writeline(8, $AddStr + Chr(13)+ Chr(10))
$nul=writeline(8, $status + Chr(13)+ Chr(10))
$nul=writeline(8, @fullname + Chr(13)+ Chr(10))
$nul=close (8)
EndFunction
;----------------------------------------
Function fn_red_inter($Name_sel,$IPBase_sel,$MacAd_sel)
;----------------------------------------
$red_inter=1
$lbl_internet_na.backcolor=&786FD2
$lbl_internet_na.caption=" "+Ltrim($Name_sel)
$lbl_internet_ip.backcolor=&786FD2
$lbl_internet_ip.caption=" "+Ltrim($IPBase_sel)
$lbl_internet_ma.backcolor=&786FD2
$lbl_internet_ma.caption=" "+Ltrim($MacAd_sel)
EndFunction
;----------------------------------------
Function fn_green_inter($Name_sel,$IPBase_sel,$MacAd_sel)
;----------------------------------------
$green_inter=1
$lbl_internet_na.backcolor=&65CDA0
$lbl_internet_na.caption=" "+Ltrim($Name_sel)
$lbl_internet_ip.backcolor=&65CDA0
$lbl_internet_ip.caption=" "+Ltrim($IPBase_sel)
$lbl_internet_ma.backcolor=&65CDA0
$lbl_internet_ma.caption=" "+Ltrim($MacAd_sel)
EndFunction
;----------------------------------------
Function fn_red_pool($Name_sel,$IPBase_sel,$MacAd_sel)
;----------------------------------------
$lbl_pool_na.backcolor=&65CDA0
$lbl_pool_na.caption=" "+Ltrim($Name_sel)
$lbl_pool_ip.backcolor=&786FD2
$lbl_pool_ip.caption=" "+Ltrim($IPBase_sel)
$lbl_pool_ma.backcolor=&786FD2
$lbl_pool_ma.caption=" "+Ltrim($MacAd_sel)
EndFunction
;----------------------------------------
Function fn_green_pool($Name_sel,$IPBase_sel,$MacAd_sel)
;----------------------------------------
$green_pool=1
$lbl_pool_na.backcolor=&65CDA0
$lbl_pool_na.caption=" "+Ltrim($Name_sel)
$lbl_pool_ip.backcolor=&65CDA0
$lbl_pool_ip.caption=" "+Ltrim($IPBase_sel)
$lbl_pool_ma.backcolor=&65CDA0
$lbl_pool_ma.caption=" "+Ltrim($MacAd_sel)
EndFunction
;----------------------------------------
Function fn_clearLabel()
;----------------------------------------
$lbl_internet_na.backcolor=$LabelBackColor
$lbl_internet_na.caption=""
$lbl_internet_ip.backcolor=$LabelBackColor
$lbl_internet_ip.caption=""
$lbl_internet_ma.backcolor=$LabelBackColor
$lbl_internet_ma.caption=""
$lbl_pool_na.backcolor=$LabelBackColor
$lbl_pool_na.caption=""
$lbl_pool_ip.backcolor=$LabelBackColor
$lbl_pool_ip.caption=""
$lbl_pool_ma.backcolor=$LabelBackColor
$lbl_pool_ma.caption=""
$Bt_closeAccess.Enabled = False
$Bt_openAccess.Enabled = False
EndFunction
;----------------------------------------
Function fn_clearLabel_pool()
;----------------------------------------
$lbl_pool_na.backcolor=$LabelBackColor
$lbl_pool_na.caption=""
$lbl_pool_ip.backcolor=$LabelBackColor
$lbl_pool_ip.caption=""
$lbl_pool_ma.backcolor=$LabelBackColor
$lbl_pool_ma.caption=""
$Bt_openAccess.Enabled = False
EndFunction
;----------------------------------------
Function fn_bt_closeAccess()
;----------------------------------------
$Bt_closeAccess.Enabled = False
$closeAccess=1
DIM $IPPart[10]
$IPDel=$lbl_internet_ip.caption
$I=1
$SP=SPLIT($IPDel,".")
For Each $Element In $SP
$IPPart[$I]=ltrim($Element)
$I=$I+1
Next
select
case len($IPPart[4])=3
$IPPart[4]=$IPPart[4]
case len($IPPart[4])=2
$IPPart[4]="0" + $IPPart[4]
case len($IPPart[4])=1
$IPPart[4]="00" + $IPPart[4]
endselect
$NameNew="FREE" + substr($IPPart[3],len($IPPart[3]),1) + $IPPart[4]
$MacNew="abcdef00" + substr($IPPart[3],len($IPPart[3]),1) + $IPPart[4]
$IPNew=ltrim($lbl_internet_ip.caption)
fn_dhcp_change($closeAccess)
$ListView.Items($SelInd_internet).SubItems(0).Text = $NameNew
$ListView.Items($SelInd_internet).SubItems(2).Text = $MacNew
EndFunction
;----------------------------------------
Function fn_bt_openAccess()
;----------------------------------------
$Bt_openAccess.Enabled = False
$closeAccess=0
$NameNew=ltrim($lbl_pool_na.caption)
$MacNew=ltrim($lbl_pool_ma.caption)
$IPNew=ltrim($lbl_internet_ip.caption)
fn_dhcp_change($closeAccess)
$ListView.Items($SelInd_internet).SubItems(0).Text = $NameNew
$ListView.Items($SelInd_internet).SubItems(2).Text = $MacNew
$ListView.Items($SelInd_pool).SubItems(0).Text = "cleared"
$ListView.Items($SelInd_pool).SubItems(1).Text = "cleared"
$ListView.Items($SelInd_pool).SubItems(2).Text = "cleared"
EndFunction
;----------------------------------------
Function fn_bt_Scope1()
;----------------------------------------
$DHCP_Frame.Caption="Scope 1"
$Bt_Scope1.Enabled = False
$Bt_Scope2.Enabled = False
$Bt_Scope3.Enabled = False
$ServerIP="AAA.AAA.AAA.AAA"
$ScopeIP="BBB.BBB.BBB.BBB"
; $Location="test"
$Location="Location1"
fn_ListCreate()
EndFunction
;----------------------------------------
Function fn_bt_Scope2()
;----------------------------------------
$DHCP_Frame.Caption="Scope 2"
$Bt_Scope1.Enabled = False
$Bt_Scope2.Enabled = False
$Bt_Scope3.Enabled = False
$ServerIP="CCC.CCC.CCC.CCC"
$ScopeIP="DDD.DDD.DDD.DDD"
$Location="Location2"
fn_ListCreate()
EndFunction
;----------------------------------------
Function fn_bt_Scope3()
;----------------------------------------
$DHCP_Frame.Caption="Scope 3"
$Bt_Scope1.Enabled = False
$Bt_Scope2.Enabled = False
$Bt_Scope3.Enabled = False
$ServerIP="EEE.EEE.EEE.EEE"
$ScopeIP="FFF.FFF.FFF.FFF"
$Location="Location3"
fn_ListCreate()
EndFunction
;----------------------------------------
Function fn_bt_neueAuswahl()
;----------------------------------------
$ListView.Items.clear
fn_clearLabel()
$Bt_closeAccess.Enabled = False
$Bt_openAccess.Enabled = False
$Bt_Scope1.Enabled = True
$Bt_Scope2.Enabled = True
$Bt_Scope3.Enabled = True
fn_Label("Please select scope",&008040)
EndFunction
;----------------------------------------
Function fn_Draw_State($draw_entry, $draw_end, $SleepTime)
;----------------------------------------
$XCordinate=($XCoo-10+380)/2-(( Len ( $ProgressPrompt ) *4 )/2)
$lbl_progresspompt=$form.label($ProgressPrompt,$XCordinate,$YCoo-30+300,( Len ( $ProgressPrompt ) *6 )+20,20)
$lbl_progresspompt.fontsize = 8
$lbl_progresspompt.forecolor = &808080
For $lProgress = $draw_entry to $draw_end
$prgProgressBar.Value = $lProgress
Sleep $SleepTime
Next
EndFunction
;----------------------------------------
Function fn_Label($ProgressPrompt,$PromptColor)
;----------------------------------------
$XCordinate=($XCoo-10+380)/2-(( Len ( $ProgressPrompt ) *4 )/2)
$lbl_progresspompt=$form.label($ProgressPrompt,$XCordinate,$YCoo-30+300,( Len ( $ProgressPrompt ) *5 )+20,20)
$lbl_progresspompt.fontsize = 8
$lbl_progresspompt.forecolor = $PromptColor
EndFunction
;----------------------------------------
Function fn_create_draw($draw_entry,$RowIndex,$J)
;----------------------------------------
if ($RowIndex-1)<=100
$draw_entry=$draw_end
$draw_end=$draw_entry+(100/Val($RowIndex-1))
fn_Draw_State($draw_entry, $draw_end, 0.01)
else
if $J=(Val($RowIndex-1)/100)+1
$draw_entry=$draw_end
$draw_end=$draw_entry+1
fn_Draw_State($draw_entry, $draw_end, 0.01)
$J=0
endif
endif
EndFunction

Exit 1



JochenAdministrator
(KiX Supporter)
2003-01-10 11:27 AM
Re: Protect ListView temporary from new sort

Ok,

got the script ... form looks very professional !
Please give me a while to get into the code [Wink]

So if I understand that correctly you want the ListView to sort automatically after update ?

Jochen


JochenAdministrator
(KiX Supporter)
2003-01-10 11:32 AM
Re: Protect ListView temporary from new sort

If this is the case ... try playing with the ListView.Sorted property ;

Not sure what build of kixforms you work with , but with the current released (36) it should work ...
(I personally have a copy of build 37 (Pre-Release)=
maybe something like:

code:
$ListView.Sorted = 1 ;???



Jens
(Fresh Scripter)
2003-01-10 11:38 AM
Re: Protect ListView temporary from new sort

No, automatically sort after update ... only view the changings on DHCP Server without reloading the hole List from it ... Jochen, it's working very well. The tip to change .HeaderStyle has solve my problem and I have posted the script, because you have asked for it.

Thank you for your help, again.


JochenAdministrator
(KiX Supporter)
2003-01-11 12:06 AM
Re: Protect ListView temporary from new sort

Jens,

that is nice to hear , just one more tip (The first thing i realized to be improved) :

Try filling the ListView with life (Cells) after you evaluated the values for it , reason:

The OnClick event for the View fires it's function in the current version even if the cells are empty ...

Jochen


Jens
(Fresh Scripter)
2003-01-10 01:10 PM
Re: Protect ListView temporary from new sort

... the script looks professional ... [Wink] , but I am far away to be a profi [Smile] .

Do you mean that I should define the OnClick Event after unktion fn_ListCreate() ?

Jens


JochenAdministrator
(KiX Supporter)
2003-01-10 01:20 PM
Re: Protect ListView temporary from new sort

back from lunch,

no, the values and so the row amount seems to be dynamic ... best way to handle this is in my opinion to check the cell value not being empty On Click event [Wink]


Jens
(Fresh Scripter)
2003-01-10 01:21 PM
Re: Protect ListView temporary from new sort

... Yes, you mean. I have made a test. Thanks - I have not thought about the possibility to make a click into an emty List [Smile]

Regards
Jens


JochenAdministrator
(KiX Supporter)
2003-01-10 01:25 PM
Re: Protect ListView temporary from new sort

no i meant no ...

just let the fn_collect() function check whether the clicked row has a value
( "if not SelectedItem.Value exit endif)

[ 10. January 2003, 13:26: Message edited by: jpols ]


Jens
(Fresh Scripter)
2003-01-10 01:51 PM
Re: Protect ListView temporary from new sort

Yeah ... same result, but seams to be the better way.
Thanks ...
[Confused] Can't receive any Value by using $SelectedItem.Value ??? What's wrong ?


JochenAdministrator
(KiX Supporter)
2003-01-10 01:56 PM
Re: Protect ListView temporary from new sort

was just a sample , no valid code, Sorry !!! [Frown]

try:
code:
;function start 
if $ListView.FocusedItem.SubItems(0).text ;selection has a value in first cell -> collect data

;code here

endif
;function end



Jens
(Fresh Scripter)
2003-01-10 02:09 PM
Re: Protect ListView temporary from new sort

It's working !!!
What's your opinion to this script ?

Jens
Thank you and have a nice weekend.


JochenAdministrator
(KiX Supporter)
2003-01-10 02:17 PM
Re: Protect ListView temporary from new sort

I must say that I really like the form ... really like to see it working (the DHCP Servers need to be selectable , no ?)

ShawnAdministrator
(KiX Supporter)
2003-01-10 05:19 PM
Re: Protect ListView temporary from new sort

I've seen two examples of very professional looking windows script in as many weeks (the first was rad's mm script). This script is extremely well done.

Jens
(Fresh Scripter)
2003-01-10 07:48 PM
Re: Protect ListView temporary from new sort

Thank you, for your opinions.

Jochen,
by chosing location the script is setting the right DHCP Server IP and the DHCP Scope.
It's necessary, because our company has different locations with different DHCP Servers and
IP Ranges. From our office we are responsible to support three locations in different towns.

Shawn,
kixform is a big step for kixtart. Now it's possible to develope well locking applikations and
I'm impreesed by the new possibilities. ... I'm worry about me that I haven't found this possibility earlyer then the end of last year. Until today this DHCP Server configurarion script was running in a DOS Box with manuall input of IP and PC Name ... now it's more comfortable and easier to use ...

Thanks and Regards
Jens [Smile]


ShawnAdministrator
(KiX Supporter)
2003-01-10 08:02 PM
Re: Protect ListView temporary from new sort

If I may, can I tell you specifically two of the
things I really like about your script ?

1) Some people frown on the (over-use) of COLOR
in a windows application. This script is a
perfect example of using color in a meaningfull
and eye-pleasing way - even your choice of
colors is (imho) absolutely perfect. Not too
dark and and not too light - doesn't assault the
old eye-balls if you know what I mean. Im a big
fan of using PASTEL colors for stuff like this
and you hit the nail right on the head.

2) The layout is wonderfull, intuitive and easy
to understand. Plus it doesn't look "contrived"
and "over-wraught" ... its wonderfull. I
especially like the arrangement of having the
ListView on the left with a series of framed
detail textboxes on the right. Reminds me a
little of Jochens PostPrep script.

Of course you must realize that this is only my
opinion. But i think going forward, in terms of
any scripts I write, definitely learned a thing
or two today.

-Shawn

[ 10. January 2003, 20:04: Message edited by: Shawn ]


Jens
(Fresh Scripter)
2003-01-10 08:18 PM
Re: Protect ListView temporary from new sort

Thank you for the flowers [Smile] ...

and thanks for the fast help in this board, again.

Jens


ShawnAdministrator
(KiX Supporter)
2003-01-10 08:23 PM
Re: Protect ListView temporary from new sort

By way of comment however - although i haven't
studied your code in length (no printer here) it
would appear that your centering your form
prematurely - when its pops you can see it
(briefly) move into position. Might want to
check into that.

[ 10. January 2003, 20:24: Message edited by: Shawn ]