Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
3-1115201790
Shaman_Naydak
2005-05-04 14:16
2005.06.14
Хозяюшке На Заметку (ХНЗ). Баг MSSQL 2000


1-1116949359
NightStranger
2005-05-24 19:42
2005.06.14
Как добавить подпункт в TreeView?


14-1117080687
Danilka
2005-05-26 08:11
2005.06.14
Не сочтите меня тормозом, но, про Ирак


4-1114077383
lpVoid
2005-04-21 13:56
2005.06.14
Как сохранить ресурс в файл?


11-1084360316
AlexR
2004-05-12 15:11
2005.06.14
ScrollBox и мышь