Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: -0.994 c
1-83138
Goida
2004-01-15 13:24
2004.01.26
Закрытие формы из OnShow


9-83086
Ace Cooper
2003-07-10 19:04
2004.01.26
DrawAlpha под DelphiX


3-83095
Orxan
2003-12-29 17:04
2004.01.26
Ищу DBGrid, в котором:


8-83218
scorpi
2003-09-22 12:04
2004.01.26
Моргания в Delphi(Image, PaintBox)


11-83128
Ajax
2003-05-08 17:39
2004.01.26
Font combobox and color combobox for KOL




   Наверх