![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Помогите плиз! 
		
	
		
		
		
		
		
	
		
		
	
	
	Есть такая процедура: Код: 
	procedure TForm4.BitBtn1Click(Sender: TObject);
 Var i:Integer;
     k:Byte;
begin
 If (MaskEdit2.Text<>' , ') and (MaskEdit3.Text<>' , ') and
 (MaskEdit1.Text<>'    ') and (MaskEdit4.Text<>' , ') and
 (MaskEdit5.Text<>' , ') and (MaskEdit6.Text<>' , ') Then
   If (StrToFloat(MaskEdit2.Text)<=6.0) and
      (StrToFloat(MaskEdit3.Text)<=6.0) and
      (StrToFloat(MaskEdit4.Text)<=6.0) and
      (StrToFloat(MaskEdit5.Text)<=6.0) and
      (StrToFloat(MaskEdit6.Text)<=6.0) Then
        Begin
         k:=0;
         For i:=1 To Form3.StringGrid1.RowCount-1 Do
          If MaskEdit1.Text=Form3.StringGrid1.Cells[1,i] Then
           Begin
            k:=1;
            Break;
           End;
         If k=0 Then
          Begin
           Form3.StringGrid1.RowCount:=Form3.StringGrid1.RowCount+1;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,1]:=MaskEdit1.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,2]:=Edit1.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,3]:=Edit2.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,4]:=Edit3.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,5]:=MaskEdit2.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,6]:=MaskEdit3.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,7]:=MaskEdit4.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,8]:=MaskEdit5.Text;
           Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,9]:=MaskEdit6.Text;
           Close;
          End
          Else Label10.Visible:=True;
        End
 Else Label10.Visible:=True
 Else Label10.Visible:=True;
end;По выполнению данной процедуры строка в Stringrid остается пустой, а должна заполняться...  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А на какой форме (имя формы) находятся Edit'ы? Попробуй в uses добавь имя модуля к которому ты обращаешься + добавь перед именем Edit'a название формы, где он находится. Например так: Form1.Edit1 и т.д. 
		
	
		
		
		
		
			
		
		
		
		
		
			Последний раз редактировалось moo2k, 26.06.2008 в 20:52.  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 в uses указан используемый юнит, в едитах пробовал ставить название формы,но все равно не помогает... 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Код: 
	//здесь неправильно: Form3.StringGrid1.Cells[Form3.StringGrid1.RowCount-1,1]:=MaskEdit1.Text; И еще надо бы проверить, а заходим ли мы вообще по этому громоздкому условию чтоб сделать присвоения ячейкам.  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Спасибо огромное за помощь! Все уже перепробовал, а это не замечал...))) 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Хорошо что получилось. А вообще все плохо, потому что при данной конструкции необходимо блокировать исходную форму, а полтом разблокировать и т. д. 
		
	
		
		
		
		
		
	
		
		
	
	
	Иначе, если при нажатии кнопки "родительская" форма будет закрыта, то это вызовет ошибку. Лучше значения Едитов передавать параметрами, но для этого вместо стандартного Create для формы надо использовать конструктор.  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 а как мне передать из 1 формы в другую по проэкту потому что когда я обьявляю к примеру так в одной форме и в другой: 
		
	
		
		
		
		
		
	
		
		
	
	
	public var maxmp : integer; maxhp : integer; heal: integer; man : integer; ydar:integer; i : integer; k : integer; j : integer; healBPAr: integer; manBPAr: integer; maxmpBPAr:integer; maxhpBPAr:integer; end; и используе одни и теже переменный данные отличаются  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 а как мне передать из 1 формы в другую по проэкту потому что когда я обьявляю к примеру так в одной форме и в другой: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	public var maxmp : integer; maxhp : integer; heal: integer; man : integer; ydar:integer; i : integer; k : integer; j : integer; healBPAr: integer; manBPAr: integer; maxmpBPAr:integer; maxhpBPAr:integer; end;  | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Интересно, к чему относится этот кусок кода? 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Если переменные объявлены в модуле, то причем тут pablic, если объявлены в классе формы, то причем здесть var. И чего конкретно мы хотим передать из одной формы в другую? Объявленные в классе формы переменные принадлежат этому классу, даже если есть класс формы с переменными, у которых имена повторяются. Поэтому объявленные в разных классах (впрочем как и в разных модулях) переменные с одинаковыми наименованиями - это совершенно разные переменные, занимающие разные участки памяти. form1.maxmp <> form2.maxmp  |