| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > обновление combobox после редактирования |
| Автор: Avada 24.11.2010, 00:43 |
| Привет всем. Моя проблема заключается в следующем: есть хмл-файл, в который я заношу некоторые данные и затем часть этих данных заносится в combobox. Если закрыть программу, а затем запустить по новой, результат будет налицо - в выпадающем списке добавился новый(е) элемент(ы). Подскажите, как сделать обновление комбо непосредственно после редактирования? Refresh не помогает Спасибо заранее |
| Автор: ~FoX~ 24.11.2010, 01:23 |
| Вызови процедуру загрузки итемов комбобокса непосредственно после редактирования... |
| Автор: Avada 24.11.2010, 01:31 |
| а что за процедура? |
| Автор: ~FoX~ 24.11.2010, 02:02 |
| Avada, О как.... ну это там где должно быть что нить вроде ComboBox1.Items.Add('бда-бла-бла').... Код покажи... |
| Автор: Avada 24.11.2010, 02:02 |
| вот форм криэйт procedure TForm1.FormCreate(Sender: TObject); var s: string; i, j: integer; begin // добавить в выпадающий список пункт"блабла" // теперь открываем хмл документ XMLDocument1.LoadFromFile('index.xml'); // и заносим в список названия блабла XMLDocument1.Active := true; j := XMLDocument1.DocumentElement.ChildNodes.Count; i := 0; while i <> j do begin s := VarToStr(XMLDocument1.DocumentElement.ChildNodes[i].Attributes['name']); ComboBox1.Items.Add(s); inc(i); end; вот само редактирование, клик procedure TForm1.Button1Click(Sender: TObject); var i, j: integer; s: string; begin if ComboBox1.Text = 'Создать ' then begin XMLDocument1.LoadFromFile('index.xml'); XMLDocument1.Active := true; XMLDocument1.DocumentElement.AddChild('group'); stringgrid1.Enabled := true; i := XMLDocument1.DocumentElement.ChildNodes.Count; XMLDocument1.DocumentElement.ChildNodes[i-1].Attributes['name'] := edit1.text; XMLDocument1.DocumentElement.ChildNodes[i-1].Attributes['form-master'] := edit2.Text; XMLDocument1.DocumentElement.ChildNodes[i-1].Text := #13; XMLDocument1.SaveToFile('index.xml'); XMLDocument1.Active := false; end |
| Автор: ~FoX~ 24.11.2010, 02:03 |
| Avada, ну так и вызови свои Add еще раз... |
| Автор: Avada 24.11.2010, 02:07 |
| Торможу, сказывается недосыпание) исправил предыдущее сообщение |
| Автор: ~FoX~ 24.11.2010, 11:42 | ||
Используйте теги кода. В конце выполнения клика добавь вызов FormCreate
|
| Автор: Avada 24.11.2010, 13:22 |
| спасибо вам большое! была еще проблема с дублированием элементов списка, т.е. к текущим добавлялись ниже их копии + свежедобавленное. поставил проверку чтобы если есть такой элемент, его не ставить, а сначала в тупик поставило. Задача решена! |
| Автор: ~FoX~ 24.11.2010, 14:18 | ||
А не проще ComboBox1.Items.Clear сделать и не морочиться с проверками?
|
| Автор: Avada 24.11.2010, 15:01 |
| в моем случае нет, т.к. значения фиксированные, стандартные пункты "создать" и "удалить" это после них уже все вводится |