
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@509 8e941d3f-bd1b-0410-a28a-d453659cc2b4
156 lines
4.7 KiB
ObjectPascal
156 lines
4.7 KiB
ObjectPascal
unit Unit1;
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFNDEF LCL} Windows, Messages, {$ELSE} LclIntf, LMessages, LclType, LResources, {$ENDIF}
|
|
SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
|
|
ovcbase, ovctcbmp, ovctccbx, ovctcgly, ovctcbox, ovctcedt,
|
|
ovctchdr, ovctcmmn, ovctcell, ovctcstr, ovctable;
|
|
|
|
const
|
|
MaxDataRecs = 20;
|
|
MaxStrLen = 100;
|
|
MaxMemoLen = 1000;
|
|
cnStr = 1; {Column numbers for controls}
|
|
cnMemo = 2;
|
|
cnCheckbox = 3;
|
|
cnCombo = 4;
|
|
cnBitmap = 5;
|
|
|
|
type
|
|
TDataRec = record
|
|
Str : string[MaxStrLen];
|
|
Memo : array[0..MaxMemoLen] of Char;
|
|
Check : TCheckBoxState;
|
|
ComboIndex : Integer;
|
|
Bitmap : TBitmap;
|
|
end;
|
|
|
|
TDataArray = array[1..MaxDataRecs] of TDataRec;
|
|
|
|
TForm1 = class(TForm)
|
|
OvcTable1: TOvcTable;
|
|
OvcController1: TOvcController;
|
|
OvcTCColHead1: TOvcTCColHead;
|
|
OvcTCRowHead1: TOvcTCRowHead;
|
|
OvcTCString1: TOvcTCString;
|
|
OvcTCMemo1: TOvcTCMemo;
|
|
OvcTCCheckBox1: TOvcTCCheckBox;
|
|
OvcTCComboBox1: TOvcTCComboBox;
|
|
OvcTCBitMap1: TOvcTCBitMap;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure OvcTable1GetCellData(Sender: TObject; RowNum,
|
|
ColNum: Integer; var Data: Pointer; Purpose: TOvcCellDataPurpose);
|
|
procedure OvcTCComboBox1Change(Sender: TObject);
|
|
private
|
|
BmpPath : string; {Path to Orpheus .bmp files}
|
|
DataArray : TDataArray; {A place to store data entered in table}
|
|
public
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
|
|
implementation
|
|
|
|
{$IFNDEF LCL}
|
|
{$R *.dfm} {Link Delphi form file}
|
|
{$ENDIF}
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
{Initialize the main form.
|
|
Do anything that needs to be done before the form
|
|
can be displayed.}
|
|
var
|
|
SearchResult : Integer;
|
|
SearchRec : TSearchRec;
|
|
begin
|
|
OvcTable1.RowLimit := MaxDataRecs + OvcTable1.LockedRows;
|
|
|
|
OvcTCString1.MaxLength := MaxStrLen; {Be sure to set this here or in form}
|
|
OvcTCMemo1.MaxLength := MaxMemoLen;
|
|
|
|
{Populate cell combo box with names of Orpheus control bitmap files.
|
|
Assumes bitmap files are two levels up from program with Windows and GTK
|
|
or five levels up with OS X app bundle folder.}
|
|
BmpPath := ExtractFilePath(ParamStr(0)) + '..' + PathDelim + '..' + PathDelim;
|
|
if FindFirst(BmpPath + 'TO*.bmp', 0, SearchRec) <> 0 then
|
|
begin
|
|
BmpPath := '..' + PathDelim + '..' + PathDelim;
|
|
if FindFirst(BmpPath + 'TO*.bmp', 0, SearchRec) <> 0 then
|
|
BmpPath := ExtractFilePath(ParamStr(0)) + '..' + PathDelim + '..' +
|
|
PathDelim + '..' + PathDelim + '..' + PathDelim + '..' + PathDelim;
|
|
end;
|
|
OvcTCComboBox1.Items.Add(' (None)'); {So we can "unselect"}
|
|
try
|
|
SearchResult := FindFirst(BmpPath + 'TO*.bmp', 0, SearchRec);
|
|
while SearchResult = 0 do {Do until no more matching files found}
|
|
begin
|
|
OvcTCComboBox1.Items.Add(SearchRec.Name);
|
|
SearchResult := FindNext(SearchRec);
|
|
end;
|
|
finally
|
|
FindClose(SearchRec);
|
|
end;
|
|
end; {TForm1.FormCreate}
|
|
|
|
|
|
procedure TForm1.FormDestroy(Sender: TObject);
|
|
var
|
|
RecNum : Integer;
|
|
begin
|
|
for RecNum := 1 to MaxDataRecs do {Free any TBitmap's created}
|
|
DataArray[RecNum].Bitmap.Free;
|
|
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;
|
|
cnMemo : Data := @DataArray[RowNum].Memo;
|
|
cnCheckbox : Data := @DataArray[RowNum].Check;
|
|
cnCombo : Data := @DataArray[RowNum].ComboIndex;
|
|
cnBitmap : Data := pointer(DataArray[RowNum].Bitmap);
|
|
end;
|
|
end; {TForm1.OvcTable1GetCellData}
|
|
|
|
|
|
procedure TForm1.OvcTCComboBox1Change(Sender: TObject);
|
|
{This event handler is called whenever combo box selection
|
|
changes.
|
|
Note: TOvcTCComboBox is not descended from TCustomComboBox, but
|
|
its editing control (Sender) is, so okay to typecast it in order
|
|
to reference ItemIndex.}
|
|
begin
|
|
DataArray[OvcTable1.ActiveRow].Bitmap.Free;
|
|
DataArray[OvcTable1.ActiveRow].Bitmap := nil;
|
|
if TCustomComboBox(Sender).ItemIndex > 0 then {Bitmap file selected?}
|
|
begin
|
|
DataArray[OvcTable1.ActiveRow].Bitmap := TBitmap.Create;
|
|
DataArray[OvcTable1.ActiveRow].Bitmap.LoadFromFile(
|
|
BmpPath + OvcTCComboBox1.Items[TCustomComboBox(Sender).ItemIndex]);
|
|
end;
|
|
OvcTable1.AllowRedraw := False;
|
|
OvcTable1.InvalidateCell(OvcTable1.ActiveRow, cnBitmap); {Force display of bitmap}
|
|
OvcTable1.AllowRedraw := True;
|
|
end; {TForm1.OvcTCComboBox1Change}
|
|
|
|
|
|
initialization
|
|
{$IFDEF LCL}
|
|
{$I unit1.lrs} {Include form's Lazarus resource file}
|
|
{$ENDIF}
|
|
|
|
end.
|