Files
lazarus-ccr/components/orpheus/tests/TestTblEdits/unit1.pas

138 lines
3.6 KiB
ObjectPascal
Raw Normal View History

unit Unit1;
interface
uses
{$IFNDEF LCL} Windows, Messages, {$ELSE} LclIntf, LMessages, LclType, LResources, {$ENDIF}
SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
ovctcedt, ovctchdr, ovctcmmn, ovctable, ovcbase, ovctcsim, o32tcflx,
ovcdata, ovcsf, ovctcbef, ovctcell, ovctcstr;
const
MaxDataRecs = 20;
MaxStrLen = 100;
cnStr = 1; {Column numbers for controls}
cnSimp = 2;
cnFlex = 3;
type
TDataRec = record
Str : string[MaxStrLen];
Simp : string[MaxStrLen];
Flex : string;
end;
TDataArray = array[1..MaxDataRecs] of TDataRec;
TForm1 = class(TForm)
OvcTable1: TOvcTable;
OvcController1: TOvcController;
OvcTCColHead1: TOvcTCColHead;
OvcTCRowHead1: TOvcTCRowHead;
OvcTCString1: TOvcTCString;
OvcTCSimpleField1: TOvcTCSimpleField;
O32TCFlexEdit1: TO32TCFlexEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure OvcTable1GetCellData(Sender: TObject; RowNum,
ColNum: Integer; var Data: Pointer; Purpose: TOvcCellDataPurpose);
procedure OvcTCSimpleField1UserValidation(Sender: TObject;
var ErrorCode: Word);
procedure OvcTCSimpleField1Error(Sender: TObject; ErrorCode: Word;
ErrorMsg: String);
procedure O32TCFlexEdit1UserValidation(Sender: TObject; Value: String;
var ValidEntry: Boolean);
private
DataArray : TDataArray; {A place to store data entered in table}
public
end;
var
Form1: TForm1;
implementation
{$IFNDEF LCL}
{$R *.dfm} {Link Delphi form file}
{$ELSE}
{$R *.lfm}
{$ENDIF}
procedure TForm1.FormCreate(Sender: TObject);
{Initialize the main form.
Do anything that needs to be done before the form
can be displayed.}
var
RowNum : Integer;
begin
OvcTable1.RowLimit := MaxDataRecs + OvcTable1.LockedRows;
OvcTCString1.MaxLength := MaxStrLen; {Be sure to set this here or in form}
OvcTCSimpleField1.MaxLength := MaxStrLen;
O32TCFlexEdit1.MaxLength := MaxStrLen;
{$IFDEF FPC}
for RowNum := 1 to MaxDataRecs do
SetLength(DataArray[RowNum].Flex, MaxStrLen);
{$ENDIF}
end; {TForm1.FormCreate}
procedure TForm1.FormDestroy(Sender: TObject);
begin
end; {TForm1.FormDestroy}
procedure TForm1.OvcTable1GetCellData(Sender: TObject; RowNum,
ColNum: Integer; var Data: Pointer; Purpose: TOvcCellDataPurpose);
{This event handler is called when the table needs data to display
or edit in a cell or a place to save a cell's edited data.}
begin
Data := nil;
if (RowNum < OvcTable1.LockedRows) or (RowNum > OvcTable1.RowLimit) then
Exit;
case ColNum of
cnStr : Data := @DataArray[RowNum].Str;
cnSimp : Data := @DataArray[RowNum].Simp;
cnFlex : Data := PChar(DataArray[RowNum].Flex);
end;
end; {TForm1.OvcTable1GetCellData}
procedure TForm1.OvcTCSimpleField1UserValidation(Sender: TObject;
var ErrorCode: Word);
var
AnInt : Integer;
begin
ErrorCode := 0;
if (TOvcSimpleField(Sender).Text <> '') and
(not TryStrToInt(TOvcSimpleField(Sender).Text, AnInt)) then
ErrorCode := oeInvalidNumber;
end;
procedure TForm1.OvcTCSimpleField1Error(Sender: TObject; ErrorCode: Word;
ErrorMsg: String);
begin
MessageDlg(ErrorMsg + #13#10 + 'Enter an integer or press Ctrl+Z to undo.',
mtError, [mbOK], 0);
end;
procedure TForm1.O32TCFlexEdit1UserValidation(Sender: TObject;
Value: String; var ValidEntry: Boolean);
var
AnInt : Integer;
begin
ValidEntry := True;
if (Value <> '') and (not TryStrToInt(Value, AnInt)) then
begin
ValidEntry := False;
MessageDlg('Invalid value.' + #13#10 +
'Enter an integer or press Ctrl+Z to undo.', mtError, [mbOK], 0);
end;
end;
end.