Componentes.Terceros.jvcl/official/3.32/design/JvDBGridControlsEditorForm.pas

218 lines
6.8 KiB
ObjectPascal

{-----------------------------------------------------------------------------
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/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvDBGridProp.PAS, released on 2004-07-09.
The Initial Developer of the Original Code is Frédéric Leneuf-Magaud.
Portions created by Frédéric Leneuf-Magaud are Copyright (C) 2004 Frédéric Leneuf-Magaud.
All Rights Reserved.
Contributor(s):
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
// $Id: JvDBGridControlsEditorForm.pas 11154 2007-01-16 19:01:07Z ahuser $
unit JvDBGridControlsEditorForm;
{$I jvcl.inc}
interface
uses
Classes, Controls, Forms,
{$IFDEF COMPILER6_UP}
DesignIntf, DesignEditors,
{$ELSE}
DsgnIntf,
{$ENDIF COMPILER6_UP}
StdCtrls, Buttons, Graphics,
TypInfo,
JvDBGrid;
type
TfrmJvDBGridControlsEditor = class(TForm)
GroupBoxFields: TGroupBox;
lbFields: TListBox;
GroupBoxSelected: TGroupBox;
lbSelected: TListBox;
sbAdd: TSpeedButton;
sbDelete: TSpeedButton;
LabelControl: TLabel;
cbControl: TComboBox;
LabelFillCell: TLabel;
cbFillCell: TComboBox;
cbLeaveOnEnterKey: TCheckBox;
btnOK: TButton;
btnCancel: TButton;
cbLeaveOnUpDownKey: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure lbSelectedClick(Sender: TObject);
procedure cbControlClick(Sender: TObject);
procedure cbFillCellClick(Sender: TObject);
procedure cbLeaveOnEnterKeyClick(Sender: TObject);
procedure sbAddClick(Sender: TObject);
procedure sbDeleteClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure cbLeaveOnUpDownKeyClick(Sender: TObject);
private
procedure SetControl(Name: string);
public
JvDBGridControls: TJvDBGridControls;
Grid: TJvDBGrid;
procedure Initialize;
end;
implementation
uses
SysUtils, Dialogs,
JvDsgnConsts;
{$R *.dfm}
procedure TfrmJvDBGridControlsEditor.FormCreate(Sender: TObject);
begin
JvDBGridControls := TJvDBGridControls.Create(nil);
end;
procedure TfrmJvDBGridControlsEditor.Initialize;
var
I, Index: Integer;
begin
if (Grid.DataSource <> nil) and (Grid.DataSource.DataSet <> nil) and
not Grid.DataSource.DataSet.Active then
begin
for I := 0 to Grid.DataSource.DataSet.Fields.Count - 1 do
if Grid.DataSource.DataSet.Fields[i].Visible then
lbFields.Items.Add(Grid.DataSource.DataSet.Fields[i].FieldName);
end
else
for I := 0 to Grid.Columns.Count - 1 do
lbFields.Items.Add(Grid.Columns.Items[I].FieldName);
for I := 0 to JvDBGridControls.Count - 1 do
begin
lbSelected.Items.Add(JvDBGridControls.Items[I].FieldName);
Index := lbFields.Items.IndexOf(JvDBGridControls.Items[I].FieldName);
if Index >= 0 then
lbFields.Items.Delete(Index);
end;
for I := 0 to Grid.Owner.ComponentCount - 1 do
if Grid.Owner.Components[I] is TWinControl then
if IsPublishedProp(Grid.Owner.Components[I], 'DataField') then
cbControl.Items.Add(Grid.Owner.Components[I].Name);
lbSelectedClick(lbSelected);
end;
procedure TfrmJvDBGridControlsEditor.SetControl(Name: string);
var
I: Integer;
begin
for I := 0 to cbControl.Items.Count - 1 do
if CompareText(Name, cbControl.Items[I]) = 0 then
begin
cbControl.ItemIndex := I;
Exit;
end;
cbControl.ItemIndex := -1;
end;
procedure TfrmJvDBGridControlsEditor.lbSelectedClick(Sender: TObject);
begin
if lbSelected.ItemIndex >= 0 then
begin
cbControl.Enabled := True;
cbControl.Color := clWindow;
SetControl(JvDBGridControls.Items[lbSelected.ItemIndex].ControlName);
cbFillCell.Enabled := True;
cbFillCell.Color := clWindow;
cbFillCell.ItemIndex := Ord(JvDBGridControls.Items[lbSelected.ItemIndex].FitCell);
cbLeaveOnEnterKey.Enabled := True;
cbLeaveOnEnterKey.Checked := JvDBGridControls.Items[lbSelected.ItemIndex].LeaveOnEnterKey;
cbLeaveOnUpDownKey.Enabled := True;
cbLeaveOnUpDownKey.Checked := JvDBGridControls.Items[lbSelected.ItemIndex].LeaveOnUpDownKey;
end
else
begin
cbControl.Enabled := False;
cbControl.Color := clBtnFace;
cbFillCell.Enabled := False;
cbFillCell.Color := clBtnFace;
cbLeaveOnEnterKey.Enabled := False;
cbLeaveOnUpDownKey.Enabled := False;
end;
end;
procedure TfrmJvDBGridControlsEditor.cbControlClick(Sender: TObject);
begin
if lbSelected.ItemIndex >= 0 then
JvDBGridControls.Items[lbSelected.ItemIndex].ControlName := cbControl.Text;
end;
procedure TfrmJvDBGridControlsEditor.cbFillCellClick(Sender: TObject);
begin
if lbSelected.ItemIndex >= 0 then
JvDBGridControls.Items[lbSelected.ItemIndex].FitCell := TJvDBGridControlSize(cbFillCell.ItemIndex);
end;
procedure TfrmJvDBGridControlsEditor.cbLeaveOnEnterKeyClick(Sender: TObject);
begin
if lbSelected.ItemIndex >= 0 then
JvDBGridControls.Items[lbSelected.ItemIndex].LeaveOnEnterKey := cbLeaveOnEnterKey.Checked;
end;
procedure TfrmJvDBGridControlsEditor.cbLeaveOnUpDownKeyClick(Sender: TObject);
begin
if lbSelected.ItemIndex >= 0 then
JvDBGridControls.Items[lbSelected.ItemIndex].LeaveOnUpDownKey := cbLeaveOnUpDownKey.Checked;
end;
procedure TfrmJvDBGridControlsEditor.sbAddClick(Sender: TObject);
begin
if lbFields.ItemIndex >= 0 then
begin
if lbSelected.Items.IndexOf(lbFields.Items[lbFields.ItemIndex]) < 0 then
begin
lbSelected.Items.Add(lbFields.Items[lbFields.ItemIndex]);
with JvDBGridControls.Add do
begin
FieldName := lbFields.Items[lbFields.ItemIndex];
FitCell := fcCellSize;
LeaveOnEnterKey := True;
LeaveOnUpDownKey := True;
end;
lbFields.Items.Delete(lbFields.ItemIndex);
end
else
MessageDlg(Format(RsJvDBGridAlreadyAdded,
[lbFields.Items[lbFields.ItemIndex]]), mtWarning, [mbOK], 0);
end;
end;
procedure TfrmJvDBGridControlsEditor.sbDeleteClick(Sender: TObject);
begin
if lbSelected.ItemIndex >= 0 then
begin
lbFields.Items.Add(lbSelected.Items[lbSelected.ItemIndex]);
JvDBGridControls.Items[lbSelected.ItemIndex].Free;
lbSelected.Items.Delete(lbSelected.ItemIndex);
end;
end;
procedure TfrmJvDBGridControlsEditor.FormDestroy(Sender: TObject);
begin
JvDBGridControls.Free;
end;
end.