Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.077 c
15-1267771411
oxffff
2010-03-05 09:43
2010.08.27
Буду в Москве с 22.03 по 26.03. Был бы рад встрече.


15-1266095159
Peace of cake
2010-02-14 00:05
2010.08.27
Как работает функция Ord?


15-1265367565
unmazable
2010-02-05 13:59
2010.08.27
Создание интерпритатора(компилятора)


2-1275776869
akosh12345
2010-06-06 02:27
2010.08.27
Динамическая память


15-1268326974
Правильный$Вася
2010-03-11 20:02
2010.08.27
D2010 обрела уже стабильность?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский