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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2010, 20:05   #1
sprofxx
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 11
По умолчанию создание TSplitter на форме в dll, Control has no parent window

Есть dll в которой описана форма и некоторые процедурки и функции:

Код:
type
  TfrmPlayersL = class(TForm)
    Panel1: TPanel;type
    Panel2: TPanel;
    CheckBox1:TCheckBox;
    Splitter1: TSplitter;
    SGPlayers: TStringGrid;
    SGHands: T
    Panel2: TPanel;
    CheckBox1:TCheckBox;
    Splitter1: TSplitter;
    SGPlayers: TStringGrid;
    SGHands: TStringGrid;
    GroupBox1: TGroupBox;
    ESearch: TEdit;
    BSearch: TButton;
    BHands: TButton;
    BPlayers: TButton;
    procedure BSearchClick(Sender: TObject);
    procedure BPlayersClick(Sender: TObject);
    procedure BHandsClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmX: TfrmPlayersL;

...
============
в основной программе создаю вкладку TTabSheet.Create(MainForm.PageContr ol1.Handle) и передаю ее в dll для того чтобы на ней создать форму :

Код:
 frmX:=TfrmPlayersL.Create(IAOwner);
  frmX.Parent:=TTabSheet(IAOwner);
  frmX.Name:='asdasd';

  with frmX.SGPlayers.CreateParented(frmX.Panel1.Handle) do begin
    Parent:=frmX.Panel1;
    Align:=alBottom;
    RowCount:=0;
    ColCount:=0;
    Options := [goColSizing, goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRowSelect];
  end;

  with frmX.SGHands.CreateParented(frmX.Panel2.Handle) do begin
    Parent:=frmX.Panel2;
    Align:=alClient;
    RowCount:=0;
    ColCount:=0;
  end;
========================
IAOwner = MainForm.PageControl1.pages[MainForm.PageControl1.PageCount-1]

все создаеца но когда в программе кликаю по сплиттеру то получаю
Control Splitter1 has no parent window...

как обойти?

Последний раз редактировалось sprofxx; 29.07.2010 в 20:10.
sprofxx вне форума Ответить с цитированием
Старый 29.07.2010, 21:58   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Так ведь Сплиттеру тоже надо Parent присвоить:

Код:
  with frmX.Splitter1.CreateParented(frmX.Panel1.Handle) do begin
    Parent:=frmX.Panel1;
    ...//всё остальное прописывай
  end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 30.07.2010, 15:45   #3
sprofxx
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 11
Плохо

Да, забыл написать что сплиттер должен располагаца (он это и делает )) на самой форме, создаваемой в длл и рулит панелями, поэтому:
Код:
Parent:=frmX;
но при:
Код:
with frmX.Splitter1.Create(frmX) do begin 
    Parent:=frmX;
end;
выдает ту же ошибку при нажатии по нему, а функции CreateParented у сплиттера нету...
что делать?

друзья, так как же правильно создавать сплиттер?

Последний раз редактировалось Stilet; 16.08.2010 в 08:57.
sprofxx вне форума Ответить с цитированием
Старый 02.08.2010, 11:03   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Use ParentWindow with windowed controls that are packaged in a DLL. This allows references to the control by applications based on other applications.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.08.2010, 23:41   #5
sprofxx
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 11
По умолчанию

ParentWindow у сплиттера нет, не пойму никак что нужно сделать чтобы убрать эту ошибку

тема уехала, но я все еще жду ответ

таки никто не знает как назначить родителя правильно сплитеру?

Последний раз редактировалось Stilet; 16.08.2010 в 09:02.
sprofxx вне форума Ответить с цитированием
Старый 14.08.2010, 17:52   #6
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Splitter1.Parent := Form1;
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 15.08.2010, 13:13   #7
sprofxx
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Splitter1.Parent := Form1;
очень смешно
ответа не существует во всем инете и тут несколько недель уже, проект стоит...
sprofxx вне форума Ответить с цитированием
Старый 15.08.2010, 15:09   #8
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Как ты сплиттер создаёшь?
r9m вне форума Ответить с цитированием
Старый 21.08.2010, 21:59   #9
sprofxx
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 11
По умолчанию

Код:
 frmX:=TfrmPlayersL.Create(IAOwner)
создаю форму, в ней описан и сплиттер, но если создавать отдельно сплиттер

Код:
with frmX.Splitter1.Create(frmX) do begin 
    Parent:=frmX;
end;
то результат тот же, я же разжевал все выше итак...
sprofxx вне форума Ответить с цитированием
Старый 04.09.2010, 13:37   #10
sprofxx
Пользователь
 
Регистрация: 02.04.2010
Сообщений: 11
По умолчанию

по прежнему жду ответ
sprofxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
parent:: stenl1 PHP 16 26.05.2010 12:29
Програмное создание обьектов на форме Danilka Общие вопросы Delphi 7 13.04.2010 21:28
Создание табличной части в форме ДавидКац Microsoft Office Access 1 02.12.2008 21:32
Parent... prizrak1390 Общие вопросы Delphi 6 29.03.2008 00:02