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

Вниз

Как вытянуть некоторые значения с формы, которая вызвала данную?   Найти похожие ветки 

 
MakNik ©   (2004-01-15 09:14) [0]

Такой вопрос: есть форма, которая может вызываться из других форм. Подскажите, плз., как с этой формы вытянуть заголовок и некоторые значения (например значение GroupBox1.Caption) с той формы, которая ее вызывает?


 
ЮЮ ©   (2004-01-15 09:20) [1]

Делай наоборот и это будет правильно:
В твоей форме вовсе не надо знать GroupBox1.Caption другой формы (а вдруг эта информация находится в GroupBox2?), тебе, по существу, нужна какая-то строка. Объяви в форме public property SomeStringProperty: string и перед вызовом вормы заполняй его в том месте любой другой формы, откуда ты её хочешь показать, а внутри пользуйся заполненным значением этого свойства


 
Anatoly Podgoretsky ©   (2004-01-15 09:41) [2]

:=


 
TUser ©   (2004-01-15 10:20) [3]

implementation
uses unit1; // unit1 содержит форму, которая вызвала данную
...
s:=form1.groupbox1.caption;


 
alex_*** ©   (2004-01-15 10:27) [4]

А если формы не AutoCreate и при создании TForm1 не использовалась глоб. переменная Form1? Вручную надо передавать


 
Плохиш_   (2004-01-15 10:30) [5]

>TUser © (15.01.04 10:20) [3]
Сам тоже так пишешь?
К тому же в оригинале речь идёт о многих формах.

А на вопрос ЮЮ уже ответил


 
MakNik ©   (2004-01-15 10:52) [6]

Это все правильно... но от этой формы (которую нужно вызывать с других форм), унаследованы рабочие формы... и хотелось бы там уже не задумываться об этих деталях, а просто вызывать форму, а все присвоения реализовать на родителе... так появляется возможность единообразно вносить изменения во все формы...


 
Sandman25 ©   (2004-01-15 11:14) [7]

Вместо обращения к компонентам формы рекомендую сделать метод GetMyValue: string. Тогда если потом захотите заменить ComboBox на какой-нибудь ListBox, не придется изменять код в 15 местах. Инкапсуляция, понимаешь :)


 
MakNik ©   (2004-01-15 11:55) [8]


> Sandman25 © (15.01.04 11:14) [7]

... я это и хочу сделать... но GetMyValue нужно сделать на родителе формы, котораю я вызываю... а как с неё узнать значение GroupBox1.Caption (или любое другое) на форме, с которой она была вызвана???


 
Sandman25 ©   (2004-01-15 12:07) [9]

[8] MakNik © (15.01.04 11:55)

procedure TForm1.Button1Click(Sender: TObject)
begin
if Form2.ShowModal = mrOK then
ShowMessage(Form2.GetMyValue);
end;
....
function TForm2.GetMyValue: string;
begin
Result := CombobBox.Text;
end;


 
MakNik ©   (2004-01-15 12:36) [10]


> Sandman25 © (15.01.04 12:07) [9]

Это понятно, но нужно все наоборот!!!
...типа этого:

function TForm2.GetMyValue: string;
begin
Result := Form1.CombobBox.Text;
end;

... только не Form1, а чтото другое... (т.к. я не знаю заранее с какой формы он будет вызван)


 
Sandman25 ©   (2004-01-15 12:43) [11]

Если нужно все наоборот, то нужно заводить параметр метода, а не обращаться неизвестно куда. Тогда из Form1 можно будет вызвать Form2.MyMethod(Combobox1.Text), то есть ComboBox1 лежит на Form1.


 
Reindeer Moss Eater ©   (2004-01-15 12:43) [12]

В модуле вызываемой формы пишется функция (не внутри класса формы)

type
PMyRecord = ^TMyRecord;
TMyRecord = record
...
end;

function ShowMyForm(ARec : PMyRecord):boolean;
begin
with TMyForm.Create(Application) do
try
//Здесь доступны все контролы вызванной формы и все параметры, нужные ей
Result:=(ShowModal = mrOk);
finally
Free;
end;
end;

Теперь из любого места приложения можно показать форму, заполнив MyRec и передав указатель на нее функции ShowMyForm


 
Sandman25 ©   (2004-01-15 12:45) [13]

[12] Reindeer Moss Eater © (15.01.04 12:43)

Кстати, а почему бы просто не описать параметр как var Rec:TMyRecord? Все равно ведь всегда будет создаваться запись в вызывающем блоке.


 
Reindeer Moss Eater ©   (2004-01-15 12:49) [14]

Это уже дело вкуса. Конечно можно.



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
7-83284
Alexious
2003-11-10 14:03
2004.01.26
Приложения


1-83200
Zamik
2004-01-14 10:08
2004.01.26
Преобразование в DOS


1-83188
User
2004-01-13 15:16
2004.01.26
Последняя строка файла


9-83087
NikotiN
2003-07-11 15:33
2004.01.26
Как в TBitmap загрузить изображение из TMemoryStream?


3-83119
Mox Fulder
2003-12-27 14:51
2004.01.26
Найти и далее...