Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

закрытие fsMDIChild формы


Страницы:   1 2

gentos ©   (2007-08-16 15:31:00) 

ув. мастера создаю и вызываю ее следующим образом

TScanDocForm.Create(self).Show;

хочу закрыть ее при нажатиии на кнопку, пишу следующее :

procedure TScanDocForm.BtnEndClick(Sender: TObject);
begin
 ScanDocForm.Free;  -- ?
end;

выледает еррор апликатион, вообщем абракадабра типа аксес виолатион и т.д.


gentos   (2007-08-16 15:52:00) [21]


> Сергей М. ©   (16.08.07 15:49) [8]

вот наплодил , помоему норм код все работает не хватает всего лишь кнопочки !


gentos   (2007-08-16 15:51:00) [22]


unit PravadostupaScanDoc;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls, jpeg, ImgList, ComCtrls, ToolWin, PravadostupaImageForm, Oracle, PTreeview;

type
 TScanDocForm = class(TForm)
   PnlBtn: TPanel;
   btnSelectScan: TButton;
   btnGoScan: TButton;
   BtnNextDoc: TButton;
   BtnEnd: TButton;
   ScanImage: TImage;
   ToolBar1: TToolBar;
   tbView: TToolButton;
   ImageList1: TImageList;
   PnlScan: TPanel;
   PnlLeftSide: TPanel;
   SplitterLeft: TSplitter;
   PnlRightSide: TPanel;
   SplitterRight: TSplitter;
   btnSavePageOfDoc: TButton;
   PanelImage: TPanel;
   img: TImage;
   Delete_Temporary: TOracleQuery;
   Create_Temporary: TOracleQuery;
   ToolButton1: TToolButton;
   SvDlg: TSaveDialog;
   PnlTop: TPanel;
   SplitterTop: TSplitter;
   PnlBottom: TPanel;
   SplitterBottom: TSplitter;
   tmr: TTimer;
   procedure btnSelectScanClick(Sender: TObject);
   procedure btnGoScanClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure BtnShowClick(Sender: TObject);
   procedure tbViewClick(Sender: TObject);
   procedure BtnNextDocClick(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure btnSavePageOfDocClick(Sender: TObject);
   procedure FormShow(Sender: TObject);
   procedure BtnEndClick(Sender: TObject);
   procedure ToolButton1Click(Sender: TObject);
   procedure tmrTimer(Sender: TObject);
 private
   { Private declarations }
   procedure LobCreateTemporary(var LOB: TLobLocator);
   procedure LobFreeTemporary(var LOB: TLobLocator);
   procedure BtnEnabled(bool1:boolean; bool2:boolean; bool3:boolean; bool4:boolean; bool5:boolean);
 public
   { Public declarations }
   PTreeview: TPTreeview;
   procedure MyMsg(var Msg: TMsg; var Handled: Boolean);
   procedure GetIdDocumentBody(id : integer);

 end;

var
 ScanDocForm: TScanDocForm;
 frm : TfrmImage;
 idDocumentBody : integer;
 lvlDocumentBody : integer;

implementation

uses PravadostupaLoadfiles, pravadostupaDM, Scanners, Twain  ;

{$R *.dfm}

procedure TScanDocForm.LobCreateTemporary(var LOB: TLobLocator);
begin
    LOB := TLOBLocator.Create(DM.DB,otBLOB);
    Create_Temporary.SetComplexVariable('VARBLOB', LOB);
    Create_Temporary.Execute;
end;

procedure TScanDocForm.LobFreeTemporary(var LOB: TLobLocator);
begin
 Delete_Temporary.SetComplexVariable('VARBLOB', LOB);
 Delete_Temporary.Execute;
end;

procedure TScanDocForm.btnSelectScanClick(Sender: TObject);
begin
  TWSelectDS;
  BtnEnabled(false,true,false,false,false);
end;

procedure TScanDocForm.MyMsg(var Msg: TMsg; var Handled: Boolean);
begin
 Handled := ProcessSourceMessage(Msg);
end;

procedure TScanDocForm.btnGoScanClick(Sender: TObject);
begin
  TWAcquire(Application.Handle, ScanImage.Picture.Bitmap, True);
  BtnEnabled(false,false,false,false,false);
end;

procedure TScanDocForm.FormCreate(Sender: TObject);
begin
  Application.OnMessage := MyMsg;
  TWOpenDSM(Application.Handle);
  lvlDocumentBody := 0;
end;

procedure TScanDocForm.FormDestroy(Sender: TObject);
begin
  if TWIsDSEnabled then
    TWDisableDS;
  if TWIsDSOpen then
    TWCloseDS;
  if TWIsDSMOpen then
    TWCloseDSM;
end;

procedure TScanDocForm.BtnShowClick(Sender: TObject);
var
  Bit : TBitmap;
  MStream: TMemoryStream;
begin
    MStream:=TMemoryStream.Create;
    Bit := TBitmap.Create;
    ScanImage.Picture.Bitmap.SaveToStream(MStream);
    MStream.Position:=0;
    Bit.LoadFromStream(MStream);
    img.Picture.Assign(Bit);
    MStream.Free;
    Bit.Free;
end;

procedure TScanDocForm.tbViewClick(Sender: TObject);
var
  MStream: TMemoryStream;
begin
    frm := TfrmImage.Create(Self);
    MStream:=TMemoryStream.Create;
    ScanImage.Picture.Bitmap.SaveToStream(MStream);
    MStream.Position:=0;
    frm.drawstream(MStream);
    MStream.Free;
    frm.ShowModal;
end;

procedure TScanDocForm.BtnNextDocClick(Sender: TObject);
begin
BtnEnabled(false,false,true,true,true);
ScanImage.Picture.Bitmap := nil;
img.Picture.Bitmap := nil;
tmr.Interval := 4000;
TWAcquire(Application.Handle, ScanImage.Picture.Bitmap, True);
end;

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

procedure TScanDocForm.btnSavePageOfDocClick(Sender: TObject);
var
 LOB: TLobLocator;
 Mstream: TMemoryStream;
 lvl : integer;
 Jpg: TJPEGImage;
begin
    BtnEnabled(false,false,true,false,true);
    Inc(lvlDocumentBody);
    LobCreateTemporary(LOB);           // cr temp
    Jpg:=TJPEGImage.Create;
    Mstream:=TMemoryStream.Create;
    Jpg.Assign(ScanImage.Picture.Bitmap);
    jpg.SaveToStream(Mstream);
    Mstream.Position :=0;
    LOB.CopyFrom(Mstream,Mstream.Size);
    lvl := PTreeview.SelLvlFromWdsdocumentsbody;
    if lvlDocumentBody=1 then
    PTreeview.INSINTOWDSDocumentsBody(idDocumentBody,lvlDocumentBody,LOB)
    else
    PTreeview.INSINTOWDSDocumentsBody(idDocumentBody,lvl,LOB);
    LobFreeTemporary(LOB);
    Mstream.Free;
    jpg.Free;
end;

procedure TScanDocForm.GetIdDocumentBody(id : integer);
begin
   idDocumentBody := id;
end;

procedure TScanDocForm.FormShow(Sender: TObject);
begin
 BtnEnabled(true,false,false,false,true);
 PTreeview := TPTreeview.Create(Self);
 PTreeview.Session := DM.DB;
 PTreeview.Cursor := crSQLWait;
end;

procedure TScanDocForm.BtnEndClick(Sender: TObject);
begin
 PTreeview.Free;
 ScanDocForm.Close;
end;

procedure TScanDocForm.ToolButton1Click(Sender: TObject);
var
 Jpg: TJPEGImage;
begin
 if SvDlg.Execute then begin
    Jpg:=TJPEGImage.Create;
    Jpg.Assign(ScanImage.Picture.Bitmap);
    jpg.SaveToFile(SvDlg.FileName);
    jpg.Free;
 end;
end;
procedure TScanDocForm.tmrTimer(Sender: TObject);
var
Mstream: TMemoryStream;
Bit : TBitmap;
begin
  Mstream:=TMemoryStream.Create;
  ScanImage.Picture.Bitmap.SaveToStream(Mstream);
  if Mstream.Size > 100 then begin
     BtnEnabled(false,false,true,true,true);
     Bit := TBitmap.Create;
     MStream.Position:=0;
     Bit.LoadFromStream(MStream);
     img.Picture.Assign(Bit);
     MStream.Free;
     Bit.Free;
     tmr.Interval := 0;
  end else
  MStream.Free;
end;

procedure TScanDocForm.BtnEnabled(bool1:boolean; bool2:boolean; bool3:boolean; bool4:boolean; bool5:boolean);
begin
   btnSelectScan.Enabled := bool1;
   btnGoScan.Enabled := bool2;
   BtnNextDoc.Enabled := bool3;
   btnSavePageOfDoc.Enabled := bool4;
   BtnEnd.Enabled := bool5;
end;

end.


gentos   (2007-08-16 15:51:00) [23]

Удалено модератором


Сергей М.   (2007-08-16 15:49:00) [24]

Удалено модератором


gentos   (2007-08-16 15:47:00) [25]

Удалено модератором


Сергей М.   (2007-08-16 15:45:00) [26]

Удалено модератором


Сергей М.   (2007-08-16 15:44:00) [27]


> мне на кнопку надо


Ну надо так надо)

И ?

Что, в кнопкином обработчике написать строчку

Close;

вместо

Free;

выше твоего понимания ?)


gentos   (2007-08-16 15:43:00) [28]


ScanDocForm.Close;

тоже еррор !


gentos   (2007-08-16 15:41:00) [29]


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

тут все ок , но мне на кнопку надо !!!


Сергей М.   (2007-08-16 15:38:00) [30]


> хочу закрыть ее


Ну так и закрывай ее !

На то у формы есть соотв.метод Close (Закрыть)

Какого ж лешего ты для "закрытия" используешь метод Free("освободить") ?


gentos   (2007-08-16 15:32:00) [31]

да , забыл написать что должно быть между

procedure TScanDocForm.BtnEndClick(Sender: TObject);
begin
  ______________________
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо