Главная страница
    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.46 MB
Время: 0.036 c
14-1116852395
Andryk
2005-05-23 16:46
2005.06.14
Гимн гаишников )))))))


3-1115362448
Scorpio
2005-05-06 10:54
2005.06.14
Копирование БД и переименовка полей.


1-1117392026
Dezmond
2005-05-29 22:40
2005.06.14
Высота Task Bar


3-1115815666
syte_ser78
2005-05-11 16:47
2005.06.14
когда рефрешить бд?


1-1117259766
sofs
2005-05-28 09:56
2005.06.14
Проблема





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский