You've already forked lazarus-ccr
20070107 release of Orpheus - initial commit to SVN.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@44 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
342
components/orpheus/myovctbpe1.pas
Normal file
342
components/orpheus/myovctbpe1.pas
Normal file
@@ -0,0 +1,342 @@
|
||||
{*********************************************************}
|
||||
{* myovctbpe1.pas *}
|
||||
{*********************************************************}
|
||||
|
||||
{* ***** BEGIN LICENSE BLOCK ***** *}
|
||||
{* Version: MPL 1.1 *}
|
||||
{* *}
|
||||
{* The contents of this file are subject to the Mozilla Public License *}
|
||||
{* Version 1.1 (the "License"); you may not use this file except in *}
|
||||
{* compliance with the License. You may obtain a copy of the License at *}
|
||||
{* http://www.mozilla.org/MPL/ *}
|
||||
{* *}
|
||||
{* Software distributed under the License is distributed on an "AS IS" basis, *}
|
||||
{* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License *}
|
||||
{* for the specific language governing rights and limitations under the *}
|
||||
{* License. *}
|
||||
{* *}
|
||||
{* The Original Code is TurboPower Orpheus *}
|
||||
{* *}
|
||||
{* The Initial Developer of the Original Code is TurboPower Software *}
|
||||
{* *}
|
||||
{* Portions created by TurboPower Software Inc. are Copyright (C)1995-2002 *}
|
||||
{* TurboPower Software Inc. All Rights Reserved. *}
|
||||
{* *}
|
||||
{* Contributor(s): *}
|
||||
{* *}
|
||||
{* Phil Hess - adapted ovctbpe1.pas to eliminate TOvcSimpleField. *}
|
||||
{* *}
|
||||
{* ***** END LICENSE BLOCK ***** *}
|
||||
|
||||
{$I OVC.INC}
|
||||
|
||||
{$B-} {Complete Boolean Evaluation}
|
||||
{$I+} {Input/Output-Checking}
|
||||
{$P+} {Open Parameters}
|
||||
{$T-} {Typed @ Operator}
|
||||
{.W-} {Windows Stack Frame}
|
||||
{$X+} {Extended Syntax}
|
||||
|
||||
unit MyOvcTbPE1;
|
||||
{Lazarus-specific Rows property editor for the table component.}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFNDEF LCL} Windows, Messages, {$ELSE} LclIntf, LMessages, LclType, LResources, {$ENDIF}
|
||||
Classes, Graphics, Controls,
|
||||
{$IFNDEF LCL} {$IFDEF VERSION6} DesignIntf, DesignEditors, {$ELSE} DsgnIntf, {$ENDIF} {$ELSE} PropEdits, {$ENDIF}
|
||||
SysUtils, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls,
|
||||
OvcBase, OvcTCmmn, OvcTable, OvcTbRws, OvcSc;
|
||||
|
||||
type
|
||||
TOvcfrmRowEditor = class(TForm)
|
||||
ctlHidden: TCheckBox;
|
||||
ctlUseDefHeight: TRadioButton;
|
||||
ctlUseCustHeight: TRadioButton;
|
||||
DoneButton: TBitBtn;
|
||||
Panel1: TPanel;
|
||||
SpeedButton1: TSpeedButton;
|
||||
SpeedButton2: TSpeedButton;
|
||||
SpeedButton3: TSpeedButton;
|
||||
SpeedButton4: TSpeedButton;
|
||||
SpeedButton5: TSpeedButton;
|
||||
SpeedButton6: TSpeedButton;
|
||||
Label1: TLabel;
|
||||
GroupBox1: TGroupBox;
|
||||
GroupBox2: TGroupBox;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
Reset: TBitBtn;
|
||||
ctlHeight: TEdit;
|
||||
ctlDefaultHeight: TEdit;
|
||||
ctlRowLimit: TEdit;
|
||||
ctlRowNumber: TEdit;
|
||||
ApplyButton: TBitBtn;
|
||||
OvcSpinner1: TOvcSpinner;
|
||||
OvcSpinner2: TOvcSpinner;
|
||||
OvcSpinner3: TOvcSpinner;
|
||||
OvcSpinner4: TOvcSpinner;
|
||||
procedure ctlUseDefHeightClick(Sender: TObject);
|
||||
procedure ctlUseCustHeightClick(Sender: TObject);
|
||||
procedure SpeedButton1Click(Sender: TObject);
|
||||
procedure SpeedButton2Click(Sender: TObject);
|
||||
procedure SpeedButton3Click(Sender: TObject);
|
||||
procedure SpeedButton4Click(Sender: TObject);
|
||||
procedure SpeedButton5Click(Sender: TObject);
|
||||
procedure SpeedButton6Click(Sender: TObject);
|
||||
procedure ctlRowNumberExit(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure ResetClick(Sender: TObject);
|
||||
procedure ApplyButtonClick(Sender: TObject);
|
||||
procedure DoneButtonClick(Sender: TObject);
|
||||
procedure ctlRowNumberChange(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
FRows : TOvcTableRows;
|
||||
FRowNum : TRowNum;
|
||||
CurDefHt : boolean;
|
||||
|
||||
protected
|
||||
procedure RefreshRowData;
|
||||
procedure SetRowNum(R : TRowNum);
|
||||
|
||||
public
|
||||
{ Public declarations }
|
||||
procedure SetRows(RS : TOvcTableRows);
|
||||
|
||||
property Rows : TOvcTableRows
|
||||
read FRows
|
||||
write SetRows;
|
||||
|
||||
property RowNum : TRowNum
|
||||
read FRowNum
|
||||
write SetRowNum;
|
||||
|
||||
end;
|
||||
|
||||
{-A table row property editor}
|
||||
TOvcTableRowProperty = class(TClassProperty)
|
||||
public
|
||||
procedure Edit; override;
|
||||
function GetAttributes: TPropertyAttributes; override;
|
||||
end;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{$IFNDEF LCL}
|
||||
{$R *.DFM}
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
|
||||
{===TOvcTableRowProperty=============================================}
|
||||
procedure TOvcTableRowProperty.Edit;
|
||||
var
|
||||
RowEditor : TOvcfrmRowEditor;
|
||||
begin
|
||||
RowEditor := TOvcfrmRowEditor.Create(Application);
|
||||
try
|
||||
RowEditor.SetRows(TOvcTableRows(GetOrdValue));
|
||||
RowEditor.ShowModal;
|
||||
{$IFNDEF LCL}
|
||||
Designer.Modified;
|
||||
{$ELSE}
|
||||
Modified;
|
||||
{$ENDIF}
|
||||
finally
|
||||
RowEditor.Free;
|
||||
end;{try..finally}
|
||||
end;
|
||||
{--------}
|
||||
function TOvcTableRowProperty.GetAttributes: TPropertyAttributes;
|
||||
begin
|
||||
Result := [paMultiSelect, paDialog, paReadOnly];
|
||||
end;
|
||||
{====================================================================}
|
||||
|
||||
|
||||
{===TRowEditor=======================================================}
|
||||
procedure TOvcfrmRowEditor.ApplyButtonClick(Sender: TObject);
|
||||
var
|
||||
NewRowLimit : Integer;
|
||||
NewDefHeight : Integer;
|
||||
NewHeight : Integer;
|
||||
RS : TRowStyle;
|
||||
begin
|
||||
NewRowLimit := StrToIntDef(ctlRowLimit.Text, FRows.Limit);
|
||||
if (NewRowLimit < 1) or (NewRowLimit > MaxInt) then {Out of range?}
|
||||
NewRowLimit := FRows.Limit; {Restore previous row limit}
|
||||
FRows.Limit := NewRowLimit;
|
||||
ctlRowLimit.Text := IntToStr(NewRowLimit);
|
||||
if FRowNum >= FRows.Limit then
|
||||
RowNum := pred(FRows.Limit);
|
||||
|
||||
NewDefHeight := StrToIntDef(ctlDefaultHeight.Text, FRows.DefaultHeight);
|
||||
if (NewDefHeight < 5) or (NewDefHeight > 32767) then {Out of range?}
|
||||
NewDefHeight := FRows.DefaultHeight; {Restore previous default height}
|
||||
FRows.DefaultHeight := NewDefHeight;
|
||||
ctlDefaultHeight.Text := IntToStr(NewDefHeight);
|
||||
|
||||
with RS do
|
||||
begin
|
||||
if ctlUseDefHeight.Checked then
|
||||
Height := StrToIntDef(ctlDefaultHeight.Text, Height)
|
||||
else
|
||||
begin
|
||||
NewHeight := StrToIntDef(ctlHeight.Text, Height);
|
||||
if (NewHeight < 5) or (NewHeight > 32767) then {Out of range?}
|
||||
NewHeight := Height; {Restore previous row height}
|
||||
Height := NewHeight;
|
||||
ctlHeight.Text := IntToStr(NewHeight);
|
||||
if (Height = FRows.DefaultHeight) then
|
||||
ctlUseDefHeight.Checked := true;
|
||||
end;
|
||||
Hidden := ctlHidden.Checked;
|
||||
FRows[RowNum] := RS;
|
||||
end;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.ctlRowNumberExit(Sender: TObject);
|
||||
begin
|
||||
RowNum := StrToInt(ctlRowNumber.Text);
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.ctlUseCustHeightClick(Sender: TObject);
|
||||
begin
|
||||
CurDefHt := false;
|
||||
ctlHeight.Enabled := true;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.ctlUseDefHeightClick(Sender: TObject);
|
||||
begin
|
||||
CurDefHt := true;
|
||||
ctlHeight.Text := IntToStr(FRows.DefaultHeight);
|
||||
ctlHeight.Enabled := false;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.FormShow(Sender: TObject);
|
||||
begin
|
||||
ctlDefaultHeight.Text := IntToStr(FRows.DefaultHeight);
|
||||
ctlRowLimit.Text := IntToStr(FRows.Limit);
|
||||
RefreshRowData;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.RefreshRowData;
|
||||
begin
|
||||
CurDefHt := FRows.Height[RowNum] = FRows.DefaultHeight;
|
||||
|
||||
ctlHidden.Checked := FRows.Hidden[RowNum];
|
||||
ctlHeight.Text := IntToStr(FRows.Height[RowNum]);
|
||||
if CurDefHt then
|
||||
begin
|
||||
ctlUseDefHeight.Checked := true;
|
||||
ctlHeight.Enabled := false;
|
||||
end
|
||||
else
|
||||
begin
|
||||
ctlUseCustHeight.Checked := true;
|
||||
ctlHeight.Enabled := true;
|
||||
end;
|
||||
|
||||
ctlRowLimit.Text := IntToStr(FRows.Limit);
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.ResetClick(Sender: TObject);
|
||||
begin
|
||||
FRows.Clear;
|
||||
ctlDefaultHeight.Text := IntToStr(FRows.DefaultHeight);
|
||||
RefreshRowData;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SetRowNum(R : TRowNum);
|
||||
begin
|
||||
if (FRowNum <> R) then
|
||||
begin
|
||||
FRowNum := R;
|
||||
RefreshRowData;
|
||||
ctlRowNumber.Text := IntToStr(R); //Do this after refresh
|
||||
end;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SetRows(RS : TOvcTableRows);
|
||||
begin
|
||||
if Assigned(FRows) then
|
||||
FRows.Free;
|
||||
FRows := RS;
|
||||
FRowNum := 0;
|
||||
ctlRowNumber.Text := '0';
|
||||
CurDefHt := FRows.Height[RowNum] = FRows.DefaultHeight;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SpeedButton1Click(Sender: TObject);
|
||||
begin
|
||||
ApplyButtonClick(Self);
|
||||
if (RowNum > 0) then
|
||||
RowNum := RowNum - 1;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SpeedButton2Click(Sender: TObject);
|
||||
begin
|
||||
ApplyButtonClick(Self);
|
||||
if (RowNum < pred(FRows.Limit)) then
|
||||
RowNum := RowNum + 1;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SpeedButton3Click(Sender: TObject);
|
||||
begin
|
||||
ApplyButtonClick(Self);
|
||||
RowNum := 0;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SpeedButton4Click(Sender: TObject);
|
||||
begin
|
||||
ApplyButtonClick(Self);
|
||||
RowNum := pred(FRows.Limit);
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SpeedButton5Click(Sender: TObject);
|
||||
var
|
||||
RS : TRowStyle;
|
||||
begin
|
||||
RS.Hidden := false;
|
||||
RS.Height := FRows.DefaultHeight;
|
||||
FRows.Insert(FRowNum, RS);
|
||||
RefreshRowData;
|
||||
end;
|
||||
{--------}
|
||||
procedure TOvcfrmRowEditor.SpeedButton6Click(Sender: TObject);
|
||||
begin
|
||||
FRows.Delete(FRowNum);
|
||||
RefreshRowData;
|
||||
end;
|
||||
{====================================================================}
|
||||
|
||||
procedure TOvcfrmRowEditor.DoneButtonClick(Sender: TObject);
|
||||
begin
|
||||
ApplyButtonClick(Self);
|
||||
end;
|
||||
|
||||
procedure TOvcfrmRowEditor.ctlRowNumberChange(Sender: TObject);
|
||||
var
|
||||
NewRowNum : Integer;
|
||||
begin
|
||||
ApplyButtonClick(Self);
|
||||
if not TryStrToInt(ctlRowNumber.Text, NewRowNum) then {Invalid?}
|
||||
ctlRowNumber.Text := IntToStr(RowNum) {Restore previous row number}
|
||||
else if NewRowNum = -1 then {Wrap around to last row?}
|
||||
ctlRowNumber.Text := IntToStr(Pred(FRows.Limit))
|
||||
else if NewRowNum = FRows.Limit then {Wrap around to first row?}
|
||||
ctlRowNumber.Text := '0'
|
||||
else if not (NewRowNum in [0..Pred(FRows.Limit)]) then {Out of range?}
|
||||
ctlRowNumber.Text := IntToStr(RowNum); {Restore previous row number}
|
||||
RowNum := StrToInt(ctlRowNumber.Text);
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$IFDEF LCL}
|
||||
{$I myovctbpe1.lrs} {Include form's resource file}
|
||||
{$ENDIF}
|
||||
|
||||
end.
|
Reference in New Issue
Block a user