![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Всем привет!  
		
	
		
		
		
		
		
		
			Необходимо чтобы при сравнении итемсов 2 листбоксов, текст тех итемсов в листбоксе1, стал красного цвета, которых нет в листбоксе2. Код: 
	for i:=0 to ListBox1.Count - 1 do for j:=0 to ListBox2.Count - 1 do if ListBox1.Items[i]=ListBox2.Items[j] then begin cvt:=i; xcv:=0; break; end else begin cvt:=i; xcv:=1; end; Код процедуры листбокса1: procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var ij,ji:integer; begin with (Control as TListBox).Canvas do Begin if xcv=0 then if index=cvt then font.Color:=clgreen; if xcv=1 then if index=cvt then font.Color:=clred; FillRect(Rect); TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]); end; end; ПОМОГИТе пож.! Мучаюсь скока времени!!! Код, что я привёл один из множества вариантов, которые я испробовал - но выходит не то!((( Последний раз редактировалось Admin, 13.04.2010 в 11:23.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Сделайте проще, где-то так: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin if ListBox2.Items.IndexOf(ListBox1.Items[Index]) = -1 then TListBox(Control).Canvas.Brush.Color := clRed else TListBox(Control).Canvas.Brush.Color := clWhite; TListBox(Control).Canvas.FillRect(Rect); TListBox(Control).Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]); end; procedure TForm1.ListBox2DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin if ListBox1.Items.IndexOf(ListBox2.Items[Index]) = -1 then TListBox(Control).Canvas.Brush.Color := clRed else TListBox(Control).Canvas.Brush.Color := clWhite; TListBox(Control).Canvas.FillRect(Rect); TListBox(Control).Canvas.TextOut(Rect.Left, Rect.Top, ListBox2.Items[Index]); end;  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Спасибо за ответ, но я не совсем понял. Вы не могли бы пояснить. И ещё я не упомянул, что если осуществлять проверку есть или нет одинаковый итемс в процедуре DrawItem, то тогда при передвижении "скролла" она будет каждый раз выполнять эту проверку и перерисовывать - отсюда страшные тормоза. Поэтому надо как то сделать процедуру проверки при нажатии кнопки, а перерисовка и запоминание цвета в DrawItem. Но почему то это у меня не выходит корректно. За любую помощь буду признателен.)) 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 СПС! ОГРОМНОЕ, кажетса разобрался - у вас хороший код! 
		
	
		
		
		
		
		
	
		
		
	
	
	 |