Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача данных [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. Если нужны куски кода
> говорите какие


Вот кусок этого самого "вызывается" и покажи ..


Наверх

Титульная страница Поиск, карта сайта Написать письмо