Показать сообщение отдельно
  #25  
Старый 12.08.2019, 00:31
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 115
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Цитата:
Сообщение от DenSarych
В вашем случае, скорее всего, ничего не даст. Вы спрашиваете "как сделать", но, не описываете ни "зачем это нужно", ни "общей задумки", ни "общего подхода". А поскольку вы стоите программу на основе "советов из интернета" (каждый из которых по-своему правильный, но в общем-то несовместим с любым другим), то в результате и получите "лоскутное одеяло", набор кусков кода, а не цельную, работоспособную программу.

Вы опишите "что вы хотите получить в конечном итоге". Может - "форму ввода значений", или "пару форм раздельного отображения и редактирования данных", или "небольшую программку учёта, работающую с БД"?


Добавление значений (id, Name), т.е. "id записи в таблице и строки" в ComboBox:
Код:
procedure TfvMain.btnAddClick(Sender: TObject);
  var i, n :integer;
begin
    //заполним ComboBox значениями
  ComboBox1.Items.Clear;
  with Query1 do
  begin
    Open;
    for i := 1 to RecordCount do
    begin
      ComboBox1.Items.AddObject(
        FieldByName('Name').AsString,
        TObject(FieldByName('Id').AsInteger)
        );
      Next;
      end;
    Close;
    ComboBox1.Text := '';
    end;
end;
Изменение значений в ComboBox:
Код:
procedure TfvMain.btnDelClick(Sender: TObject);
  procedure ComboBox1_DelId ( cId :integer);
    var i :integer;
  begin
    with ComboBox1.Items do
    for i := 0 to Count -1 do
      if Integer(Objects[i]) = cId
        then begin
          Delete(i);
          Break;
          end;
  end;
begin
  //Изменим значения ComboBox
  // 1 вариант (рекомендуемый):
    // Очистить ComboBox1.Items: ComboBox1.Items.Clear;
    // Загрузить все данные из Query
  // 2 вариант (удаление единственного значения по id):
  ComboBox1_DelId(StrToInt(edValueId.Text));
end;
Получение значений id из ComboBox:
Код:
procedure TfvMain.ComboBox1Change(Sender: TObject);
begin
    //Посмотрим, какие значения Name и Id находятся в ComboBox1
  with (Sender as TComboBox) do
  begin
    ShowMessage('Name = '+Items.Strings[ItemIndex] +', Id = ' +
      IntToStr(Integer(Items.Objects[ItemIndex])))
    end;
end;
Алгоритм подразумевался такой сначала вводится текстовое имя проекта через комбобокс и вводятся исходные данные, далее происходит расчет получаются результирующие данные. Таким образом одному проекту соответствуют исходные данные и результат. Проекты хранятся в таблице с двумя полями id и имя проектов. И если надо удалить проект из таблицы то по кнопке запись удаляется из дбгрида (дбгрид для контроля сколько проектов в таблице), а вместе с ним должна удалиться и его отображение в комбобокс.
по коду
Код:
var
  Idx : Integer;
begin
  DeletedProjectName := ComboBox1.Text;
  ...
  Idx := ComboBox1.Items.IndexOf(DeletedProjectName);
  If Idx > -1 Then
    Begin
      ComboBox1.Items.Delete(Idx);
      ComboBox1.Text := '';
    End;
end;
удаляется запись из комбобокс (и запись в дбгриде т.к по нажатию на кнопку и выбранной записи в комбокс становиться соответствующая текущая запись в дб гриде). Но как удалить из комбобокс имя проекта, просто выбрав проект в дбгриде?
Т.к если в первом случае если выбрав в комбобоксе нужный проект в дбгриде становилось текущая нужная запись, то при выборе в ручную в дбгриде в комбоксе удаляется уже запись которая не соответствует выбранной в дбгриде.
Ответить с цитированием