Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии / 14 сообщений из 14, страница 1 из 1
07.06.2019, 13:51
    #39824026
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Имеется три формы
На первой размещены несколько Grid-ов, привязанные к своим хранимым процедурам с выносом некоторых полей
(на самом деле в проекте таких форм много).
На второй ListBox, в который залиты имена Grid-ов из первой формы (реализовано, а лучше имена хранимых процедур - не получается),
и Grid, в котором должен показываться полный вынос хранимой процедуры выбранного в ListBox Grid-а
Вызов формы 2 осуществляется по горячей клавише, привязанной к форме 3 (главная форма)
Как назначить DataSet выбранного Grida-а формы 1 в текущем его состоянии Grid-у формы 2

На FoxPro реализуется на раз (реализовано)
Но нужно на Delphi XE (для контроля данных и их ручной правке в MS SQL)
...
Рейтинг: 0 / 0
07.06.2019, 14:14
    #39824045
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Код: pascal
1.
2.
3.
4.
5.
begin
  if ListBoxGrid.ItemIndex < 0 then Exit;
  AGrid := Form1.FindComponent(ListBoxGrid.Items[ListBoxGrid.ItemIndex]) as TDBGrid;
  if AGrid <> nil then AGrid.DataSource := MyDataSource;
end;
...
Рейтинг: 0 / 0
07.06.2019, 14:45
    #39824075
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
DimaBr,

Вся сложность в том, что обработчик события нажатия горячей клавиши помещен на форму 3 (главную), где кроме меню ничего нет
А FindComponent ищет ТОЛЬКО в той форме, из которой вызывается, на конструкции
Var AGrid :TDBGrid;
и
AGrid := Form1.FindComponent(ListBoxGrid.Items[ListBoxGrid.ItemIndex]) as TDBGrid;
говорит, что переменная TDBGrid не найдена.
Помещать обработчик события нажатия горячей клавиши на каждую форму не реально, их более 2500
...
Рейтинг: 0 / 0
07.06.2019, 14:52
    #39824080
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Тогда ошибка в 17 строке
...
Рейтинг: 0 / 0
07.06.2019, 15:04
    #39824093
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
...
Рейтинг: 0 / 0
07.06.2019, 15:47
    #39824128
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Привет.

m830:
На второй ListBox, в который залиты имена Grid-ов из первой формы (реализовано...
:

Я бы добавил во 2-ю форму паблик проперти FormName,
в котором содержалось бы имя той самой формы, из которой в " листбокс залиты имена гридов "
Далее в цикле поиск по формам экрана по имени из проперти FormName, и в найденной форме поиск грида.

С уважением, Polesov.
...
Рейтинг: 0 / 0
07.06.2019, 16:57
    #39824181
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
DimaBr,

Сделал, как написано

procedure TForm3.ListBox1Click(Sender: TObject);
Var AGrid :TDBGrid;
begin
Edit5.Text:=ListBox1.Items[ListBox1.ItemIndex];
AGrid:= Form3.FindComponent(ListBox1.Items[ListBox1.ItemIndex]) as TDBGrid;
DBGrid1.DataSource:=AGrid.DataSource;
end;

Доходит строки
AGrid:= Form3.FindComponent(ListBox1.Items[ListBox1.ItemIndex]) as TDBGrid;
и на ней обрывается с ошибкой
Access violation at addres 004C3DAF in module 'Project2.exe'. Read of addres 00000010.

(первое упоминание AGrid, если впереди добавить еще упоминание AGrid , например Edit5.Text:=AGrid.Name; обрываться будет на ней)
...
Рейтинг: 0 / 0
07.06.2019, 17:20
    #39824196
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
m830,


авторprocedure TForm 3 .ListBox1Click(Sender: TObject);
...
AGrid:= Form 3 .FindComponent(ListBox1.Items[ListBox1.ItemIndex]) as TDBGrid;
...
Рейтинг: 0 / 0
07.06.2019, 23:38
    #39824345
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
// событие происходит в Form1 (у меня это форма с ListBox и Grid который будет принимать найденный датасет (верхняя)
procedure TForm1.ListBox1Click(Sender: TObject); 
var AGrid: TDBGrid;
begin
// ищем на Form2 грид по имени (Form2 это форма с двумя гридами) (нижняя)
  AGrid:= Form2.FindComponent(ListBox1.Items[ListBox1.ItemIndex]) as TDBGrid;
// текущему гриду (на Form1) присваиваем  DataSource найденного грида
  if AGrid <> nil then DBGrid1.DataSource:=AGrid.DataSource;
end;
...
Рейтинг: 0 / 0
09.06.2019, 00:27
    #39824522
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
DimaBr,

А можно показать весь код проекта.
Ну не катит у меня
На исполнении выскакивает ошибка при первом обращении к AGid
...
Рейтинг: 0 / 0
09.06.2019, 00:30
    #39824523
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
DimaBr,

Очень интересен код Form1
...
Рейтинг: 0 / 0
09.06.2019, 22:02
    #39824677
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Это и есть весь текст проекта
...
Рейтинг: 0 / 0
10.06.2019, 10:32
    #39824818
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
m830,

У меня было
if AGrid <> nil then Form3.DBGrid1.DataSource:=AGrid.DataSource;
Причем лежит DBGrid1 на Form3
Убрал Form3 - заработало
...
Рейтинг: 0 / 0
10.06.2019, 12:30
    #39824900
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии
Не было у вас такого
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как Grid формы 2 назначить DataSet формы 1 в текущем его состоянии / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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