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
|
Jochen
|
(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
|
Jochen
|
(KiX Supporter)
|
2003-01-10 09:44 AM
|
|
|
|
|
Re: Protect ListView temporary from new sort
|
|
IIRC is short for "If I Recall Correctly"
|
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. :-)
|
Jochen
|
(KiX Supporter)
|
2003-01-10 10:02 AM
|
|
|
|
|
Re: Protect ListView temporary from new sort
|
|
So now I starting to fail following you
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
|
Jochen
|
(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
So if I understand that correctly you want the ListView to sort automatically after update ?
Jochen
|
Jochen
|
(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.
|
Jochen
|
(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 ... , but I am far away to be a profi .
Do you mean that I should define the OnClick Event after unktion fn_ListCreate() ?
Jens
|
Jochen
|
(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
|
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
Regards Jens
|
Jochen
|
(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 ... Can't receive any Value by using $SelectedItem.Value ??? What's wrong ?
|
Jochen
|
(KiX Supporter)
|
2003-01-10 01:56 PM
|
|
|
|
|
Re: Protect ListView temporary from new sort
|
|
was just a sample , no valid code, Sorry !!!
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.
|
Jochen
|
(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 ?)
|
Shawn
|
(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
|
Shawn
|
(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 ...
and thanks for the fast help in this board, again.
Jens
|
Shawn
|
(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 ]
|