You've already forked lazarus-ccr
tvplanit: Fix "Apply to planner" button in FlexDatastore demo for Access.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5193 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -10,9 +10,6 @@
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<StringTable ProductVersion=""/>
|
||||
</VersionInfo>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
|
@ -3,7 +3,7 @@ object Form1: TForm1
|
||||
Height = 686
|
||||
Top = 169
|
||||
Width = 980
|
||||
Caption = 'Form1'
|
||||
Caption = 'VpFlexDatastore demo (MS Access via ODBC)'
|
||||
ClientHeight = 686
|
||||
ClientWidth = 980
|
||||
OnCreate = FormCreate
|
||||
@ -193,7 +193,7 @@ object Form1: TForm1
|
||||
DisplayOptions.CheckStyle = csCheck
|
||||
DisplayOptions.DueDateFormat = 'dd.MM.yyyy'
|
||||
DisplayOptions.ShowCompletedTasks = False
|
||||
DisplayOptions.ShowAll = False
|
||||
DisplayOptions.ShowAll = True
|
||||
DisplayOptions.ShowDueDate = True
|
||||
DisplayOptions.OverdueColor = clRed
|
||||
DisplayOptions.NormalColor = clBlack
|
||||
@ -279,6 +279,7 @@ object Form1: TForm1
|
||||
Color = clWindow
|
||||
Columns = <>
|
||||
DataSource = DsResources
|
||||
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgThumbTracking]
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
@ -299,13 +300,13 @@ object Form1: TForm1
|
||||
Options = []
|
||||
TabOrder = 1
|
||||
end
|
||||
object Button1: TButton
|
||||
object BtnApplyToPlanner: TButton
|
||||
Left = 264
|
||||
Height = 25
|
||||
Top = 8
|
||||
Width = 120
|
||||
Caption = 'Apply to planner'
|
||||
OnClick = Button1Click
|
||||
OnClick = BtnApplyToPlannerClick
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
||||
@ -325,7 +326,7 @@ object Form1: TForm1
|
||||
top = 168
|
||||
end
|
||||
object VpResourceEditDialog1: TVpResourceEditDialog
|
||||
Version = 'v1.04'
|
||||
Version = 'v1.05'
|
||||
DataStore = VpFlexDataStore1
|
||||
Options = []
|
||||
Placement.Position = mpCenter
|
||||
@ -1270,6 +1271,9 @@ object Form1: TForm1
|
||||
Precision = -1
|
||||
Size = 100
|
||||
end>
|
||||
AfterEdit = QryGridAfterEdit
|
||||
AfterInsert = QryGridAfterInsert
|
||||
AfterPost = QryGridAfterPost
|
||||
Database = ODBCConnection1
|
||||
Transaction = SQLTransaction1
|
||||
SQL.Strings = (
|
||||
@ -1277,6 +1281,7 @@ object Form1: TForm1
|
||||
)
|
||||
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
|
||||
Params = <>
|
||||
UpdateMode = upWhereAll
|
||||
UsePrimaryKeyAsKey = False
|
||||
left = 531
|
||||
top = 171
|
||||
@ -1461,6 +1466,9 @@ object Form1: TForm1
|
||||
Precision = -1
|
||||
Size = 100
|
||||
end>
|
||||
AfterEdit = QryGridAfterEdit
|
||||
AfterInsert = QryGridAfterInsert
|
||||
AfterPost = QryGridAfterPost
|
||||
Database = ODBCConnection1
|
||||
Transaction = SQLTransaction1
|
||||
SQL.Strings = (
|
||||
@ -1468,6 +1476,7 @@ object Form1: TForm1
|
||||
)
|
||||
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
|
||||
Params = <>
|
||||
UpdateMode = upWhereAll
|
||||
UsePrimaryKeyAsKey = False
|
||||
left = 531
|
||||
top = 225
|
||||
@ -1475,6 +1484,9 @@ object Form1: TForm1
|
||||
object QryAllEvents: TSQLQuery
|
||||
PacketRecords = -1
|
||||
FieldDefs = <>
|
||||
AfterEdit = QryGridAfterEdit
|
||||
AfterInsert = QryGridAfterInsert
|
||||
AfterPost = QryGridAfterPost
|
||||
Database = ODBCConnection1
|
||||
Transaction = SQLTransaction1
|
||||
SQL.Strings = (
|
||||
@ -1482,6 +1494,7 @@ object Form1: TForm1
|
||||
)
|
||||
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
|
||||
Params = <>
|
||||
UpdateMode = upWhereAll
|
||||
UsePrimaryKeyAsKey = False
|
||||
left = 531
|
||||
top = 285
|
||||
@ -1489,6 +1502,9 @@ object Form1: TForm1
|
||||
object QryAllTasks: TSQLQuery
|
||||
PacketRecords = -1
|
||||
FieldDefs = <>
|
||||
AfterEdit = QryGridAfterEdit
|
||||
AfterInsert = QryGridAfterInsert
|
||||
AfterPost = QryGridAfterPost
|
||||
Database = ODBCConnection1
|
||||
Transaction = SQLTransaction1
|
||||
SQL.Strings = (
|
||||
@ -1496,6 +1512,7 @@ object Form1: TForm1
|
||||
)
|
||||
Options = [sqoKeepOpenOnCommit, sqoAutoCommit]
|
||||
Params = <>
|
||||
UpdateMode = upWhereAll
|
||||
UsePrimaryKeyAsKey = False
|
||||
left = 531
|
||||
top = 352
|
||||
|
@ -17,7 +17,7 @@ type
|
||||
TForm1 = class(TForm)
|
||||
BtnNewRes: TButton;
|
||||
BtnEditRes: TButton;
|
||||
Button1: TButton;
|
||||
BtnApplyToPlanner: TButton;
|
||||
DsAllResources: TDataSource;
|
||||
DsAllContacts: TDataSource;
|
||||
DsAllEvents: TDataSource;
|
||||
@ -60,10 +60,13 @@ type
|
||||
VpWeekView1: TVpWeekView;
|
||||
procedure BtnNewResClick(Sender: TObject);
|
||||
procedure BtnEditResClick(Sender: TObject);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure BtnApplyToPlannerClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure PageControl1Change(Sender: TObject);
|
||||
procedure QryGridAfterPost(DataSet: TDataSet);
|
||||
procedure QryGridAfterInsert(DataSet: TDataSet);
|
||||
procedure QryGridAfterEdit(DataSet: TDataSet);
|
||||
procedure TabControl1Change(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
@ -97,9 +100,29 @@ begin
|
||||
VpResourceEditDialog1.Execute;
|
||||
end;
|
||||
|
||||
procedure TForm1.Button1Click(Sender: TObject);
|
||||
procedure TForm1.BtnApplyToPlannerClick(Sender: TObject);
|
||||
var
|
||||
resID: Integer;
|
||||
begin
|
||||
// Remember id of currently selected resource
|
||||
resID := VpFlexDatastore1.ResourceID;
|
||||
|
||||
// Since the datastore does not know about the changes made in the grid
|
||||
// we have to force the datastore to re-read everything.
|
||||
// Maybe there's better way...
|
||||
VpFlexDatastore1.Connected := false;
|
||||
VpFlexDatastore1.Connected := true;
|
||||
|
||||
// Return to previous resource
|
||||
VpFlexDatastore1.Resources.ClearResources;
|
||||
VpFlexDatastore1.Load;
|
||||
VpFlexDatastore1.ResourceID := resID;
|
||||
|
||||
// Don't forget to re-activate the grid's datasources
|
||||
QryAllResources.Open;
|
||||
QryAllEvents.Open;
|
||||
QryAllContacts.Open;
|
||||
QryAllTasks.Open;
|
||||
end;
|
||||
|
||||
// Setting up the database connection and the datastore. Preselect a resource
|
||||
@ -159,10 +182,38 @@ begin
|
||||
if PageControl1.PageIndex = 2 then TabControl1Change(nil);
|
||||
end;
|
||||
|
||||
procedure TForm1.QryGridAfterEdit(DataSet: TDataSet);
|
||||
begin
|
||||
BtnApplyToPlanner.Enabled := false;
|
||||
end;
|
||||
|
||||
procedure TForm1.QryGridAfterInsert(DataSet: TDataSet);
|
||||
begin
|
||||
BtnApplyToPlanner.Enabled := false;
|
||||
end;
|
||||
|
||||
procedure TForm1.QryGridAfterPost(DataSet: TDataSet);
|
||||
begin
|
||||
// Note: UpdateMode must be upWhereAll! Otherwise there's an error "No update
|
||||
// query specified and failed to generate one. (No fields for inclusion in
|
||||
// where statement found)".
|
||||
// http://wiki.freepascal.org/SqlDBHowto#How_does_SqlDB_send_the_changes_to_the_database_server.3F
|
||||
|
||||
TSQLQuery(Dataset).ApplyUpdates;
|
||||
SQLTransaction1.CommitRetaining;
|
||||
|
||||
BtnApplyToPlanner.Enabled := true;
|
||||
end;
|
||||
|
||||
procedure TForm1.TabControl1Change(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
DsAllResources.Dataset.Close;
|
||||
DsAllContacts.Dataset.Close;
|
||||
DsAllEvents.Dataset.Close;
|
||||
DsAllTasks.Dataset.Close;
|
||||
|
||||
case TabControl1.TabIndex of
|
||||
0: Grid.Datasource := DsAllResources;
|
||||
1: Grid.Datasource := DsAllContacts;
|
||||
@ -170,6 +221,7 @@ begin
|
||||
3: Grid.Datasource := DsAllTasks;
|
||||
end;
|
||||
DBNavigator.Datasource := Grid.Datasource;
|
||||
Grid.Datasource.Dataset.Open;
|
||||
for i:=0 to Grid.Columns.Count-1 do
|
||||
Grid.Columns[i].Width := 100;;
|
||||
end;
|
||||
|
Reference in New Issue
Block a user