![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача данных [D7, WinXP]
Dagir © (2008-09-04 09:56:00)Здравствуйте! Столкнулся вот с чем: Форма1 - главная, на ней TreeView, IBQuery(несколько-для дерева, DBGrid-а и т.д),
dataSet(тоже несколько) и DBGrid. Кликаем на TreeView и в DBGrid-е появляется список. Форма2-фактически сторока
ввода параметров расширенного поиска, так вот при нажатии кнопки "наити" на этой форме, данные которые были получены
нужно передать в IBQuery формы1, в нем уже прописан текст запроса для DBGreed - а, но передать - то я как раз ничего
не могу кто - нить подскажет как это сделать, может на примерах хоть покажете?
(форма2 вызывается кнопкой в форме1. Если нужны куски кода говорите какие.)
Anatoly Podgoretsky (2008-09-05 19:58:00) [1]> Dagir (04.09.2008 10:31:07) [7]
У тебя наверно и метки и кнопки на форме есть, тогда TMainLabelFrameButton
Сергей М. (2008-09-05 19:54:00) [2]
> Dagir © (04.09.08 11:27) [18]
Привет "другу" Fynjy)
Dagir (2008-09-04 11:27:00) [3]ну, будем посмотреть
Сергей М. (2008-09-04 11:26:00) [4]Надо понимать, проблема рассосалась и вопрос исчерпан ?)
Dagir (2008-09-04 11:24:00) [5]это я просто так не хорошо выразился, все так как ты и говоришь
Сергей М. (2008-09-04 11:23:00) [6]
> через IBQuery, он через DataSet выводит все на DBGrid
Это как это ?
IBQuery и так уже есть наследник TDataset, что еще за прокладка в виде непонятного "DataSet" у тебя фигурирует между IBQuery и DBGrid ?
Dagir (2008-09-04 11:13:00) [7]ну я получаю критерии поиска, запрашиваю соответствующие данные в базе, через IBQuery, он через DataSet выводит все на DBGrid. Все это должно работать.
Сергей М. (2008-09-04 10:53:00) [8]
> IBQuery который в фрейме связан с DBGrid-ом
А по барабану с чем он связан !
Ты же утверждаешь, что "на прямую воспользоваться ее компонентами не получится" - вот тебе код, демонстрирующий что твое утверждение ложно ..
> как я потом выведу все на таблицу
Что "все" ? Что значит "выведу" и на какую такую "таблицу" ?
Dagir (2008-09-04 10:46:00) [9]Сергей М. Но ведь IBQuery который в фрейме связан с DBGrid-ом, как я потом выведу все на таблицу?
Плохиш (2008-09-04 10:45:00) [10]
> Dagir © (04.09.08 10:32) [8]
> Плохиш. А пример можешь какой - нить
Соурскод VCL полон примерами.
PS. После того маразма из [3] и объяснения из [7] объяснения нужно начинать с самых основ, описанных в любой книжке.
Сергей М. (2008-09-04 10:41:00) [11]
procedure AdvancedSearchShow;
begin
with TAdvancedSearchForm.Create(Application) do
begin
BBB(MyIBQuery);
..
end;
end;
function TAdvancedSearchForm.BBB(AQuery: TIBQuery): Boolean;
begin
with AQuery do
..
end;
Так сойдет ?
Сергей М. (2008-09-04 10:36:00) [12]
> создается заново, потому что, если на прямую обращяться к ней то воспользоваться ее компонентами не получится
Чтой-то вдруг ?
И вообще осознаешь при этом, что создавая 2-й экземпляр объекта-фрейма, ты тем самым создаешь отдельный экз-р объекта IBQuery и обращаешься именно к нему, а не к оригинальному объекту, о котором собственно и идет речь в вопросе ?
Dagir (2008-09-04 10:32:00) [13]Плохиш. А пример можешь какой - нить, а то я в общем виде так особо не понимаю. заранее спасибо
Dagir (2008-09-04 10:31:00) [14]Сергей М. Frame потому что Frame на форме. А создается заново, потому что, если на прямую обращяться к ней то воспользоваться ее компонентами не получится.
Сергей М. (2008-09-04 10:21:00) [15]Где-то я это уже видел) ..
> Dagir © (04.09.08 10:12) [3]
TMainFrame - это класс основной формы ?
А почему она обзывается фреймом ?
Форма эта ужесуществует, так за каким же лешим ты создаешь еще одну форму такого же класса
> fhh:=TMainFrame.Create(nil);
?
Сергей М. (2008-09-04 10:17:00) [16]Так ..
И где в этом коде собственно проблема ?
Плохиш (2008-09-04 10:16:00) [17]
> Dagir © (04.09.08 09:56)
1. У формы2 создаются требуемые свойства, через которые форма1 может установить и получить требуемые параметры.
2. Так же у формы2 создаётся событие, которое будет выполняться формой2 при нажатии в ней кнопки "наити". В форме1 создаётся метод, который при вызове ею формы2 будет присвоено выше указанному событию.
Dagir (2008-09-04 10:12:00) [18]форма1
procedure TMainFrame.btnFilterExClick(Sender: TObject);
begin
AdvancedSearchShow;
end;
форма2
procedure AdvancedSearchShow;
begin
with TAdvancedSearchForm.Create(Application) do
begin
BBB;
Show;
end;
end;
function TAdvancedSearchForm.BBB: Boolean;
var
fhh:TMainFrame;
begin
fhh:=TMainFrame.Create(nil);
try
with fhh.IBQParam do
begin
SQL.Clear;
SQL.Add('select distinct PAR_NAME, PAR_ID from PAR where PAR_NAME <> :str order by PAR_NAME ');
ParamByName('str').AsString := '';
Open;
First;
while not Eof do
begin
ComboBox1.Items.AddObject( FieldByName('PAR_NAME').AsString,
Pointer( FieldByName('PAR_ID').AsInteger) );
Next;
end;
Close;
end;
finally
fhh.free;
end;
end;
oldman (2008-09-04 09:59:00) [19]unit form1
uses form2
form1.ченадо:=form2.ченадо
Сергей М. (2008-09-04 09:58:00) [20]
> форма2 вызывается кнопкой в форме1. Если нужны куски кода
> говорите какие
Вот кусок этого самого "вызывается" и покажи ..