Componentes.Terceros.DevExp.../official/x.26/ExpressVerticalGrid/Demos/Delphi/EditorsLookupDemo/EditorsLookupDemoMain.pas
2007-09-09 11:27:27 +00:00

290 lines
8.6 KiB
ObjectPascal

unit EditorsLookupDemoMain;
interface
uses
Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, cxControls,
cxLookupGrid, cxLookupDBGrid, cxMaskEdit, StdCtrls, ExtCtrls, cxContainer,
cxEdit, cxTextEdit, cxDropDownEdit, cxDBEdit, cxStyles, Menus, ActnList,
ImgList, ShellAPI, ComCtrls, cxLookAndFeels, cxLookupEdit, cxDBLookupComboBox,
DBCtrls, cxCustomData, cxGraphics, cxFilter, cxData, DB, cxDBData, cxClasses,
cxCalendar, cxImageComboBox, cxMemo, cxCheckBox, cxButtons, cxNavigator,
cxDBLookupEdit, cxPropertiesStore, cxDBNavigator, DemoBasicMain;
type
TEditorsLookupDemoMainForm = class(TDemoBasicMainForm)
miStorage: TMenuItem;
miStorageType: TMenuItem;
miStore: TMenuItem;
miRestore: TMenuItem;
miIniStoreType: TMenuItem;
miRegistryStoreType: TMenuItem;
miMemoryStoreType: TMenuItem;
N5: TMenuItem;
N3: TMenuItem;
miStoringGridLookFeel: TMenuItem;
N6: TMenuItem;
miStorageActive: TMenuItem;
N1: TMenuItem;
LookupOptions1: TMenuItem;
miPickMode: TMenuItem;
miStandardMode: TMenuItem;
miEditMode: TMenuItem;
cxPropertiesStore: TcxPropertiesStore;
cxStorageActiveStore: TcxPropertiesStore;
pnlEditors: TPanel;
gbIssue: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label9: TLabel;
edName: TcxDBTextEdit;
meDescription: TcxDBMemo;
lcbCreator: TcxDBLookupComboBox;
gbInfo: TGroupBox;
Label3: TLabel;
Label4: TLabel;
cbPriority: TcxDBImageComboBox;
deCreateDate: TcxDBDateEdit;
chbRequest: TcxDBCheckBox;
gbStatus: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
cbStatus: TcxDBImageComboBox;
deLastModifiedDate: TcxDBDateEdit;
deFixedDate: TcxDBDateEdit;
DBNavigator: TcxDBNavigator;
gbProject: TGroupBox;
Label8: TLabel;
Label10: TLabel;
lcbProject: TcxDBLookupComboBox;
lcbOwner: TcxDBLookupComboBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ChangeLookupModeClick(Sender: TObject);
procedure lcbCreatorNewLookupDisplayText(Sender: TObject;
const AText: TCaption);
procedure miStoreClick(Sender: TObject);
procedure miRestoreClick(Sender: TObject);
procedure miStoringGridLookFeelClick(Sender: TObject);
procedure miStorageActiveClick(Sender: TObject);
procedure StorageTypeClick(Sender: TObject);
private
FStream: TMemoryStream;
procedure SetPickLookupMode;
procedure SetStandardLookupMode;
procedure SetEditLookupMode;
end;
var
EditorsLookupDemoMainForm: TEditorsLookupDemoMainForm;
implementation
uses EditorsLookupDemoData, EditorsLookupDemoNewUser, SysUtils;
{$R *.dfm}
procedure TEditorsLookupDemoMainForm.FormCreate(Sender: TObject);
begin
FStream := TMemoryStream.Create;
cxPropertiesStore.StorageStream := FStream;
if not miStoringGridLookFeel.Checked then
begin
miStoringGridLookFeel.Checked := True;
miStoringGridLookFeelClick(miStoringGridLookFeel);
end;
end;
procedure TEditorsLookupDemoMainForm.FormDestroy(Sender: TObject);
begin
if cxPropertiesStore.StorageType = stStream then
miIniStoreType.Click;
FreeAndNil(FStream);
end;
procedure TEditorsLookupDemoMainForm.lcbCreatorNewLookupDisplayText(
Sender: TObject; const AText: TCaption);
var
ALookupControl: TcxDBLookupComboBox;
begin
ALookupControl := TcxDBLookupComboBox(Sender);
ALookupControl.Reset;
if (EditorsLookupDemoNewUserForm.ShowEX(AText) = mrOK) then
begin
ALookupControl.Text := EditorsLookupDemoDataDM.tblUsersUserName.AsString;
ALookupControl.DataBinding.Field.Value :=
EditorsLookupDemoDataDM.tblUsersID.Value;
end;
Abort;
end;
procedure TEditorsLookupDemoMainForm.ChangeLookupModeClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := True;
case TMenuItem(Sender).Tag of
1: SetPickLookupMode;
2: SetStandardLookupMode;
3: SetEditLookupMode;
end
end;
procedure TEditorsLookupDemoMainForm.SetPickLookupMode;
begin
with lcbCreator.Properties do
begin
DropDownListStyle := lsEditFixedList;
ImmediateDropDown := True;
IncrementalFiltering := True;
end;
with lcbOwner.Properties do
begin
DropDownListStyle := lsEditFixedList;
ImmediateDropDown := True;
IncrementalFiltering := True;
end;
with lcbProject.Properties do
begin
DropDownListStyle := lsEditFixedList;
IncrementalFiltering := True;
end;
end;
procedure TEditorsLookupDemoMainForm.SetStandardLookupMode;
begin
with lcbCreator.Properties do
begin
DropDownListStyle := lsFixedList;
IncrementalFiltering := False;
ImmediateDropDown := True;
end;
with lcbOwner.Properties do
begin
DropDownListStyle := lsFixedList;
IncrementalFiltering := False;
ImmediateDropDown := True;
end;
with lcbProject.Properties do
begin
DropDownListStyle := lsFixedList;
IncrementalFiltering := False;
ImmediateDropDown := True;
end;
end;
procedure TEditorsLookupDemoMainForm.SetEditLookupMode;
begin
with lcbCreator.Properties do
begin
DropDownListStyle := lsEditList;
IncrementalFiltering := False;
ImmediateDropDown := False;
end;
with lcbOwner.Properties do
begin
DropDownListStyle := lsEditList;
IncrementalFiltering := False;
ImmediateDropDown := False;
end;
with lcbProject.Properties do
begin
DropDownListStyle := lsEditFixedList;
IncrementalFiltering := False;
end;
end;
procedure TEditorsLookupDemoMainForm.StorageTypeClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := True;
TMenuItem(Sender).Parent.Tag := TMenuItem(Sender).Tag;
cxPropertiesStore.StorageType := TcxStorageType(TMenuItem(Sender).Tag);
if TMenuItem(Sender).Tag = 0 then
cxPropertiesStore.StorageName := cxPropertiesStore.Name + '.ini'
else
cxPropertiesStore.StorageName := cxPropertiesStore.Name;
end;
procedure TEditorsLookupDemoMainForm.miStoreClick(Sender: TObject);
begin
cxPropertiesStore.StoreTo;
end;
procedure TEditorsLookupDemoMainForm.miRestoreClick(Sender: TObject);
begin
FStream.Position := 0;
cxPropertiesStore.RestoreFrom;
end;
procedure TEditorsLookupDemoMainForm.miStoringGridLookFeelClick(
Sender: TObject);
var
AIndex: Integer;
function IndexOfPropertiesStoreComponent(AComponent: TComponent): Integer;
begin
for Result := 0 to cxPropertiesStore.Components.Count - 1 do
if cxPropertiesStore.Components[Result].Component = AComponent then
Exit;
Result := -1;
end;
procedure AddMenuItemStoreComponent(AItem: TComponent);
begin
AIndex := IndexOfPropertiesStoreComponent(AItem);
if AIndex > -1 then
cxPropertiesStore.Components[AIndex].Properties.Add('Checked')
else
with TcxPropertiesStoreComponent(cxPropertiesStore.Components.Add) do
begin
Component := AItem;
Properties.Add('Checked');
end;
end;
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
AIndex := IndexOfPropertiesStoreComponent(cxLookAndFeelController);
if TMenuItem(Sender).Checked then
begin
if AIndex > -1 then
begin
cxPropertiesStore.Components[AIndex].Properties.Add('NativeStyle');
cxPropertiesStore.Components[AIndex].Properties.Add('Kind');
end
else
with TcxPropertiesStoreComponent(cxPropertiesStore.Components.Add) do
begin
Component := cxLookAndFeelController;
Properties.Add('NativeStyle');
Properties.Add('Kind');
end;
AddMenuItemStoreComponent(miNativeStyle);
AddMenuItemStoreComponent(miUltraFlat);
AddMenuItemStoreComponent(miFlat);
AddMenuItemStoreComponent(miStandard);
end
else
if AIndex > -1 then
begin
cxPropertiesStore.Components[AIndex].Free;
AIndex := IndexOfPropertiesStoreComponent(miNativeStyle);
cxPropertiesStore.Components[AIndex].Free;
AIndex := IndexOfPropertiesStoreComponent(miStandard);
cxPropertiesStore.Components[AIndex].Free;
AIndex := IndexOfPropertiesStoreComponent(miFlat);
cxPropertiesStore.Components[AIndex].Free;
AIndex := IndexOfPropertiesStoreComponent(miUltraFlat);
cxPropertiesStore.Components[AIndex].Free;
end;
end;
procedure TEditorsLookupDemoMainForm.miStorageActiveClick(
Sender: TObject);
begin
TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
cxPropertiesStore.Active := TMenuItem(Sender).Checked;
miStoringGridLookFeel.Enabled := TMenuItem(Sender).Checked;
end;
end.