powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dbgrid selected
19 сообщений из 19, страница 1 из 1
dbgrid selected
    #39708382
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записываю в виртуальную таблицу по двойному клику так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TForm8.DBGridEh1DblClick(Sender: TObject);
begin
    dm.Virtual_temp_bs.Append;
    dm.Virtual_temp_bs.Fields[0].AsString:=dm.all_bs.Fields[0].AsString;
    dm.Virtual_temp_bs.Fields[1].AsString:=dm.all_bs.Fields[1].AsString;
    dm.Virtual_temp_bs.Fields[2].AsString:=dm.all_bs.Fields[2].AsString;
    dm.Virtual_temp_bs.Fields[3].AsString:=dm.all_bs.Fields[3].AsString;
    dm.Virtual_temp_bs.Fields[4].AsString:=dm.all_bs.Fields[4].AsString;
    dm.Virtual_temp_bs.Fields[5].AsString:=dm.all_bs.Fields[5].AsString;
    dm.Virtual_temp_bs.Fields[6].AsString:=dm.all_bs.Fields[6].AsString;
    dm.Virtual_temp_bs.Fields[7].AsString:=dm.all_bs.Fields[7].AsString;
    dm.Virtual_temp_bs.Fields[8].AsString:=dm.all_bs.Fields[8].AsString;
    dm.Virtual_temp_bs.Fields[9].AsString:=dm.all_bs.Fields[9].AsString;
    //dm.Virtual_temp_bs.Fields[10].AsInteger:=0;
    dm.Virtual_temp_bs.Post;
end;



Делаю:
Код: pascal
1.
2.
dgmultiselect true
dgrowselect true



к гриду привязываю popupmenu c кнопкой добавить, подскажите как добавить выделенные строки в виртуальную таблицу?!
...
Рейтинг: 0 / 0
dbgrid selected
    #39708391
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TForm8.N1Click(Sender: TObject);
var
i: integer;
begin
        For i := 0 to DBGridEh1.SelectedRows.Count - 1 do
        begin
        if DBGridEh1.SelectedRows.CurrentRowSelected=true then
          begin
          dm.Virtual_temp_bs.Append;
          dm.Virtual_temp_bs.Fields[0].AsString:=.....
          dm.Virtual_temp_bs.Fields[1].AsString:=.....                                 //как тут обратиться к ячейкам строки?
          dm.Virtual_temp_bs.Post;
          dm.Virtual_temp_bs.Next;
          end;

        end;
end;

end.
...
Рейтинг: 0 / 0
dbgrid selected
    #39708395
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

у грида свойство SelectedRows есть.
...
Рейтинг: 0 / 0
dbgrid selected
    #39708396
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

SelectedRows[i]
...
Рейтинг: 0 / 0
dbgrid selected
    #39708397
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45adminsamara,

у грида свойство SelectedRows есть.

Я знаю в коде выше я его использовал!
...
Рейтинг: 0 / 0
dbgrid selected
    #39708399
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
dm.Virtual_temp_bs.Fields[0].AsString:=DBGridEh1.SelectedRows[i]....... а что дальше то?!
...
Рейтинг: 0 / 0
dbgrid selected
    #39708407
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

SelectedRows - это закладки. Грид привязан к датасету.
Код: pascal
1.
ds.GotoBookmark(Pointer(DBGridEh1.SelectedRows[i]))
...
Рейтинг: 0 / 0
dbgrid selected
    #39708554
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел пример все ок, но как занести в таблицу?!

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    begin
      if DBGridEh1.SelectedRows.Count>0 then
        with DBGridEh1.DataSource.DataSet do
          for i:=0 to DBGridEh1.SelectedRows.Count-1 do
          begin
            GotoBookmark(DBGridEh1.SelectedRows.Items[i]);
            for j := 0 to FieldCount-1 do
            begin
              if (j>0) then s:=s+'      ';
              s := s + FindField(Fields.Fields[j].FieldName).AsString; //как dm.Virtual_temp_bs.Fields[0] засунуть?
            end;
            Listbox1.Items.Add(s);
            s:= '';
          end;
    end;
...
Рейтинг: 0 / 0
dbgrid selected
    #39708573
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamara,

также Append+Post.
...
Рейтинг: 0 / 0
dbgrid selected
    #39708577
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

из...ся не выходит...
Соответственно append post next
...
Рейтинг: 0 / 0
dbgrid selected
    #39708598
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще никак, где касяк?!
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
   begin
      if DBGridEh1.SelectedRows.Count>0 then
        with DBGridEh1.DataSource.DataSet do
          for i:=0 to DBGridEh1.SelectedRows.Count-1 do
          begin
            GotoBookmark(DBGridEh1.SelectedRows.Items[i]);
           for j := 0 to FieldCount-1 do
            dm.Virtual_temp_bs.Append;
            begin
              if (j>0) then

                 dm.Virtual_temp_bs.Fields[j].AsString:=DBGridEh1.DataSource.DataSet.Fields[i].AsString;
            end;
            dm.Virtual_temp_bs.Post;
            dm.Virtual_temp_bs.Next;

          end;
    end;
...
Рейтинг: 0 / 0
dbgrid selected
    #39708829
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaraВообще никак, где касяк?!
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
   begin
      if DBGridEh1.SelectedRows.Count>0 then
        with DBGridEh1.DataSource.DataSet do
          for i:=0 to DBGridEh1.SelectedRows.Count-1 do
          begin
            GotoBookmark(DBGridEh1.SelectedRows.Items[i]);
            for j := 0 to FieldCount-1 do
            dm.Virtual_temp_bs.Append;
            // i - это индекс для выделенных строк; j - индекс для полей(Fields). Смешали холодное и мокрое
            if (j>0) then
            begin
                 dm.Virtual_temp_bs.Fields[j].AsString:=DBGridEh1.DataSource.DataSet.Fields[i].AsString; 
            end;
            dm.Virtual_temp_bs.Post;
            dm.Virtual_temp_bs.Next;// это зачем?

          end;
    end;
...
Рейтинг: 0 / 0
dbgrid selected
    #39708984
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaraВообще никак, где касяк?!
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   begin
      if DBGridEh1.SelectedRows.Count>0 then
        with DBGridEh1.DataSource.DataSet do
          for i:=0 to DBGridEh1.SelectedRows.Count-1 do
          begin
            GotoBookmark(DBGridEh1.SelectedRows.Items[i]);
            dm.Virtual_temp_bs.Append;
           for j := 0 to FieldCount-1 do
            //dm.Virtual_temp_bs.Append; // append не для каждого поля, а только раз -- для строки
            begin
              if (j>0) then

                 dm.Virtual_temp_bs.Fields[j].AsString:=DBGridEh1.DataSource.DataSet.Fields[i].AsString;
            end;
            dm.Virtual_temp_bs.Post;
            dm.Virtual_temp_bs.Next;

          end;
    end;
...
Рейтинг: 0 / 0
dbgrid selected
    #39708998
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

Сижу пытаюсь разобраться...
...
Рейтинг: 0 / 0
dbgrid selected
    #39709000
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо помогли! Вот что получилось:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  begin
      if DBGridEh1.SelectedRows.Count>0 then
        with DBGridEh1.DataSource.DataSet do
          for i:=0 to DBGridEh1.SelectedRows.Count-1 do
          begin
            GotoBookmark(DBGridEh1.SelectedRows.Items[i]);
            dm.Virtual_temp_bs.Append;
           for j := 0 to FieldCount-1 do
            begin
              if (j>0)[color=red] or (j=0)[/color] then
                 dm.Virtual_temp_bs.Fields[color=red][j][/color].AsString:=DBGridEh1.DataSource.DataSet.Fields[color=red][j][/color].AsString;
            end;
            dm.Virtual_temp_bs.Post;
          end;
    end;
...
Рейтинг: 0 / 0
dbgrid selected
    #39709018
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaraСпасибо помогли! Вот что получилось:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  begin
      if DBGridEh1.SelectedRows.Count>0 then
        with DBGridEh1.DataSource.DataSet do
          for i:=0 to DBGridEh1.SelectedRows.Count-1 do
          begin
            GotoBookmark(DBGridEh1.SelectedRows.Items[i]);
            dm.Virtual_temp_bs.Append;
           for j := 0 to FieldCount-1 do
            begin
              if (j>0) or (j=0) then // Странное условие. Оно точно нужно?
                 dm.Virtual_temp_bs.Fields[j].AsString:=DBGridEh1.DataSource.DataSet.Fields[j].AsString;
            end;
            dm.Virtual_temp_bs.Post;
          end;
    end;
...
Рейтинг: 0 / 0
dbgrid selected
    #39709076
Фотография adminsamara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

Код: pascal
1.
if (j>0) then


Первый столбец не заполняет, остальные заполняет.

А если так, то все отлично!
Код: pascal
1.
if (j>0) or (j=0) then
...
Рейтинг: 0 / 0
dbgrid selected
    #39709079
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adminsamaragoldmi45,
А если так, то все отлично!
Код: pascal
1.
if (j>0) or (j=0) then

Шедеврально!
...
Рейтинг: 0 / 0
dbgrid selected
    #39709098
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggeradminsamaragoldmi45,
А если так, то все отлично!
Код: pascal
1.
if (j>0) or (j=0) then


Шедеврально! Условие выполняется ВСЕГДА, т.к.
adminsamara
Код: pascal
1.
for j := 0 to FieldCount-1 do

Значит, оно ненужно!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dbgrid selected
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]