Вызываю форму.
Procedure LibraryEntry (command: WORD); pascal;
Var
I:Integer;
begin
ListFm:=TListFm.Create(nil);
ListFm.OpenLib;
ListFm.Show;//ShowModal использовать не нужно так как нужно чтобы при открытой форме был доступен компас
end;
Как сделать так чтобы при закрытии формы ListFm она уничтожалась
Во первых, если вы закрываете форму по нажатию какой-либо кнопки, можно в обработчике щелчка на этой кнопке вызвать
ListFm.Free;
В противном случае (так, наверное, и лучше будет) в событии закрытии формы переменной типа TCloseAction присвоить значение caFree:
procedure TListFm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Спасибо большое :)
При вызывании формы т.о.:
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 нормально создвался
почему у меня форма не открывается при вызове функции 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.
ведь сделал как в первом посте, почти... как мне сделать, чтобы именно в функции открывалась форма, вводил данные, потом записывался файл? просто как мне открыть форму?
почему вылетает на строчке DocInfo.ShowModal;?????