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

Вниз

Tframe   Найти похожие ветки 

 
dalex ©   (2010-05-27 12:59) [0]

Добрый день!
Помогите пожалуйста в таком вопросе

На главной фороме отображается Фрейм

procedure TMainForm.UpdateFrame(Sender : TObject);
begin
   if Assigned(MainForm) and Assigned(CurrentFrame) then begin
       CurrentFrame.Visible := False;
       CurrentFrame.SetBounds(XXX,XXX,XXX,XXX);
       CurrentFrame.Parent := MainForm;
       CurrentFrame.Visible := True;
       CurrentFrame.Repaint;
   if Assigned(OldFrame) then begin FreeAndNil(OldFrame); end;
 end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
     if Assigned(CurrentFrame) then OldFrame := CurrentFrame;
     if OldFrame is TStartFrame then FreeAndNil(OldFrame);
       CurrentFrame := TStartFrame.Create(MainForm);
       MainForm.UpdateFrame(Sender);

end;

Для упрощения вопроса, допустим, что  на фрейме расположены Button и ADOQuery с каким то набором данных, при нажатии на Button отображается форма
с Button и Edit

procedure TStartFrame.Button1Click(Sender: TObject);
begin
   Form2.ShowModal;
end;

При нажатии на Button в Edit должно отобразиться некоторая запись с набора данных ADOQuery

procedure TForm2.Button1Click(Sender: TObject);
begin
   Edit1.Text:=StartFrame.ADOQuery1.FieldByName("XXX").AsString;
end;

Вопрос следующий, как из Form2 достучаться до StartFrame.ADOQuery1, так как, то что указано в TForm2.Button1Click релизовать невозможно, так как Form2 не видет StartFrame
Спасибо


 
MBo ©   (2010-05-27 13:18) [1]

в uses модуля второй формы указать модуль первой?


 
Плохиш ©   (2010-05-27 13:22) [2]


> procedure TForm2.Button1Click(Sender: TObject);
> begin
>    Edit1.Text:=StartFrame.ADOQuery1.FieldByName("XXX").AsString;
>
> end;
>
> Вопрос следующий, как из Form2 достучаться до StartFrame.
> ADOQuery1, так как, то что указано в TForm2.Button1Click
> релизовать невозможно, так как Form2 не видет StartFrame

Как можно увидеть то, что не существует?

У формы TForm2 сделать свойство, в которое в методе TStartFrame.Button1Click передавать требуемое значение.


 
Плохиш ©   (2010-05-27 13:24) [3]


> MBo ©   (27.05.10 13:18) [1]
>
> в uses модуля второй формы указать модуль первой?

И чем это ему поможет? Только получит исключение "Access violation" ;-)


 
Медвежонок Пятачок ©   (2010-05-27 13:37) [4]

Edit1.Text:=StartFrame.ADOQuery1.FieldByName("XXX").AsString;

Зачем проектировать такой фрейм, если "снаружи" надо знать какой там квери и какое там поле?

Фрейм должен иметь либо свойство либо метод "дай мне значение такого-то атрибута"


 
dalex ©   (2010-05-27 14:02) [5]


> Фрейм должен иметь либо свойство либо метод "дай мне значение
> такого-то атрибута"


Сори, несовсем понял что нужно дать, как и где это посмотреть?

Приложение построено на ипользовании n-го кол-ва фреймов, отображаемых на главной форме, и лишь у некоторых фреймов необходимо вызвать отдельную форму. Эта форма предназначена для редактирования и ввода данных в таблицу, которая находится на фрейме. При вызове такой форме, необходимо знать ID редактируемой позиции Поэтому и возникла надобность при вызове формы редактирования обращаться к набору данных, дабы определить ID редактируемой записи


 
Плохиш ©   (2010-05-27 14:10) [6]


> При вызове такой форме, необходимо знать ID редактируемой
> позиции

[2]


 
Медвежонок Пятачок ©   (2010-05-27 14:16) [7]

Поэтому и возникла надобность при вызове формы редактирования обращаться к набору данных, дабы определить ID редактируемой записи

function TStartFrame.GetCurrentRecordID : integer;
begin
...
end;

вместо чудовищного

Edit1.Text:=StartFrame.ADOQuery1.FieldByName("XXX").AsString;


 
MBo ©   (2010-05-27 14:19) [8]

>И чем это ему поможет?
угу, не прочувствовал


 
dalex ©   (2010-05-27 14:24) [9]


> function TStartFrame.GetCurrentRecordID : integer;

Допустим, а ка вызвать эту функции из Формы?


 
Медвежонок Пятачок ©   (2010-05-27 14:27) [10]

потребуются : фарфровое блюдце, полумрак, и человека четыре со стульями.


 
Медвежонок Пятачок ©   (2010-05-27 14:30) [11]

затем все четверо кладут пальцы на блюдце (должно лежать вверх донышком!!!) и загробным тоном и хором начинают говорить:

"вызывваем метод-функцию геткаррентрекордайди у фрейма стартфрейм"

блюдце заврящается и стрелка на нем (нанести фломастером перед вызовом) укажет на возвращаемый результат


 
Плохиш ©   (2010-05-27 14:31) [12]

Форма TForm2 ничего ни о каких-то фреймах знать не должна, ибо она является самодостаточной формой-диалогом.


 
Игорь Шевченко ©   (2010-05-27 14:35) [13]

Вот он, налицо, вред объектно-ориентированного программирования. Или его в ликбезах как-то неправильно преподают, в отрыве от жизни.


> procedure TMainForm.UpdateFrame(Sender : TObject);
> begin
>    if Assigned(MainForm) and Assigned(CurrentFrame) then
> begin
>        CurrentFrame.Visible := False;
>        CurrentFrame.SetBounds(XXX,XXX,XXX,XXX);
>        CurrentFrame.Parent := MainForm;
>        CurrentFrame.Visible := True;
>        CurrentFrame.Repaint;
>    if Assigned(OldFrame) then begin FreeAndNil(OldFrame);
>  end;
>  end;
> end;


Что такое MainForm и CurrentFrame ?


 
dalex ©   (2010-05-27 14:55) [14]


> Что такое MainForm и CurrentFrame ?


var
 MainForm: TMainForm;
 OldFrame, CurrentFrame : TFrame;

MainForm - главная форма, на которой отображаются фреймы
CurrentFrame  - фрейм отображающийся на форме MainForm

 CurrentFrame := TStartFrame.Create(MainForm);


 
dalex ©   (2010-05-27 14:56) [15]


> затем все четверо кладут пальцы на блюдце (должно лежать
> вверх донышком!!!) и загробным тоном и хором начинают говорить:
>
>
> "вызывваем метод-функцию геткаррентрекордайди у фрейма стартфрейм"
>
> блюдце заврящается и стрелка на нем (нанести фломастером
> перед вызовом) укажет на возвращаемый результат


прикольно, а программным кодом это подтверждается?


 
Плохиш ©   (2010-05-27 15:09) [16]


>
> var
>  MainForm: TMainForm;
>  OldFrame, CurrentFrame : TFrame;
>

Дальше эта тема мне не интересна.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.098 c
15-1270569642
HRustBB
2010-04-06 20:00
2010.08.27
Не нарушу ли я авторские права компании Borland если...


15-1269466202
Юрий
2010-03-25 00:30
2010.08.27
С днем рождения ! 25 марта 2010 четверг


15-1269725402
Юрий
2010-03-28 00:30
2010.08.27
С днем рождения ! 28 марта 2010 воскресенье


2-1273091395
Dr.Andrew
2010-05-06 00:29
2010.08.27
Сохранение и загрузка динамического массива


2-1269455858
plazmaser
2010-03-24 21:37
2010.08.27
строки в ексель