--- /home/iarspider/MyFixes/ComboBox.ini.svn-base	Thu Mar 29 13:32:40 2007

+++ /home/iarspider/MyFixes/ComboBox.ini	Sun Apr  8 12:43:30 2007

@@ -52,6 +52,7 @@
 
 doText=    : <1,2,...>|1|
 doLoad=    |1|
 doSave=    |1|
+doSelect=     |1|
 *doEditText=    |1|
 *doSelectString=       |1|
 *doAddDir=     |1|

--- /home/iarspider/MyFixes/hiComboBox.pas.svn-base	Thu Mar 29 13:34:06 2007

+++ /home/iarspider/MyFixes/hiComboBox.pas	Sun Apr  8 13:59:16 2007

@@ -50,11 +50,13 @@

 var ind:integer;
 begin
   ind := ToInteger(_Data);
-   if(ind >= 0)and(ind < Control.Count)then
-    begin
-      Control.CurIndex := _Data.idata;
-      _OnClick(Control);
-    end;
+    
+{   if(ind >= 0)and(ind < Control.Count)then
+    begin}
+      Control.CurIndex := {_Data.idata}ind;
+      {_OnClick(Control);}
+      SendMessage(Control.Handle,CB_SETCURSEL,ind,0);
+{    end;}
 end;
 
 procedure THIComboBox._work_doEditText;

--- /home/iarspider/MyFixes/ListBox.ini.svn-base	Mon Apr  2 09:33:28 2007

+++ /home/iarspider/MyFixes/ListBox.ini	Sun Apr  8 15:25:10 2007

@@ -55,6 +55,7 @@

 doLoad=    |1|
 doSave=    |1|
 *doSelect=  ,     |1|
+*doSelectAll=    (  MultiSelect=True)|1|
 *doSelectString=       |1|
 *doAddDir=     |1|
 *doReplace=        Str|1|


--- /home/iarspider/MyFixes/hiListBox.pas.svn-base	Thu Apr  5 10:05:44 2007

+++ /home/iarspider/MyFixes/hiListBox.pas	Sun Apr  8 16:04:30 2007

@@ -28,6 +28,7 @@
     
     constructor Create(Parent:PControl);
     procedure Init; override;
     procedure _work_doSelect(var _Data:TData; Index:word);
+    procedure _work_doSelectAll(var _Data:TData; Index:word);
     procedure _work_doSelectString(var _Data:TData; Index:word);
     procedure _work_doEnsureVisible(var _Data:TData; Index:word);
     procedure _var_Index(var _Data:TData; Index:word);
@@ -98,6 +99,19 @@
     
 Stop := false;
 end;
 }
+
+procedure THIListBox._work_doSelectAll;
+var action:integer;
+begin
+  action := ToInteger(_Data);
+  if (action >= 0) then action :=  1;
+  if (action <  0) then action := 0;
+  if (_prop_MultiSelect) then
+    begin
+      SendMessage(Control.Handle,LB_SETSEL,action,-1);
+    end;
+end;
+
 procedure THIListBox._work_doSelect;
 var ind:integer;
 begin
@@ -105,11 +119,41 @@
    
   if(ind >= 0)and(ind < Control.Count)then
     begin
       if  _prop_MultiSelect then
+        begin 
+          Control.ItemSelected[ind] := not Control.ItemSelected[ind];//true;
+          if Control.ItemSelected[ind] then
+            begin
+              SendMessage(Control.Handle,LB_SETSEL,1,ind);
+            end
+          else
+            begin
+              SendMessage(Control.Handle,LB_SETSEL,0,ind);
+            end;
+        end
+      else
+        begin
+          Control.CurIndex := ind;
+          SendMessage(Control.Handle,LB_SETCURSEL,ind,0);
+        end;  
+    end
+  else
+    begin
+      if not (_prop_MultiSelect) then
+        begin
+          SendMessage(Control.Handle,LB_SETCURSEL,-1,0);
+        end;
+            
+      Control.CurIndex := -1;
+    end;
+    
+  { if(ind >= 0)and(ind < Control.Count)then
+    begin
+      if  _prop_MultiSelect then
        Control.ItemSelected[ind] := true
       else  Control.CurIndex := ind;
       _OnClick(Control);
     end
-   else Control.CurIndex := -1;
+   else Control.CurIndex := -1;}
 end;
 
 procedure THIListBox._work_doSelectString;
