1 (edited by ZBear 2018-02-07 03:30:44)

Topic: Вопрос по MultiSelect

Есть форма, на форме ComboBox с MultiSelect и таблица. Необходимо чтобы при открытии в  ComboBox были выбраны значения из таблицы. Пробовал такой скрипт:

procedure edit_OnShow (Sender: string; Action: string);
  var
  i,r,c : integer;

begin
     c := edit.TableGrid6.RowCount - 1;
          for r := 0 to c do
              begin
                  i := StrToInt(edit.TableGrid6.Cells[0,r]);
                 edit.ComboBox8.ItemsChecked[i] := True ;
             end;
 end;

Работает только если в таблице одно значение, если больше уже не срабатывает.
Подскажите как сделать.

И ещё вопрос - какое значение edit.ComboBox8.ItemsChecked[?] := True ; должно быть чтобы не было выделено не одной записи? При 0 - выделено всё, при -1 - ошибка.

Re: Вопрос по MultiSelect

Приложите пожалуйста ваш проект, иначе не ясно, о каких именно значениях таблици идет речь.


И ещё вопрос - какое значение edit.ComboBox8.ItemsChecked[?] := True ; должно быть чтобы не было выделено не одной записи? При 0 - выделено всё, при -1 - ошибка.

Form1.ComboBox1.SetAllCheckBoxes(False);

Dmitry.

3 (edited by ZBear 2018-02-08 03:24:45)

Re: Вопрос по MultiSelect

Проект очень большой и на MySQL

таблица имеет вид:

id | Текстовое поле|Текстовое поле|
|Значение1       |Значение2       |
|Значение2       |Значение3       |

Re: Вопрос по MultiSelect

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
    i, c: integer;
    k, q: integer;
    id: integer;
begin
    Form1.ComboBox1.SetAllCheckBoxes(False);
    c := Form1.TableGrid1.RowCount-1;
    for i := 0 to c do
    begin
        id := Form1.TableGrid1.dbIndexToID(i);
        q := Form1.ComboBox1.Items.Count-1;
        for k := 1 to q do
        begin
            if Form1.ComboBox1.dbIndexToID(k) = id then Form1.ComboBox1.ItemsChecked[k] := true;
        end;
    end;
end;
Dmitry.