Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2007, 19:28   #1
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию Ссылка на форму

Здравствуйте!
У меня такая проблема- я должен создать класс в котором будет форма на которой должен автоматически располагаться image. Собственно форма создается, но как получить ссылку на эту форму, чтобы на ней был image? Я делал вот так, но здесь гдето ошибка. Как мне ее исправить? Заранее Спасибо.
Код:
 
unit DopWindow3;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
 Forms,extctrls;
type trazmer=record
a,b,c,d,e,f,g:integer;
end;
type tdopwindow=class
procedure Iniciliazed(p:pointer);
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create;
destructor destroy;
published
{ Published declarations }
end;
var w:pointer;
implementation
constructor tdopwindow.Create;
begin
inherited;
end;
procedure tdopwindow.Iniciliazed(p:pointer);
var s:trazmer;
begin
s:=trazmer(p^);
With TForm.Create(nil) do
begin
parent:=nil;
name:='DopWindow'+inttostr(s.a);
w:=@(tcomponent(name));
left:=s.b;
top:=s.b;
width:=s.c;
height:=s.d;
show; visible:=true;
end;
with timage.Create(Tcomponent(w^)) do
begin
parent:=twincontrol(w^);
name:='image1';
left:=s.e;
top:=s.e;
width:=s.f;
height:=s.g;
visible:=true;
end;
end;
destructor tdopwindow.destroy;
begin
TForm(w^).Free;
inherited Destroy;
end;
end.
bill вне форума Ответить с цитированием
Старый 14.10.2007, 19:30   #2
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

так а что пишет какая ошибка - то
I like WPF
kommunist вне форума Ответить с цитированием
Старый 14.10.2007, 19:44   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Сделайте проще:
вот это
Цитата:
procedure tdopwindow.Iniciliazed(pointer);
var s:trazmer;
begin
s:=trazmer(p^);
With TForm.Create(nil) do
замените на
Код:
procedure tdopwindow.Iniciliazed(p:pointer);
var s:trazmer;
     dopf: TForm;
begin
s:=trazmer(p^);
dopf:=TForm.Create(nil);
With dopf do
и получите совершенно однозначный способ обращения ко вновь созданной форме.
mihali4 вне форума Ответить с цитированием
Старый 14.10.2007, 21:12   #4
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Сделайте проще:
вот это
замените на...
Спасибо, чета не догадался сначала .
Но все же,как можно решить задачу моим способом(как присвоить image ссылку на вновь создаваемую форму, при этом зная лишь ее класс(Tform) и новое имя ее,которое я присваиваю ей при создании-т.е если у меня нет никакой переменной dopf)?
bill вне форума Ответить с цитированием
Старый 14.10.2007, 21:15   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
зная лишь ее класс(Tform) и новое имя ее
Еще проще:
(Новое имя as Form)
Кстати, я именно это и подразумевал, когда сказал об однозначности...
mihali4 вне форума Ответить с цитированием
Старый 21.10.2007, 18:05   #6
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Еще проще:
(Новое имя as Form)
Кстати, я именно это и подразумевал, когда сказал об однозначности...
Может я все таки что то делаю не так
ТО бишь если я нaпишу так то получу ошибку- wointer; .. begin ... w:=@(name as tform);// хотя вообще-то для подобных вещей надо все приводить к одному типу - вот о чем говорю:
Код:
 
for i:=1 to n do
if (Components[i] is TRadioButton) then
(Components[i] as TRadioButton).Checked := true; ...
А тут смысла приводить к близкордственному классу нет, т.к ошибка в любом случае возникнет.

Последний раз редактировалось bill; 21.10.2007 в 18:10.
bill вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ссылка в паскале vitekbest Помощь студентам 3 13.06.2008 17:50
Ссылка из программы. Kukkk Общие вопросы Delphi 1 21.09.2007 22:57
Как изменить стандартную форму на форму любой сложности QwErEn Общие вопросы Delphi 9 08.06.2007 11:44
Ссылка в Label amid1804 Компоненты Delphi 3 20.05.2007 17:27