![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Вопрос на засыпку.
Допустим имеем форму: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
Button1.Visible:=False;
end;
end.Код:
Unit1.Form1.Show; Теперь собственно вопрос: У меня несколько форм, вызовы метода Show я делаю примерно вот таким образом: Код:
for i:=0 to SomeFormCantainer.Count-1 do (SomeFormContainer[i] as TForm).Show; Кто нибудь знает как вызвать метод именно той формы которая хранится в контейнере? |
|
#2
|
||||
|
||||
|
Функцию виртуальную сделать и переопределять на потомке, а вызов из FormShow сделать на общем предке. Или не пойдет?
Последний раз редактировалось M.A.D.M.A.N., 22.04.2011 в 18:14. |
|
#3
|
||||
|
||||
|
Это вопрос-ловушка?
![]() |
|
#4
|
||||
|
||||
|
Нет никакой ловушки, достался код в наследство. Думаю как минимальными потерями сделать.
ЗЫЖ Виртуальная функция не канает, ибо переписывать много придется. |
|
#5
|
||||
|
||||
|
И никто, и нмчего? Идеи?
|
|
#6
|
|||
|
|||
|
Цитата:
Просто залезть в конкретный экземпляр и если есть нужный метод, то дернуть его. |
|
#7
|
||||
|
||||
|
может я не правильно понял, но тесатовый пример работает у меня как часы - FromShow формы2 срабатывает(D6, WinXP).
Вариант №1: Код:
procedure TForm1.Button1Click(Sender: TObject); var a: Pointer; begin a := form2; TForm(a).Show; end; Вариант №2: Код:
procedure TForm1.Button1Click(Sender: TObject); var a: TObject; begin a := form2; (a as TForm).Show; end; |
|
#8
|
||||
|
||||
|
В моем случае это не прокатывало.
Но проблема была решена путем получения точки входа в FormShow, и если таковая имелась - выполнением метода. |
|
#9
|
||||
|
||||
|
|