![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Имеется один ComboBox и один Edit. Строка Edit пустая.  
		
	
		
		
		
		
		
		
			В ComboBox имеются строки: 1 квартал 2008 2 квартал 2008 3 квартал 2008 Как строке 1 квартал 2008 присвоить значение к примеру 100 и скопировать его (именно 100) в Edit. Остаотные кварталы думаю сделаю по аналогии. Или если еще проще: В ComboBox имеются строки: понедельник вторник среда ......... При выборе среда нужно чтобы в Edit подставлялось число 3, понедельник 1 и т.д. Заранее спасибо. Последний раз редактировалось Михалыч, 08.09.2008 в 23:32.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Попробуй так 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	Edit1.Text:=Format('%d',[ComboBox1.ItemIndex+1]);
или
Edit1.Text:=IntToStr(ComboBox1.ItemIndex+1);это по примеру дней недели, про кварталы вопрос не совсем понял ![]()  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 По поводу кварталов: 
		
	
		
		
		
		
		
	
		
		
	
	
	Прожиточный минимум 1 квартала 2008 Прожиточный минимум 2 квартал 2008 Прожиточный минимум 3 квартал 2008 и когда я выбираю любой из кварталов чтобы в Edit подставлялся размер прожиточного минимума, который утвержден, к примеру 100 рублей. Вставлять нужно непосредственно в Edit (можно было бы конечно вставить в Combobox просто к примеру 100, 200, 300) т.к. с этой суммой будут проводится математические действия, и во вторых чтобы работник мог рассчитать прож.минимум например за более ранний период, выбрав только квартал и год, ведь невозможно ведь помнить какая сумма прожиточного была к примеру в 1 квартале 2006 года  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Это не то, это просто первой строке combobox присваивается значение 1в edit, второй 2, третьей 3 и т.д. а нужно чтобы присваивалось то значение, которое нужно мне  | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Добавлять позиции в ComboBox через AddObject: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	ComboBox1.Items.AddObject('Здесь текст',TObject(100)); // вместо 100 подставляешь переменну.При выборе делаешь так: Код: 
	Edit1.Text := IntToStr(Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex])); Да, ComboBox надо поставить стиль соответсвующий, что бы можно было только выбирать из списка.  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 написал вот так  
		
	
		
		
		
		
		
	
		
		
	
	
	procedure TForm1.ComboBox1Change(Sender: TObject); begin ComboBox1.Items.AddObject('I квартал 2008',TObject(4063,00)); Memo2.Text := IntToStr(Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex])); end; end. 1. Если удалить все строки в Tstring, то ничего не выбирается, показывает пустую строку, а если в Tstring ввести что либо, то при выборе идет типа копирования строки "I квартал 2008", т.е. сколько раз будешь выбирать, то с каждым разом строк I квартал 2008 становиться больше. 2. В остальном работает, в поле Edit1 подставляется то что надо.  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Мужик, ты не прав. 
		
	
		
		
		
		
		
	
		
		
	
	
	1. Добавление в ComboBox должно выполняться 1 раз при инициализации формы. Вставь его хотя бы в FormCreate. 2. Вообще, такой фокус для дробных значений не проходит - нужно использовать целые. Если нужны дробные - то придется делать обертку над ними.  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Напиши подробнее 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Ну куда ж подробнее. 
		
	
		
		
		
		
		
	
		
		
	
	
	Заполнение: Код: 
	procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.Clear;
  ComboBox1.Itema.AddObject('1 квартал 2008',TObject(4063));
  ComboBox1.Itema.AddObject('2 квартал 2008',TObject(4120));
  ComboBox1.Itema.AddObject('3 квартал 2008',TObject(4254));
  ComboBox1.Itema.AddObject('4 квартал 2008',TObject(5000));
end;При выборе элемента: Код: 
	procedure TForm1.ComboBox1Change(Sender: TObject);
var
  C : Integer;
begin
  If ComboBox1.ItemIndex > -1 Then
    Begin
       Edit1.Text := IntToStr(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
    End;
end;Аесли ты про обертки, то там надо сделать класс и его экземпляры использовать при добавлении и при извлечении. Код краткий, только для понимания принципа: Код: 
	type
  TComboCurrency = class
  private
    FValue : Currency;
  public
    constructor Create(AValue : Currency); virtual;
    
    property Value : Currency read FValue write FValue;
  end;
constructor TComboCurrency.Create(AValue : Currency);
begin
  inherited Create;
  FValue := AValue;
end;тогда код будет выглядеть так: Заполнение: Код: 
	procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.Clear;
  ComboBox1.Itema.AddObject('1 квартал 2008',TComboCurrency.Create(4063.10));
  ComboBox1.Itema.AddObject('2 квартал 2008',TComboCurrency.Create(4120.20));
  ComboBox1.Itema.AddObject('3 квартал 2008',TComboCurrency.Create(4254.30));
  ComboBox1.Itema.AddObject('4 квартал 2008',TComboCurrency.Create(5000.40));
end;При выборе элемента: Код: 
	procedure TForm1.ComboBox1Change(Sender: TObject);
var
  V : TComboCurrency;;
begin
  If ComboBox1.ItemIndex > -1 Then
    Begin
       V := ComboBox1.Items.Objects[ComboBox1.ItemIndex] As TComboCurrency
       Edit1.Text := V.Value;
    End;
end; | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 ОГРОМНОЕ СПАСИБО, Все получилось. Единственное, а что если сумма с копейками, тогда как? 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Читать умеем??? 
		
	
		
		
		
		
		
	
		
		
	
	
	Тогда - через обертки. Код показал. Там собственно, надо только добавить хранение ссылок на эксземпляры класса и их уничтожение при закрытии формы. Если это главная форма приложения, тогда вообще можно забить, т.к. при закрытии программы винда всю память процесса вычистит, хотя это и не кошерно.  | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 а как сделать чтобы 2 квартал 2008 уже был выбран в combobox при открытии программы? 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#13  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Мужик, ну головой давай думать, да... 
		
	
		
		
		
		
		
	
		
		
	
	
	ComboBox1.ItemIndex := 1; // Если это вторая позиция в ComboBox.  |