Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизShowModal и locate Найти похожие ветки
← →
Belkova © (2005-05-05 10:06) [0]Мастера Delphi! Подскажите пожалуйста. Вызываю форму с DBGrideh, и нужно, чтобы курсор стоял на определеной записи. Раньше делала так. Form1.Show;
IBQuery.Locate();
проблем не было.
сейчас Form1.ShowModal;
IBQuery.Locate();
не ищет. Помогите, пожалуйста.
← →
Max Zyuzin © (2005-05-05 10:08) [1]Попробуй операторы местами поменять :) поможет
← →
Johnmen © (2005-05-05 10:08) [2]Естественно. Ведь шоумодал, там и "стоит", пока форма не закроется, а уж потом локейт.
Поменяй местами....
← →
Rule © (2005-05-05 10:09) [3]а потомучто пока у тебя твоя форма1 не закроется, он искать не будет, тебе надо сделать так:
IBQuery.Locate();
Form1.ShowModal;
и при чем здесь DBGrideh?
← →
Rule © (2005-05-05 10:10) [4]Rule © (05.05.05 10:09) [3]
на секунду от остальных опаздал :-)
← →
Belkova © (2005-05-05 10:12) [5]Все равно не ищет. Местами поменяла.
← →
Johnmen © (2005-05-05 10:13) [6]Тогда в 17 строке
:)
← →
Belkova © (2005-05-05 10:19) [7]Всем спасибо. Все получилось.
← →
msguns © (2005-05-05 11:02) [8]>Belkova © (05.05.05 10:19) [7]
Для взаимодействия различных частей приложения (Например, Гл.формы с дочерними) часто требуется передавать в создаваемые формы данные. Однако не всегда получается "мирно" сделать это по типу
with TChildForm.Create(Self) do
begin
Par1 := ...;
Par2 := ...;
Par3 := ...;
Show;
end;
, т.к. в случае MDI приложения "дочка" показывается сразу после конструктора, не дожидаясь шоу, поэтому если в событии
FormCreate или FormShow написать
... := Par1;
... := Par2;
...
, то в левой части вместо значений, "присвоенных" Гл.формой, будут нули или бланки.
Можно, конечно, переопределить конструктор, но не всегда это приемлимо, да и требует времени и квалификации. Поэтому для передачи значений можно использовать "буферные" поля (объекты), отведенные в "постоянно живущих" формах или датамодулях.
Главная перед созданием "дочки" записывает в буфер вх.параметры, после чего создает форму.
"Дочка" первым делом (в FormCreate, например) переписывает содержимое буфера (Гл.Форма, как и датамодуль, ей должны быть "видимы") в свои поля, обеспечивая таким образом как бы реентерабельность (т.е. независимость работы от кол-ва созданных экземпляров объекта-формы). После чего делает то, что должна делать. При необходимости она передает результаты свой работы в вызывающий модуль, ипользуя тот же буфер.
Т.е. что-то похожее на интерфейс, только сильно упрощенный ;))
← →
KSK (2005-05-05 12:12) [9]можно использовать событие FormShow
procedure TForm1.FormShow(Sender: TObject);
begin
IBQuery.Locate();
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c