home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 October / Chip_2002-10_cd1.bin / zkuste / delphi / kolekce / d56 / FLEXCEL.ZIP / Demo / UFlDemoEdit.pas < prev    next >
Pascal/Delphi Source File  |  2002-06-15  |  3KB  |  129 lines

  1. unit UFlDemoEdit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, UFlDemoData,
  7.   Grids, ComCtrls, ToolWin, UWaitCursor;
  8.  
  9. type
  10.   TDemoEdit = class(TForm)
  11.     ToolBar: TToolBar;
  12.     BtnClose: TToolButton;
  13.     BtnSave: TToolButton;
  14.     TabControl: TTabControl;
  15.     Data: TStringGrid;
  16.     procedure BtnCloseClick(Sender: TObject);
  17.     procedure BtnSaveClick(Sender: TObject);
  18.     procedure DataDrawCell(Sender: TObject; ACol, ARow: Integer;
  19.       Rect: TRect; State: TGridDrawState);
  20.     procedure DataSelectCell(Sender: TObject; ACol, ARow: Integer;
  21.       var CanSelect: Boolean);
  22.     procedure TabControlChange(Sender: TObject);
  23.   private
  24.     procedure GridToXls;
  25.     procedure XlsToGrid;
  26.     { Private declarations }
  27.   public
  28.     procedure FillData;
  29.     { Public declarations }
  30.   end;
  31.  
  32. implementation
  33.  
  34. {$R *.DFM}
  35.  
  36. { TDemoEdit }
  37.  
  38. procedure TDemoEdit.FillData;
  39. var
  40.   p: integer;
  41. begin
  42.   TabControl.Tabs.Clear;
  43.  
  44.   for p:=1 to DemoData.FlexCelImport.SheetCount do
  45.   begin
  46.     DemoData.FlexCelImport.ActiveSheet:=p;
  47.     TabControl.Tabs.Add(DemoData.FlexCelImport.ActiveSheetName);
  48.   end;
  49.  
  50.   DemoData.FlexCelImport.ActiveSheet:=1;
  51.   TabControl.TabIndex:=DemoData.FlexCelImport.ActiveSheet-1;
  52.   XlsToGrid;
  53. end;
  54.  
  55. procedure TDemoEdit.BtnCloseClick(Sender: TObject);
  56. begin
  57.   Close;
  58. end;
  59.  
  60. procedure TDemoEdit.GridToXls;
  61. var
  62.   i,k: integer;
  63.   e: extended;
  64.   WaitCursor: IWaitCursor;
  65. begin
  66.   WaitCursor:=TWaitCursor.Create;
  67.   for i:=1 to Data.ColCount-1 do
  68.     for k:=1 to Data.RowCount-1 do
  69.     begin
  70.       //try to convert to number
  71.       if TextToFloat(PChar(Data.Cells[ i , k]), e, fvExtended) then  //Dont use val because it doesnt handle locales
  72.         DemoData.FlexCelImport.CellValue[k,i]:=e else
  73.         DemoData.FlexCelImport.CellValue[k,i]:=Data.Cells[ i , k];
  74.     end;
  75. end;
  76.  
  77. procedure TDemoEdit.XlsToGrid;
  78. var
  79.   i,k: integer;
  80.   WaitCursor: IWaitCursor;
  81. begin
  82.   WaitCursor:=TWaitCursor.Create;
  83.   Data.RowCount:=DemoData.FlexCelImport.MaxRow+2;
  84.   for i:=1 to Data.ColCount-1 do Data.Cells[ i , 0]:= chr(ord('A')+i-1);
  85.   for i:=1 to Data.RowCount-1 do Data.Cells[ 0 , i]:= IntToStr(i);
  86.   for i:=1 to Data.ColCount-1 do
  87.     for k:=1 to Data.RowCount-1 do
  88.       Data.Cells[ i , k]:= DemoData.FlexCelImport.CellValue[k,i];
  89.  
  90. end;
  91.  
  92. procedure TDemoEdit.BtnSaveClick(Sender: TObject);
  93. begin
  94.   if not DemoData.XlsSaveDialog.Execute then exit;
  95.   if FileExists(DemoData.XlsSaveDialog.FileName) then DeleteFile(DemoData.XlsSaveDialog.FileName);
  96.  
  97.   GridToXLS;
  98.   DemoData.FlexCelImport.Save(DemoData.XlsSaveDialog.FileName);
  99. end;
  100.  
  101. procedure TDemoEdit.DataDrawCell(Sender: TObject; ACol, ARow: Integer;
  102.   Rect: TRect; State: TGridDrawState);
  103. begin
  104.   if DemoData.FlexCelImport.IsLoaded and (aRow>0) and (DemoData.FlexCelImport.IsEmptyRow(aRow)) and (aCol>0) then
  105.     with Sender as TStringGrid do
  106.     begin
  107.       Canvas.Brush.Color := clGray;
  108.       Canvas.FillRect(Rect);
  109.         Canvas.DrawFocusRect(Rect);
  110.     end;
  111.  
  112. end;
  113.  
  114. procedure TDemoEdit.DataSelectCell(Sender: TObject; ACol, ARow: Integer;
  115.   var CanSelect: Boolean);
  116. begin
  117.   CanSelect:=
  118.     DemoData.FlexCelImport.IsLoaded and (not DemoData.FlexCelImport.IsEmptyRow(aRow));
  119. end;
  120.  
  121. procedure TDemoEdit.TabControlChange(Sender: TObject);
  122. begin
  123.   GridToXLS;
  124.   DemoData.FlexCelImport.ActiveSheet:= TabControl.TabIndex+1;
  125.   XLSToGrid;
  126. end;
  127.  
  128. end.
  129.