rtw-библиотека&форма

Автор AndreySt, 16.04.07, 06:58:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

AndreySt

Вызываю форму.
Procedure LibraryEntry (command: WORD); pascal;
Var
  I:Integer;
begin
  ListFm:=TListFm.Create(nil);
  ListFm.OpenLib;
  ListFm.Show;//ShowModal использовать не нужно так как нужно чтобы при открытой форме был доступен компас
end;
Как сделать так чтобы при закрытии формы ListFm она уничтожалась

IronMaxxx

Во первых, если вы закрываете форму по нажатию какой-либо кнопки, можно в обработчике щелчка на этой кнопке вызвать

ListFm.Free;

В противном случае (так, наверное, и лучше будет) в событии закрытии формы переменной типа TCloseAction присвоить значение caFree:

procedure TListFm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

AndreySt


AndreySt

При вызывании формы т.о.:
Procedure LibraryEntry (command: WORD); pascal;
begin
 ListFm:=TListFm.Create(nil);
 ListFm.OpenLib;
 ListFm.Show;//ShowModal использовать не нужно так как нужно чтобы при открытой форме был доступен компас
end;

<на форме>
function ListFm.CreateDoc(): boolean;
...
_iKompas := KompasObject(CreateKompasObject);
_iDoc := ksDocument2D(_iKompas.ActiveDocument2D);
//_iDoc получается = nil
....
end;
если же использую ListFm.ShowModa то _iDoc нормально создаётя Что нужно сделать что бы и при ListFm.Show
_iDoc нормально создвался

sorockinalex

почему у меня форма не открывается при вызове функции NewProject?????
unit NewProj;
interface
uses
  LDefin2D,
  ksAuto,
  KsTLB,
  Windows,
  Messages,
  SysUtils,
  Classes,
  Graphics,
  Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls;

type
  TDocInfo = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label6: TLabel;
    Edit6: TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
DocInfo: TDocInfo;
idocParams : ksDocumentParam;
iSheetParams : ksSheetPar;
iStdSheet : ksStandartSheet;

function NewProject (iKompas:KompasObject;iDoc:ksDocument2D):Reference;


implementation

function NewProject (iKompas:KompasObject;iDoc:ksDocument2D):Reference;
  begin
  iKompas.ksMessage('ok');
  DocInfo:=TDocInfo.Create(nil);
//  DocInfo.OpenLib;
  DocInfo.ShowModal;
  iKompas.ksMessage('ok');
    //Создание и заполнение структры параметров чертежа
    iDocParams := ksDocumentParam (iKompas.GetParamStruct (35));
    with iDocParams do
      begin
        Init;
        fileName := iKompas.ksSaveFile ('*.cdw','','',TRUE);
        if fileName = '' then Exit;
        author :='Сорокин А.В.';
        comment := 'Пример чертежа';
        iDocParams.regime :=0; //видимый режим
        //type_ := lt_DocSheetStandart; //Чертёж стандартного формата
      end;

    //Создание и заполнение структуры параметров листа, принадлежащей структуре pDocParams
    iSheetParams := ksSheetPar (iDocParams.GetLayoutParam);
    iSheetParams.Init;
    isheetparams.layoutName := ('C:\RTWExamples\Example1\GRAPHIC.lyt');
    iSheetParams.shtType := 1000; //Тип штампа

    //Создание и заполнение структуры параметров стандартного листа принадлежностей структуре pSheetParms
    iStdSheet := ksStandartSheet (iSheetParams.GetSheetParam);
    iStdSheet.format :=3; //Формат А4
    iStdSheet.multiply :=1; //Кратность формата
    iStdSheet.direct := TRUE; //Расположение основной надписи вдоль длинной стороны листа

    //Создание документа: лист чертежа, формат А3, горизонтально ориентирован, системный штамп номер 2
    iDoc :=ksDocument2D (iKompas.Document2D);
    if iDoc.ksCreateDocument (iDocParams)=true then
      begin
        iDoc.ksSaveDocument('');
      end
  end;
end.



ведь сделал как в первом посте, почти... как мне сделать, чтобы именно в функции открывалась форма, вводил данные, потом записывался файл? просто как мне открыть форму?

sorockinalex

почему вылетает на строчке DocInfo.ShowModal;?????