Показать сообщение отдельно
  #35  
Старый 22.01.2013, 06:22
harbor harbor вне форума
Новичок
 
Регистрация: 15.01.2010
Сообщения: 83
Репутация: 10
По умолчанию

не создается форма в потоке, может я чтото не так делаю или так вобще нельзя делать? читал что форму в потоке можно только средствами winapi сделать , но для меня это пока что туман.

вот кусок кода моей длл с созданием формы, в обычном режиме форма создается нормально, а пытаюсь засунуть в поток - и форма не появляется.
из основного приложения по кнопке вызывается функция Start(она экспортирована)
Код:
unit DLL;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons,
  ExtCtrls,ShareMem;

type

  TMyThread = class(TThread)
   private
     { Private declarations }
   protected
     procedure FormShow;
     procedure FreeForm;
     procedure Execute; override;
   end;

    TForm1 = class(TForm)
    ButtonB: TButton;
    ButtonS: TButton;
    ComboBox1: TComboBox;
    ButtonCS: TButton;
    ButtonCB: TButton;
    RadioGroup1: TRadioGroup;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure RadioGroup1Click(Sender: TObject);
    procedure ButtonCBClick(Sender: TObject);
    procedure ButtonBClick(Sender: TObject);
    procedure ButtonSClick(Sender: TObject);
    procedure ButtonCSClick(Sender: TObject);


  private
    { Private declarations }
 CallForm: THandle;

  public
  { Public declarations }


  end;


  procedure Start;


 var
  Form1: TForm1;
  T1: TMyThread;

implementation


procedure TMyThread.Execute;
 begin
  //   while not Terminated do
     Synchronize(FormShow);
 end;



 
procedure Start;
begin
   T1:=TMyThread.Create(false);
   //TMyThread.FormShow;
end;


procedure TMyThread.FormShow;
begin

// with TForm1.Create(Application) do ShowModal;
 Form1:=TForm1.Create(nil);
 Form1.ShowModal;
 
end;
Ответить с цитированием