Главная страница
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.055 c
4-1113737504
volser
2005-04-17 15:31
2005.06.14
Генерация Hardware ID


4-1114428772
Polycom
2005-04-25 15:32
2005.06.14
Dos and Delphi


14-1117195061
Alena
2005-05-27 15:57
2005.06.14
Не работает exe-шник


3-1115720609
GreatMaster
2005-05-10 14:23
2005.06.14
Так как через ADO общаться с DBF в кодировке 1251?


4-1114412117
UserCP
2005-04-25 10:55
2005.06.14
Privileged Instructor что это такое?