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

Вниз

form3.showmodal   Найти похожие ветки 

 
denis24   (2004-10-13 10:19) [0]

Вызывается сабж кнопкой с form1 или кнопой с form2.
Как оперделить в самой form3 кто ее вызвал?


 
ЮЮ ©   (2004-10-13 10:22) [1]

form3 этого и знать не должна! Всю подготовку form3 и анализ введенных данных делай в тех местах, где вызываешь form3.showmodal, IMHO


 
Алхимик ©   (2004-10-13 10:23) [2]

В свойство Form3.Tag пиши номер вызвавшей формы.


 
denis24   (2004-10-13 10:24) [3]

А если надо чтоб кнопка на form3 выполняла различные операции в зависимости от того с какой формы она вызвана?


 
Ega23 ©   (2004-10-13 10:25) [4]


TForm3=class(TForm)
.....
private
FSenderName:String;
public
property SenderName:String Read FSenderName write FSenderName;
end;

procedure TForm1.Button1Click(Sender:TObject);
begin
Form3.SenderName:=Self.Name;
Form3.Show;
end;

procedure TForm2.Button1Click(Sender:TObject);
begin
Form3.SenderName:=Self.Name;
Form3.Show;
end;


Можно гораздо изощерённее


 
Гаврила ©   (2004-10-13 10:25) [5]

Form3:=TForm3.Create(self);
try
 Form3.ShowModal;
....
finally
 Form3.Free;
end;

Если создание и вызов идет так, то свойство Owner формы 3 как раз и будет равно показавшей ее форме


 
Pentium133 ©   (2004-10-13 10:27) [6]

если ты вызываешь форму так:

Form3:= TForm3.Create(Self);
Form3.ShowModal;


тогда Form3.Owner - как раз указывает на форму которая вызвала ее.


 
ЮЮ ©   (2004-10-13 10:28) [7]

кнопка на form3 должна только закрыть form3 а дальше анализируй ModalResult.
P/S. На хужой конец,
 Form3.Button.OnClick := Form3ButtonClick;
где Form3ButtonClick - метод формы form1/form2


 
Pentium133 ©   (2004-10-13 10:31) [8]

Не запутывайте человека.
Самый правильный вариант [5] (даже лучше чем [6] :)


 
ЮЮ ©   (2004-10-13 10:34) [9]

>Pentium133 ©   (13.10.04 10:31) [8] Самый правильный вариант [5]

Угу, у него будет самый крутой uses :)


 
Reindeer Moss Eater ©   (2004-10-13 10:34) [10]

unit Unit1;

interface

...
type
TForm1 = class(TForm)
..
 private
   { Private declarations }
 public
   { Public declarations }
 end;

function DoOne : boolean;
function DoTwo : boolean;
function DoThree: boolean;

implementation

{$R *.DFM}

function DoOne : boolean;
begin
with TForm1.Create(nil) do
 try
  Caption:="Делаю одно";
  Init(1);
  Result := ShowModal = mrOk;
 finally
  Free;
 end;
end;

function DoTwo : boolean;
begin
with TForm1.Create(nil) do
 try
  Caption:="Делаю другое";
  Init(2);
  Result := ShowModal = mrOk;
 finally
  Free;
 end;
end;

function DoThree: boolean;
begin
with TForm1.Create(nil) do
 try
  Caption:="Делаю третье";
  Init(3);
  Result := ShowModal = mrOk;
 finally
  Free;
 end;
end;


 
Pentium133 ©   (2004-10-13 10:43) [11]


> Угу, у него будет самый крутой uses :)

А в чём проблема то?
Всегда так делаю. Ни каких левых заморочек не надо.


 
denis24   (2004-10-13 10:56) [12]

[5] form3 так и вызывать каждый раз?Тоесть создавать?
Она уничтожается сама при закрытии себя?


 
Pentium133 ©   (2004-10-13 11:01) [13]


> denis24   (13.10.04 10:56) [12]

Делай как [5]. Там же явно вызывается Free.
А насчет каждый раз создавать - так и нужно поступать.
В начале программы создается только главное оконо. Остальные по мере использования и уничтожаются после


 
denis24   (2004-10-13 11:05) [14]

спасибо!



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
3-1096467118
tchainik
2004-09-29 18:11
2004.10.31
Проблема UDF в Interbase 6.0


8-1088751372
Глеб
2004-07-02 10:56
2004.10.31
Как вставить Flash-мульт в проект Delphi?


14-1096217151
beginner707
2004-09-26 20:45
2004.10.31
TSplitter Neponyatka


4-1096020727
Чебуратор
2004-09-24 14:12
2004.10.31
Как програмно изменить переменную PATH для всех пользователей ?


3-1096888673
zorik
2004-10-04 15:17
2004.10.31
Визуальное отображение структуры базы Firebird