Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600

Отметил строку и как копировать из DBGridEh1 на DBGridEh2

06.10.2012, 22:26. Показов 4884. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ребята. ест 2 таблица tab1 и tab2 для отображение таблицу пользуюсь DBGridEh ,

На форму есть DBGridEh1 = показивает запись из tab1 , DBGridEh2 из tab2
Из статьи Разноцветный DBGRID и + дополнительный примеры от наши форума сделаю DBGridEh1 что бил возможности отметить один или несколько поля.
Но я хочу что этого пример било реальный смысл и не только визуальный вид, Чоху что бил возможности копировать или удалить только отмеченных записей как на фотке
что здесь писать для Удаление или Копирование ? Пожалуйста помогите что сталкивался таким
Миниатюры
Отметил строку и как копировать из DBGridEh1 на DBGridEh2  
Вложения
Тип файла: rar CheckBox+DBGridEh+test.rar (524.1 Кб, 42 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.10.2012, 22:26
Ответы с готовыми решениями:

Как отобразить в каждой строке в дополнительном поле DBGridEh1 количество записей из DBGridEh2
здравствуйте. BDE Paradox две таблицы связаны Master/Detail с помощью Query. Данные таблицы Master отображаются в DBGridEh1, ...

Dbdateedit в dbgrideh1 и в dbgrideh2
в принципе вот) нужно чтобы введя данные в dbdateedit они появились в обоих dbgrideh спасибо.

Как выделенную строку в ListBox копировать в Memo?
Здравствуйте, помогите сделать так, чтобы при нажатии на любую строку в ListBox, ее имя копировалось в мемо. У меня копирует весь текст,...

14
 Аватар для albor
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
06.10.2012, 23:04
Советую заглянуть в свойства DBGridEh. Там все что нужно уже есть и ничего придумывать не надо.
Начиная с хелпа, со слов:.. TDBGridEh.EditActions

Specifies the actions (inherited from TEditAction) that the grid can update and execute.

type

TDBGridEhEditAction = (geaCutEh, geaCopyEh, geaPasteEh, geaDeleteEh, geaSelectAllEh);

TDBGridEhEditActions = set of TDBGridEhEditAction;

Description

Use EditActions to specify the actions that the grid will update state and response of executing.
И еще - выбирать произвольные строки можно еще щелчком мышки по строке при нажатом Ctrl.
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
06.10.2012, 23:08  [ТС]
Цитата Сообщение от albor Посмотреть сообщение
Советую заглянуть в свойства DBGridEh. Там все что нужно уже есть и ничего придумывать не надо.
Начиная с хелпа, со слов:.. TDBGridEh.EditActions



И еще - выбирать произвольные строки можно еще щелчком мышки по строке при нажатом Ctrl.
Спасибо попробую и напишу что получится
0
Заблокирован
06.10.2012, 23:16
Опоздал
Вобщем как выше написали, там всё это реализовано и рисовать чекбоксы там не надо, в атаче пример
Вложения
Тип файла: zip CheckBox+DBGridEh+test1.zip (667.7 Кб, 75 просмотров)
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
06.10.2012, 23:39  [ТС]
Цитата Сообщение от Бородач Посмотреть сообщение
Опоздал
Вобщем как выше написали, там всё это реализовано и рисовать чекбоксы там не надо, в атаче пример
Хорошо это понял . А как теперь Удалить запись который отметили или копировать на другого таблицу ?
0
Заблокирован
06.10.2012, 23:46
Ну там в таблице есть колонка Bool логическая, написать запрос удалить все строки с Bool = True
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.10.2012, 00:25  [ТС]
Цитата Сообщение от Бородач Посмотреть сообщение
Ну там в таблице есть колонка Bool логическая, написать запрос удалить все строки с Bool = True
Головни боль не удаляет
Delphi
1
2
3
4
tab1Query.Active := False;
tab1Query.SQL.Clear;
tab1Query.SQL.Add('DELETE FROM tab1 WHERE Bool = true');
tab1Query.ExecSQL;
0
Заблокирован
07.10.2012, 00:47
У меня удаляет, только есть маленькая проблемка, он криво в колонку Bool значения ставит кликом, попробуй вручную в таблице выставить на некоторых строках True и потом загрузи таблицу в грид, у тебя будут некоторые чекбоксы активны, вот они при нажатии кнопки удаляются
Delphi
1
2
3
4
5
6
7
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  tab1Query.Active := False;
  tab1Query.SQL.Clear;
  tab1Query.SQL.Add('DELETE FROM tab1 WHERE Bool = true');
  tab1Query.ExecSQL;
end;
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.10.2012, 01:18  [ТС]
Цитата Сообщение от Бородач Посмотреть сообщение
У меня удаляет, только есть маленькая проблемка, он криво в колонку Bool значения ставит кликом, попробуй вручную в таблице выставить на некоторых строках True и потом загрузи таблицу в грид, у тебя будут некоторые чекбоксы активны, вот они при нажатии кнопки удаляются
Delphi
1
2
3
4
5
6
7
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  tab1Query.Active := False;
  tab1Query.SQL.Clear;
  tab1Query.SQL.Add('DELETE FROM tab1 WHERE Bool = true');
  tab1Query.ExecSQL;
end;
Но если вручную то да Удаляет, Потом таблица скрывает запись и не отображает . так не пойдет Что придумали это головни боль . какой то выход должно бить от это ситуации что работал корректно. Если невозможно не какой действия { Удалить или Копировать} Тогда зачем это ?
0
Заблокирован
07.10.2012, 01:38
Да вроде должно там всё работать, там настроек слишком много, поставь в инспекторе у DBGridEh1 в Options - dgEditing = True а dgRowSelect = False, тогда Bool в таблице нормально должен заполнятся, завтра ещё посмотрю как там всё правильно организовать.
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.10.2012, 01:48  [ТС]
Цитата Сообщение от Бородач Посмотреть сообщение
Да вроде должно там всё работать, там настроек слишком много, поставь в инспекторе у DBGridEh1 в Options - dgEditing = True а dgRowSelect = False, тогда Bool в таблице нормально должен заполнятся, завтра ещё посмотрю как там всё правильно организовать.
Спасибо Бородач Я тоже посмотрю нашел на Русский языке EhLib 5.Руководство разработчика некогда не работал с DBGridEh и хочу программу такого функция что бил возможности { Копировать и удалить} Спасибо за помощь
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.10.2012, 15:49  [ТС]
Цитата Сообщение от albor Посмотреть сообщение
Советую заглянуть в свойства DBGridEh. Там все что нужно уже есть и ничего придумывать не надо.
Начиная с хелпа, со слов:.. TDBGridEh.EditActions



И еще - выбирать произвольные строки можно еще щелчком мышки по строке при нажатом Ctrl.
Удалить работает так, Помогите пожалуйста {Копировать из tab1 на tab2} который отметили .... Помогите разобрать это головни боль....
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  I : Integer;
  S : string;
begin
  S := '';
  for I := 0 to ListSelect.Count-1 do
    S := S + IntToStr(Integer(ListSelect.Items[I]))+',';
  if S = '' then Exit;
  S := '('+Copy(S, 1, Length(S)-1)+')';
  tab1Query.SQL.Text := 'delete from tab1 where ID in ' + S;
  tab1Query.ExecSQL;
  tab1Query.SQL.Clear;
  tab1Query.SQL.Add('select* From tab1');
  tab1Query.Open;
 
end;
неужели нету какой то выход ? что копировать запись из tab1 на tab2
Вложения
Тип файла: rar CheckBox+DBGridEh+test.rar (526.1 Кб, 5 просмотров)
0
Заблокирован
07.10.2012, 15:56
Почему то не правильно выставляет галки на чекбоксе, тоесть если выставить одну галку, то не работают кнопки копирования\перемещения\удаления, вобщем они работают когда много выделено, не знаю баг это или же так задумал разработчик или же что то в настройках не дожал, также пробовал принудительно ставить значение в таблицу по CellClick, всё равно не выходит.
Вложения
Тип файла: zip CheckBox+DBGridEht.zip (669.6 Кб, 10 просмотров)
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.10.2012, 16:28  [ТС]
Цитата Сообщение от Бородач Посмотреть сообщение
Почему то не правильно выставляет галки на чекбоксе, тоесть если выставить одну галку, то не работают кнопки копирования\перемещения\удаления, вобщем они работают когда много выделено, не знаю баг это или же так задумал разработчик или же что то в настройках не дожал, также пробовал принудительно ставить значение в таблицу по CellClick, всё равно не выходит.
Огромное спасибо , Извините что отвлекал Бородач Второе день сижу за это ..... Я думаю что принимать это пример в реально программе не стоит не работает корректно , Это глупости за что это придумали ест только {визуальный вид} Ну ладно не стоить на это терять время, еще раз спасибо тебя и 'albor .... Спасибо ребята,
Копировать Я буду реализовать ,, По одному" и это тему пока отложим , Потому что голова болит

По одному сделаю так
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery2.insert;
ADOQuery2.FieldByName('FirstName').AsString :=ADOQuery1.FieldByName('FirstName').AsString;
ADOQuery2.FieldByName('ListName').AsString :=ADOQuery1.FieldByName('ListName').AsString;
ADOQuery2.Post;
 
end;
Спасибо еще раз ..... Я думаю что луче делаю так по одному
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.10.2012, 20:56  [ТС]
Цитата Сообщение от Бородач Посмотреть сообщение
Почему то не правильно выставляет галки на чекбоксе, тоесть если выставить одну галку, то не работают кнопки копирования\перемещения\удаления, вобщем они работают когда много выделено, не знаю баг это или же так задумал разработчик или же что то в настройках не дожал, также пробовал принудительно ставить значение в таблицу по CellClick, всё равно не выходит.
Получил что хотел ! Может кому то понадобится . Работает без глюк

================ Удалить ==========================

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  I : Integer;
  S : string;
begin
  S := '';
  for I := 0 to ListSelect.Count-1 do
    S := S + IntToStr(Integer(ListSelect.Items[I]))+',';
  if S = '' then Exit;
  S := '('+Copy(S, 1, Length(S)-1)+')';
  tab1Query.SQL.Text := 'delete from tab1 where ID in ' + S;
  tab1Query.ExecSQL;
  tab1Query.SQL.Clear;
  tab1Query.SQL.Add('select* From tab1');
  tab1Query.Open;
 
end;
========================== Копировать ===============================

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  I : Integer;
begin
  for I := 0 to ListSelect.Count-1 do begin
    tab1Query.Locate('ID', Integer(ListSelect.Items[I]), []);
    tab2Query.SQL.Text := 'insert into Tab2(FirstName, ListName) values('+
                              QuotedStr(tab1Query.FieldByName('FirstName').AsString)+','+
                              QuotedStr(tab1Query.FieldByName('ListName').AsString)+')';
    tab2Query.ExecSQL;
    tab2Query.SQL.Clear;
    tab2Query.SQL.Add('select* From tab2');
    tab2Query.Open;
  end;
 
end;
Вложения
Тип файла: rar CheckBox+DBGridEh+test.rar (525.2 Кб, 46 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2012, 20:56
Помогаю со студенческими работами здесь

Как копировать строку из одного двумерного массива в другой?
Как копировать строку из одного двумерного массива в другой?

Копировать строку неопределённое количество раз в строку с ограниченным размером до её заполнения
Например: строка "test", её нужно копировать в строку с ограниченным размером в 9 символов, после копирования должна получиться строка...

Как вывести сообщение на форме? (отметил жирным в задании)
Создайте приложение с двумя формами, в котором на первой (главной) форме выводится сообщение «Нажми ‘э’, чтобы увидеть эллипс, ‘к’, чтобы...

DBGridEh1.SelectedRows как от туда достать выделенные строки ?
DBGridEh1.SelectedRows как от туда достать выделенные строки и вывести их на печать! помогите плиз


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru