ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/examples/employee/unit1.lfm
(Generate patch)

Comparing ibx/trunk/examples/employee/unit1.lfm (file contents):
Revision 20 by tony, Mon Jul 7 13:00:15 2014 UTC vs.
Revision 21 by tony, Thu Feb 26 10:33:34 2015 UTC

# Line 1 | Line 1
1   object Form1: TForm1
2 <  Left = 461
3 <  Height = 454
4 <  Top = 312
5 <  Width = 743
6 <  Caption = 'Form1'
7 <  ClientHeight = 454
8 <  ClientWidth = 743
2 >  Left = 311
3 >  Height = 482
4 >  Top = 328
5 >  Width = 1002
6 >  Caption = 'Employee List'
7 >  ClientHeight = 482
8 >  ClientWidth = 1002
9    OnClose = FormClose
10    OnShow = FormShow
11 <  LCLVersion = '1.2.2.0'
12 <  object DBGrid1: TDBGrid
13 <    Left = 8
14 <    Height = 375
15 <    Top = 24
16 <    Width = 632
17 <    Color = clWindow
18 <    Columns = <    
19 <      item
20 <        Title.Alignment = taCenter
21 <        Title.Caption = 'Last Name'
22 <        Width = 150
23 <        FieldName = 'LAST_NAME'
24 <      end    
25 <      item
26 <        Title.Alignment = taCenter
27 <        Title.Caption = 'First Name'
28 <        Width = 150
29 <        FieldName = 'FIRST_NAME'
30 <      end    
31 <      item
32 <        Title.Alignment = taCenter
33 <        Title.Caption = 'Employee No.'
34 <        Width = 100
35 <        FieldName = 'EMP_NO'
36 <      end    
37 <      item
38 <        Alignment = taCenter
39 <        Title.Alignment = taCenter
40 <        Title.Caption = 'Started'
41 <        Width = 80
42 <        FieldName = 'HIRE_DATE'
43 <      end    
44 <      item
45 <        Title.Alignment = taCenter
46 <        Title.Caption = 'Salary'
47 <        Width = 100
48 <        FieldName = 'SALARY'
49 <      end>
50 <    DataSource = Datasource1
51 <    TabOrder = 0
52 <    OnDblClick = DBGrid1DblClick
53 <  end
11 >  LCLVersion = '1.4.0.1'
12    object Button1: TButton
13 <    Left = 656
13 >    Left = 915
14      Height = 25
15 <    Top = 24
15 >    Top = 48
16      Width = 75
17      Action = AddEmployee
18 <    TabOrder = 1
18 >    Anchors = [akTop, akRight]
19 >    TabOrder = 0
20    end
21    object Button2: TButton
22 <    Left = 656
22 >    Left = 915
23      Height = 25
24 <    Top = 62
24 >    Top = 86
25      Width = 75
26      Action = EditEmployee
27 <    TabOrder = 2
27 >    Anchors = [akTop, akRight]
28 >    TabOrder = 1
29    end
30    object Button3: TButton
31 <    Left = 656
31 >    Left = 915
32      Height = 25
33 <    Top = 101
33 >    Top = 125
34      Width = 75
35      Action = DeleteEmployee
36 +    Anchors = [akTop, akRight]
37 +    TabOrder = 2
38 +  end
39 +  object Label1: TLabel
40 +    Left = 17
41 +    Height = 15
42 +    Top = 14
43 +    Width = 87
44 +    Caption = 'Started Before'
45 +    ParentColor = False
46 +  end
47 +  object BeforeDate: TDateEdit
48 +    Left = 112
49 +    Height = 25
50 +    Top = 8
51 +    Width = 80
52 +    CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
53 +    OKCaption = 'OK'
54 +    CancelCaption = 'Cancel'
55 +    DateOrder = doNone
56 +    ButtonWidth = 23
57 +    NumGlyphs = 1
58 +    MaxLength = 0
59 +    OnChange = BeforeDateChange
60      TabOrder = 3
61    end
62 <  object Button4: TButton
63 <    Left = 488
62 >  object Label2: TLabel
63 >    Left = 241
64 >    Height = 15
65 >    Top = 14
66 >    Width = 78
67 >    Caption = 'Started After'
68 >    ParentColor = False
69 >  end
70 >  object AfterDate: TDateEdit
71 >    Left = 333
72      Height = 25
73 <    Top = 416
74 <    Width = 75
75 <    Action = SaveChanges
73 >    Top = 8
74 >    Width = 80
75 >    CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
76 >    OKCaption = 'OK'
77 >    CancelCaption = 'Cancel'
78 >    DateOrder = doNone
79 >    ButtonWidth = 23
80 >    NumGlyphs = 1
81 >    MaxLength = 0
82 >    OnChange = BeforeDateChange
83      TabOrder = 4
84    end
85 <  object Button5: TButton
86 <    Left = 568
87 <    Height = 25
88 <    Top = 416
89 <    Width = 75
90 <    Action = CancelChanges
85 >  object Panel1: TPanel
86 >    Left = 12
87 >    Height = 434
88 >    Top = 42
89 >    Width = 880
90 >    Anchors = [akTop, akLeft, akRight, akBottom]
91 >    BevelOuter = bvNone
92 >    ClientHeight = 434
93 >    ClientWidth = 880
94 >    Color = clBackground
95 >    ParentColor = False
96      TabOrder = 5
97 +    object IBDynamicGrid1: TIBDynamicGrid
98 +      Left = 0
99 +      Height = 384
100 +      Top = 0
101 +      Width = 880
102 +      Align = alClient
103 +      Color = clWindow
104 +      Columns = <      
105 +        item
106 +          Title.Alignment = taCenter
107 +          Title.Caption = 'Last Name'
108 +          Width = 100
109 +          FieldName = 'LAST_NAME'
110 +          AutoSizeColumn = False
111 +          InitialSortColumn = False
112 +          DBLookupProperties.ItemHeight = 0
113 +          DBLookupProperties.ItemWidth = 0
114 +          DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
115 +        end      
116 +        item
117 +          Title.Alignment = taCenter
118 +          Title.Caption = 'First Name'
119 +          Width = 100
120 +          FieldName = 'FIRST_NAME'
121 +          AutoSizeColumn = False
122 +          InitialSortColumn = False
123 +          DBLookupProperties.ItemHeight = 0
124 +          DBLookupProperties.ItemWidth = 0
125 +          DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
126 +        end      
127 +        item
128 +          Alignment = taCenter
129 +          Title.Alignment = taCenter
130 +          Title.Caption = 'Emp No.'
131 +          Width = 60
132 +          FieldName = 'EMP_NO'
133 +          AutoSizeColumn = False
134 +          InitialSortColumn = False
135 +          DBLookupProperties.ItemHeight = 0
136 +          DBLookupProperties.ItemWidth = 0
137 +          DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
138 +        end      
139 +        item
140 +          ReadOnly = True
141 +          Title.Alignment = taCenter
142 +          Title.Caption = 'Dept'
143 +          Width = 200
144 +          FieldName = 'DEPT_PATH'
145 +          AutoSizeColumn = True
146 +          InitialSortColumn = False
147 +          DBLookupProperties.ItemHeight = 0
148 +          DBLookupProperties.ItemWidth = 0
149 +          DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
150 +        end      
151 +        item
152 +          ButtonStyle = cbsPickList
153 +          Title.Alignment = taCenter
154 +          Title.Caption = 'Located'
155 +          Width = 100
156 +          FieldName = 'JOB_COUNTRY'
157 +          AutoSizeColumn = False
158 +          InitialSortColumn = False
159 +          DBLookupProperties.ItemHeight = 0
160 +          DBLookupProperties.ItemWidth = 0
161 +          DBLookupProperties.ListSource = CountrySource
162 +          DBLookupProperties.ListField = 'COUNTRY'
163 +          DBLookupProperties.AutoInsert = False
164 +          DBLookupProperties.AutoComplete = False
165 +        end      
166 +        item
167 +          Title.Alignment = taCenter
168 +          Title.Caption = 'Started'
169 +          Width = 80
170 +          FieldName = 'HIRE_DATE'
171 +          AutoSizeColumn = False
172 +          InitialSortColumn = False
173 +          DBLookupProperties.ItemHeight = 0
174 +          DBLookupProperties.ItemWidth = 0
175 +          DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
176 +        end      
177 +        item
178 +          Title.Alignment = taCenter
179 +          Title.Caption = 'Salary'
180 +          Width = 120
181 +          FieldName = 'SALARY'
182 +          ColumnTotalsControl = DBText1
183 +          AutoSizeColumn = False
184 +          InitialSortColumn = False
185 +          DBLookupProperties.ItemHeight = 0
186 +          DBLookupProperties.ItemWidth = 0
187 +          DBLookupProperties.AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
188 +        end>
189 +      DataSource = EmployeeSource
190 +      Scrollbars = ssAutoBoth
191 +      TabOrder = 0
192 +      EditorPanel = EmployeeEditorPanel
193 +      ExpandEditorPanelBelowRow = False
194 +      Descending = False
195 +      EditorBorderStyle = bsSingle
196 +      DefaultPositionAtEnd = False
197 +      IndexFieldNames = 'EMP_NO'
198 +    end
199 +    object Panel2: TPanel
200 +      Left = 0
201 +      Height = 50
202 +      Top = 384
203 +      Width = 880
204 +      Align = alBottom
205 +      BevelOuter = bvNone
206 +      ClientHeight = 50
207 +      ClientWidth = 880
208 +      ParentColor = False
209 +      TabOrder = 1
210 +      object Button5: TButton
211 +        Left = 80
212 +        Height = 25
213 +        Top = 16
214 +        Width = 75
215 +        Action = CancelChanges
216 +        Anchors = [akLeft, akBottom]
217 +        TabOrder = 0
218 +      end
219 +      object Button4: TButton
220 +        Left = 1
221 +        Height = 25
222 +        Top = 16
223 +        Width = 75
224 +        Action = SaveChanges
225 +        Anchors = [akLeft, akBottom]
226 +        TabOrder = 1
227 +      end
228 +      object DBText1: TDBText
229 +        Left = 688
230 +        Height = 27
231 +        Top = 16
232 +        Width = 49
233 +        Alignment = taRightJustify
234 +        Anchors = [akTop, akLeft, akBottom]
235 +        DataField = 'TOTALSALARIES'
236 +        DataSource = TotalsSource
237 +        ParentColor = False
238 +      end
239 +    end
240 +    object EmployeeEditorPanel: TPanel
241 +      Left = 8
242 +      Height = 80
243 +      Top = 112
244 +      Width = 784
245 +      BevelOuter = bvNone
246 +      BorderWidth = 2
247 +      BorderStyle = bsSingle
248 +      ClientHeight = 78
249 +      ClientWidth = 782
250 +      Color = clWindow
251 +      ParentColor = False
252 +      TabOrder = 2
253 +      Visible = False
254 +      object Label3: TLabel
255 +        Left = 0
256 +        Height = 15
257 +        Top = 7
258 +        Width = 83
259 +        Caption = 'Employee No.'
260 +        ParentColor = False
261 +      end
262 +      object DBEdit1: TDBEdit
263 +        Left = 90
264 +        Height = 25
265 +        Top = 2
266 +        Width = 120
267 +        DataField = 'EMP_NO'
268 +        DataSource = EmployeeSource
269 +        CharCase = ecNormal
270 +        MaxLength = 0
271 +        TabOrder = 0
272 +      end
273 +      object Label4: TLabel
274 +        Left = 12
275 +        Height = 15
276 +        Top = 32
277 +        Width = 64
278 +        Caption = 'First Name'
279 +        ParentColor = False
280 +      end
281 +      object DBEdit2: TDBEdit
282 +        Left = 90
283 +        Height = 25
284 +        Top = 24
285 +        Width = 120
286 +        DataField = 'FIRST_NAME'
287 +        DataSource = EmployeeSource
288 +        CharCase = ecNormal
289 +        MaxLength = 0
290 +        TabOrder = 1
291 +      end
292 +      object Label5: TLabel
293 +        Left = 12
294 +        Height = 15
295 +        Top = 56
296 +        Width = 64
297 +        Caption = 'Last Name'
298 +        ParentColor = False
299 +      end
300 +      object DBEdit3: TDBEdit
301 +        Left = 90
302 +        Height = 25
303 +        Top = 46
304 +        Width = 120
305 +        DataField = 'LAST_NAME'
306 +        DataSource = EmployeeSource
307 +        CharCase = ecNormal
308 +        MaxLength = 0
309 +        TabOrder = 2
310 +      end
311 +      object Label6: TLabel
312 +        Left = 216
313 +        Height = 15
314 +        Top = 7
315 +        Width = 77
316 +        Caption = 'Date Started'
317 +        ParentColor = False
318 +      end
319 +      object IBDateEdit1: TDBDateEdit
320 +        Left = 300
321 +        Height = 25
322 +        Top = 2
323 +        Width = 80
324 +        CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
325 +        OKCaption = 'OK'
326 +        CancelCaption = 'Cancel'
327 +        DateOrder = doNone
328 +        ButtonWidth = 23
329 +        NumGlyphs = 1
330 +        MaxLength = 0
331 +        TabOrder = 3
332 +        DataField = 'HIRE_DATE'
333 +        DataSource = EmployeeSource
334 +      end
335 +      object Label7: TLabel
336 +        Left = 252
337 +        Height = 15
338 +        Top = 32
339 +        Width = 37
340 +        Caption = 'Salary'
341 +        ParentColor = False
342 +      end
343 +      object DBEdit4: TDBEdit
344 +        Left = 300
345 +        Height = 25
346 +        Top = 24
347 +        Width = 104
348 +        DataField = 'SALARY'
349 +        DataSource = EmployeeSource
350 +        CharCase = ecNormal
351 +        MaxLength = 0
352 +        TabOrder = 5
353 +      end
354 +      object Label8: TLabel
355 +        Left = 708
356 +        Height = 15
357 +        Top = 54
358 +        Width = 24
359 +        Anchors = [akTop, akRight]
360 +        Caption = 'Ext.'
361 +        ParentColor = False
362 +      end
363 +      object DBEdit5: TDBEdit
364 +        Left = 732
365 +        Height = 25
366 +        Top = 48
367 +        Width = 40
368 +        DataField = 'PHONE_EXT'
369 +        DataSource = EmployeeSource
370 +        Anchors = [akTop, akRight]
371 +        CharCase = ecNormal
372 +        MaxLength = 0
373 +        TabOrder = 4
374 +      end
375 +      object Label9: TLabel
376 +        Left = 536
377 +        Height = 15
378 +        Top = 7
379 +        Width = 51
380 +        Caption = 'Location'
381 +        ParentColor = False
382 +      end
383 +      object Label10: TLabel
384 +        Left = 413
385 +        Height = 15
386 +        Top = 9
387 +        Width = 59
388 +        Caption = 'Job Grade'
389 +        ParentColor = False
390 +      end
391 +      object JobGradeDBComboBox: TDBComboBox
392 +        Left = 480
393 +        Height = 25
394 +        Top = 2
395 +        Width = 48
396 +        AutoSize = False
397 +        DataField = 'JOB_GRADE'
398 +        DataSource = EmployeeSource
399 +        ItemHeight = 0
400 +        Items.Strings = (
401 +          '1'
402 +          '2'
403 +          '3'
404 +          '4'
405 +          '5'
406 +        )
407 +        MaxLength = 0
408 +        OnCloseUp = JobGradeDBComboBoxCloseUp
409 +        Style = csDropDownList
410 +        TabOrder = 6
411 +      end
412 +      object Label11: TLabel
413 +        Left = 536
414 +        Height = 15
415 +        Top = 32
416 +        Width = 48
417 +        Caption = 'Job Title'
418 +        ParentColor = False
419 +      end
420 +      object Label12: TLabel
421 +        Left = 256
422 +        Height = 15
423 +        Top = 54
424 +        Width = 33
425 +        Caption = 'Dept.'
426 +        ParentColor = False
427 +      end
428 +      object SpeedButton1: TSpeedButton
429 +        Left = 680
430 +        Height = 25
431 +        Top = 48
432 +        Width = 23
433 +        Action = SelectDept
434 +        Anchors = [akTop, akRight]
435 +      end
436 +      object DBEdit6: TDBEdit
437 +        Left = 300
438 +        Height = 25
439 +        Top = 48
440 +        Width = 372
441 +        DataField = 'DEPT_PATH'
442 +        DataSource = EmployeeSource
443 +        ReadOnly = True
444 +        Anchors = [akTop, akLeft, akRight]
445 +        CharCase = ecNormal
446 +        MaxLength = 0
447 +        TabOrder = 7
448 +      end
449 +      object IBLookupComboEditBox2: TIBLookupComboEditBox
450 +        Left = 600
451 +        Height = 25
452 +        Top = 0
453 +        Width = 172
454 +        Anchors = [akTop, akLeft, akRight]
455 +        AutoSize = False
456 +        DataField = 'JOB_COUNTRY'
457 +        DataSource = EmployeeSource
458 +        KeyField = 'COUNTRY'
459 +        ListField = 'COUNTRY'
460 +        ListFieldIndex = 0
461 +        ListSource = CountrySource
462 +        LookupCache = False
463 +        Style = csDropDownList
464 +        TabOrder = 8
465 +        AutoInsert = False
466 +        AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
467 +        ItemHeight = 0
468 +      end
469 +      object IBLookupComboEditBox1: TIBLookupComboEditBox
470 +        Left = 600
471 +        Height = 25
472 +        Top = 24
473 +        Width = 172
474 +        Anchors = [akTop, akLeft, akRight]
475 +        AutoSize = False
476 +        DataField = 'JOB_CODE'
477 +        DataSource = EmployeeSource
478 +        KeyField = 'JOB_CODE'
479 +        ListField = 'JOB_TITLE'
480 +        ListFieldIndex = 0
481 +        ListSource = JobCodeSource
482 +        LookupCache = False
483 +        Style = csDropDownList
484 +        TabOrder = 9
485 +        AutoInsert = False
486 +        AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
487 +        ItemHeight = 0
488 +      end
489 +    end
490 +  end
491 +  object Label13: TLabel
492 +    Left = 456
493 +    Height = 15
494 +    Top = 14
495 +    Width = 79
496 +    Caption = 'Salary Range'
497 +    ParentColor = False
498 +  end
499 +  object SalaryRange: TComboBox
500 +    Left = 544
501 +    Height = 25
502 +    Top = 8
503 +    Width = 272
504 +    ItemHeight = 0
505 +    ItemIndex = 0
506 +    Items.Strings = (
507 +      'None Specified'
508 +      'Below $40,000'
509 +      'Between $40,000 and $100,000'
510 +      'Above $100,000'
511 +    )
512 +    OnCloseUp = BeforeDateChange
513 +    Style = csDropDownList
514 +    TabOrder = 6
515 +    Text = 'None Specified'
516    end
517    object IBDatabase1: TIBDatabase
518 <    Connected = True
96 <    AfterConnect = IBDatabase1AfterConnect
97 <    BeforeDisconnect = IBDatabase1BeforeDisconnect
518 >    Connected = False
519      AllowStreamedConnected = False
520      DatabaseName = 'employee'
521      Params.Strings = (
# Line 104 | Line 525 | object Form1: TForm1
525      DefaultTransaction = IBTransaction1
526      IdleTimer = 0
527      TraceFlags = []
528 <    left = 672
529 <    top = 224
528 >    left = 832
529 >    top = 168
530    end
531    object IBTransaction1: TIBTransaction
532      Active = False
# Line 115 | Line 536 | object Form1: TForm1
536        'rec_version'
537        'nowait'
538      )
539 <    left = 672
540 <    top = 256
539 >    left = 872
540 >    top = 168
541 >  end
542 >  object EmployeeSource: TDataSource
543 >    DataSet = Employees
544 >    left = 832
545 >    top = 336
546 >  end
547 >  object ActionList1: TActionList
548 >    left = 832
549 >    top = 416
550 >    object AddEmployee: TAction
551 >      Caption = 'Add'
552 >      OnExecute = AddEmployeeExecute
553 >    end
554 >    object EditEmployee: TAction
555 >      Caption = 'Edit'
556 >      OnExecute = EditEmployeeExecute
557 >      OnUpdate = EditEmployeeUpdate
558 >    end
559 >    object DeleteEmployee: TAction
560 >      Caption = 'Delete'
561 >      OnExecute = DeleteEmployeeExecute
562 >      OnUpdate = EditEmployeeUpdate
563 >    end
564 >    object SaveChanges: TAction
565 >      Caption = 'Save'
566 >      OnExecute = SaveChangesExecute
567 >      OnUpdate = SaveChangesUpdate
568 >    end
569 >    object CancelChanges: TAction
570 >      Caption = 'Cancel'
571 >      OnExecute = CancelChangesExecute
572 >      OnUpdate = SaveChangesUpdate
573 >    end
574 >    object SelectDept: TAction
575 >      Caption = '...'
576 >      OnExecute = SelectDeptExecute
577 >    end
578 >  end
579 >  object CountrySource: TDataSource
580 >    DataSet = Countries
581 >    left = 832
582 >    top = 296
583    end
584 <  object IBQuery1: TIBQuery
584 >  object TotalsQuery: TIBQuery
585      Database = IBDatabase1
586      Transaction = IBTransaction1
587 <    AfterDelete = IBQuery1AfterDelete
125 <    AfterOpen = IBQuery1AfterOpen
126 <    BeforeClose = IBQuery1BeforeClose
127 <    OnDeleteError = IBQuery1PostError
128 <    OnPostError = IBQuery1PostError
587 >    BeforeOpen = EmployeesBeforeOpen
588      BufferChunks = 1000
589      CachedUpdates = False
590      GenerateParamNames = False
591      GeneratorField.ApplyOnEvent = gaeOnNewRecord
592      SQL.Strings = (
593 <      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME From EMPLOYEE A'
594 <      'Order by LAST_NAME'
593 >      'Select sum(Salary) as TotalSalaries'
594 >      'From EMPLOYEE'
595      )
596      Params = <>
597 <    UpdateObject = IBUpdateSQL1
598 <    AfterTransactionEnd = IBQuery1AfterTransactionEnd
599 <    left = 672
597 >    left = 872
598 >    top = 376
599 >    object TotalsQueryTOTALSALARIES: TIBBCDField
600 >      DisplayWidth = 18
601 >      FieldKind = fkData
602 >      FieldName = 'TOTALSALARIES'
603 >      Index = 0
604 >      LookupCache = False
605 >      ProviderFlags = [pfInUpdate, pfInWhere]
606 >      ReadOnly = False
607 >      Required = False
608 >      OnGetText = EmployeesSALARYGetText
609 >      Precision = 18
610 >      Currency = False
611 >      MaxValue = 0
612 >      MinValue = 0
613 >      Size = 2
614 >    end
615 >  end
616 >  object TotalsSource: TDataSource
617 >    DataSet = TotalsQuery
618 >    left = 832
619 >    top = 376
620 >  end
621 >  object Employees: TIBDataSet
622 >    Database = IBDatabase1
623 >    Transaction = IBTransaction1
624 >    AfterDelete = EmployeesAfterDelete
625 >    AfterEdit = EmployeesAfterDelete
626 >    AfterInsert = EmployeesAfterInsert
627 >    AfterOpen = EmployeesAfterOpen
628 >    AfterPost = EmployeesAfterPost
629 >    AfterScroll = EmployeesAfterScroll
630 >    BeforeClose = EmployeesBeforeClose
631 >    BeforeOpen = EmployeesBeforeOpen
632 >    BufferChunks = 1000
633 >    CachedUpdates = False
634 >    DeleteSQL.Strings = (
635 >      'Delete From EMPLOYEE A'
636 >      'Where A.EMP_NO = :EMP_NO'
637 >    )
638 >    InsertSQL.Strings = (
639 >      'Insert Into EMPLOYEE(EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, HIRE_DATE, DEPT_NO, JOB_CODE, JOB_GRADE, JOB_COUNTRY, SALARY)'
640 >      'Values(:EMP_NO, :FIRST_NAME, :LAST_NAME, :PHONE_EXT, :HIRE_DATE, :DEPT_NO, :JOB_CODE, :JOB_GRADE, :JOB_COUNTRY, :SALARY)'
641 >    )
642 >    RefreshSQL.Strings = (
643 >      'with recursive Depts As ('
644 >      'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT  as VarChar(256)) as DEPT_PATH,'
645 >      'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH'
646 >      'From DEPARTMENT Where HEAD_DEPT is NULL '
647 >      'UNION ALL'
648 >      'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, Depts.DEPT_PATH ||  '' / '' || DEPARTMENT as DEPT_PATH,'
649 >      'Depts.DEPT_KEY_PATH || '';'' || DEPT_NO as DEPT_KEY_PATH'
650 >      'From DEPARTMENT  '
651 >      'JOIN Depts On HEAD_DEPT = Depts.DEPT_NO'
652 >      ')'
653 >      ''
654 >      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, '
655 >      'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH'
656 >      'From EMPLOYEE A'
657 >      'JOIN Depts D On D.DEPT_NO = A.DEPT_NO'
658 >      'Where A.EMP_NO = :EMP_NO'
659 >    )
660 >    SelectSQL.Strings = (
661 >      'with recursive Depts As ('
662 >      'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, cast(DEPARTMENT  as VarChar(256)) as DEPT_PATH,'
663 >      'cast(DEPT_NO as VarChar(64)) as DEPT_KEY_PATH'
664 >      'From DEPARTMENT Where HEAD_DEPT is NULL '
665 >      'UNION ALL'
666 >      'Select DEPT_NO, DEPARTMENT, HEAD_DEPT, Depts.DEPT_PATH ||  '' / '' || DEPARTMENT as DEPT_PATH,'
667 >      'Depts.DEPT_KEY_PATH || '';'' || DEPT_NO as DEPT_KEY_PATH'
668 >      'From DEPARTMENT  '
669 >      'JOIN Depts On HEAD_DEPT = Depts.DEPT_NO'
670 >      ')'
671 >      ''
672 >      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, '
673 >      'A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME, D.DEPT_PATH, D.DEPT_KEY_PATH'
674 >      'From EMPLOYEE A'
675 >      'JOIN Depts D On D.DEPT_NO = A.DEPT_NO'
676 >    )
677 >    ModifySQL.Strings = (
678 >      'Update EMPLOYEE A Set '#13#10'  A.DEPT_NO = :DEPT_NO,'#13#10'  A.FIRST_NAME = :FIRST_NAME,'#13#10'  A.HIRE_DATE = :HIRE_DATE,'#13#10'  A.JOB_CODE = :JOB_CODE,'#13#10'  A.JOB_COUNTRY = :JOB_COUNTRY,'#13#10'  A.JOB_GRADE = :JOB_GRADE,'#13#10'  A.LAST_NAME = :LAST_NAME,'#13#10'  A.PHONE_EXT = :PHONE_EXT,'#13#10'  A.SALARY = :SALARY'
679 >      'Where A.EMP_NO = :OLD_EMP_NO'
680 >    )
681 >    GeneratorField.Generator = 'EMP_NO_GEN'
682 >    GeneratorField.Field = 'EMP_NO'
683 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
684 >    GenerateParamNames = False
685 >    AfterTransactionEnd = EmployeesAfterTransactionEnd
686 >    left = 872
687      top = 336
688 <    object IBQuery1EMP_NO: TSmallintField
688 >    object EmployeesEMP_NO: TSmallintField
689        DisplayWidth = 10
690        FieldKind = fkData
691        FieldName = 'EMP_NO'
# Line 149 | Line 695 | object Form1: TForm1
695        ReadOnly = False
696        Required = True
697      end
698 <    object IBQuery1FIRST_NAME: TIBStringField
698 >    object EmployeesFIRST_NAME: TIBStringField
699        DisplayWidth = 15
700        FieldKind = fkData
701        FieldName = 'FIRST_NAME'
# Line 160 | Line 706 | object Form1: TForm1
706        Required = True
707        Size = 15
708      end
709 <    object IBQuery1LAST_NAME: TIBStringField
709 >    object EmployeesLAST_NAME: TIBStringField
710        DisplayWidth = 20
711        FieldKind = fkData
712        FieldName = 'LAST_NAME'
# Line 170 | Line 716 | object Form1: TForm1
716        ReadOnly = False
717        Required = True
718      end
719 <    object IBQuery1PHONE_EXT: TIBStringField
719 >    object EmployeesPHONE_EXT: TIBStringField
720 >      Alignment = taRightJustify
721        DisplayWidth = 4
722        FieldKind = fkData
723        FieldName = 'PHONE_EXT'
# Line 181 | Line 728 | object Form1: TForm1
728        Required = False
729        Size = 4
730      end
731 <    object IBQuery1HIRE_DATE: TDateTimeField
731 >    object EmployeesHIRE_DATE: TDateTimeField
732        DisplayWidth = 10
733        FieldKind = fkData
734        FieldName = 'HIRE_DATE'
# Line 191 | Line 738 | object Form1: TForm1
738        ReadOnly = False
739        Required = True
740      end
741 <    object IBQuery1DEPT_NO: TIBStringField
741 >    object EmployeesDEPT_NO: TIBStringField
742        DisplayWidth = 3
743        FieldKind = fkData
744        FieldName = 'DEPT_NO'
# Line 202 | Line 749 | object Form1: TForm1
749        Required = True
750        Size = 3
751      end
752 <    object IBQuery1JOB_CODE: TIBStringField
752 >    object EmployeesJOB_CODE: TIBStringField
753        DisplayWidth = 5
754        FieldKind = fkData
755        FieldName = 'JOB_CODE'
# Line 211 | Line 758 | object Form1: TForm1
758        ProviderFlags = [pfInUpdate, pfInWhere]
759        ReadOnly = False
760        Required = True
761 +      OnChange = EmployeesJOB_CODEChange
762        Size = 5
763      end
764 <    object IBQuery1JOB_GRADE: TSmallintField
764 >    object EmployeesJOB_GRADE: TSmallintField
765        DisplayWidth = 10
766        FieldKind = fkData
767        FieldName = 'JOB_GRADE'
# Line 222 | Line 770 | object Form1: TForm1
770        ProviderFlags = [pfInUpdate, pfInWhere]
771        ReadOnly = False
772        Required = True
773 +      OnChange = EmployeesJOB_GRADEChange
774      end
775 <    object IBQuery1JOB_COUNTRY: TIBStringField
775 >    object EmployeesJOB_COUNTRY: TIBStringField
776        DisplayWidth = 15
777        FieldKind = fkData
778        FieldName = 'JOB_COUNTRY'
# Line 234 | Line 783 | object Form1: TForm1
783        Required = True
784        Size = 15
785      end
786 <    object IBQuery1FULL_NAME: TIBStringField
786 >    object EmployeesSALARY: TIBBCDField
787 >      DisplayWidth = 18
788 >      FieldKind = fkData
789 >      FieldName = 'SALARY'
790 >      Index = 9
791 >      LookupCache = False
792 >      ProviderFlags = [pfInUpdate, pfInWhere]
793 >      ReadOnly = False
794 >      Required = True
795 >      OnGetText = EmployeesSALARYGetText
796 >      Precision = 18
797 >      Currency = False
798 >      MaxValue = 0
799 >      MinValue = 0
800 >      Size = 2
801 >    end
802 >    object EmployeesFULL_NAME: TIBStringField
803        DisplayWidth = 37
804        FieldKind = fkData
805        FieldName = 'FULL_NAME'
806 <      Index = 9
806 >      Index = 10
807        LookupCache = False
808        ProviderFlags = [pfInUpdate, pfInWhere]
809        ReadOnly = True
810        Required = False
811        Size = 37
812      end
813 <    object IBQuery1SALARY: TIBBCDField
814 <      DisplayWidth = 18
813 >    object EmployeesDEPT_PATH: TIBStringField
814 >      DisplayWidth = 256
815        FieldKind = fkData
816 <      FieldName = 'SALARY'
817 <      Index = 10
816 >      FieldName = 'DEPT_PATH'
817 >      Index = 11
818        LookupCache = False
819        ProviderFlags = [pfInUpdate, pfInWhere]
820        ReadOnly = False
821        Required = True
822 <      Precision = 18
823 <      Currency = False
824 <      MaxValue = 0
825 <      MinValue = 0
826 <      Size = 2
822 >      Size = 256
823 >    end
824 >    object EmployeesDEPT_KEY_PATH: TIBStringField
825 >      DisplayWidth = 64
826 >      FieldKind = fkData
827 >      FieldName = 'DEPT_KEY_PATH'
828 >      Index = 12
829 >      LookupCache = False
830 >      ProviderFlags = [pfInUpdate, pfInWhere]
831 >      ReadOnly = False
832 >      Required = True
833 >      Size = 64
834      end
835    end
836 <  object Datasource1: TDataSource
837 <    DataSet = IBQuery1
838 <    left = 672
836 >  object Countries: TIBQuery
837 >    Database = IBDatabase1
838 >    Transaction = IBTransaction1
839 >    BeforeOpen = CountriesBeforeOpen
840 >    BufferChunks = 1000
841 >    CachedUpdates = False
842 >    GenerateParamNames = False
843 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
844 >    SQL.Strings = (
845 >      'Select A.COUNTRY, A.CURRENCY From COUNTRY A'
846 >      'JOIN JOB J On J.JOB_COUNTRY = A.COUNTRY'
847 >      'Where J.JOB_CODE = :JOB_CODE and J.JOB_GRADE = :JOB_GRADE'
848 >      'Order by 1'
849 >    )
850 >    Params = <    
851 >      item
852 >        DataType = ftUnknown
853 >        Name = 'JOB_CODE'
854 >        ParamType = ptInput
855 >      end    
856 >      item
857 >        DataType = ftUnknown
858 >        Name = 'JOB_GRADE'
859 >        ParamType = ptInput
860 >      end>
861 >    left = 872
862      top = 296
863 +    ParamData = <    
864 +      item
865 +        DataType = ftUnknown
866 +        Name = 'JOB_CODE'
867 +        ParamType = ptInput
868 +      end    
869 +      item
870 +        DataType = ftUnknown
871 +        Name = 'JOB_GRADE'
872 +        ParamType = ptInput
873 +      end>
874    end
875 <  object ActionList1: TActionList
876 <    left = 672
877 <    top = 376
878 <    object AddEmployee: TAction
273 <      Caption = 'Add'
274 <      OnExecute = AddEmployeeExecute
275 <    end
276 <    object EditEmployee: TAction
277 <      Caption = 'Edit'
278 <      OnExecute = EditEmployeeExecute
279 <      OnUpdate = EditEmployeeUpdate
280 <    end
281 <    object DeleteEmployee: TAction
282 <      Caption = 'Delete'
283 <      OnExecute = DeleteEmployeeExecute
284 <      OnUpdate = EditEmployeeUpdate
285 <    end
286 <    object SaveChanges: TAction
287 <      Caption = 'Save'
288 <      OnExecute = SaveChangesExecute
289 <      OnUpdate = SaveChangesUpdate
290 <    end
291 <    object CancelChanges: TAction
292 <      Caption = 'Cancel'
293 <      OnExecute = CancelChangesExecute
294 <      OnUpdate = SaveChangesUpdate
295 <    end
875 >  object JobCodeSource: TDataSource
876 >    DataSet = JobCodes
877 >    left = 832
878 >    top = 256
879    end
880 <  object IBUpdateSQL1: TIBUpdateSQL
881 <    RefreshSQL.Strings = (
882 <      'Select A.EMP_NO, A.FIRST_NAME, A.LAST_NAME, A.PHONE_EXT, A.HIRE_DATE, A.DEPT_NO, A.JOB_CODE, A.JOB_GRADE, A.JOB_COUNTRY, A.SALARY, A.FULL_NAME From EMPLOYEE A'
883 <      'Where A.EMP_NO = :EMP_NO'
880 >  object JobCodes: TIBQuery
881 >    Database = IBDatabase1
882 >    Transaction = IBTransaction1
883 >    BeforeOpen = JobCodesBeforeOpen
884 >    BufferChunks = 1000
885 >    CachedUpdates = False
886 >    GenerateParamNames = False
887 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
888 >    SQL.Strings = (
889 >      'Select A.JOB_CODE, A.JOB_TITLE From JOB A'
890 >      'Where JOB_COUNTRY = :JOB_COUNTRY and JOB_GRADE = :JOB_GRADE'
891 >      'Order by Upper(JOB_TITLE)'
892      )
893 <    DeleteSQL.Strings = (
894 <      'Delete From EMPLOYEE A'
895 <      'Where A.EMP_NO = :EMP_NO'
893 >    Params = <    
894 >      item
895 >        DataType = ftUnknown
896 >        Name = 'JOB_COUNTRY'
897 >        ParamType = ptInput
898 >      end    
899 >      item
900 >        DataType = ftUnknown
901 >        Name = 'JOB_GRADE'
902 >        ParamType = ptInput
903 >      end>
904 >    left = 872
905 >    top = 256
906 >    ParamData = <    
907 >      item
908 >        DataType = ftUnknown
909 >        Name = 'JOB_COUNTRY'
910 >        ParamType = ptInput
911 >      end    
912 >      item
913 >        DataType = ftUnknown
914 >        Name = 'JOB_GRADE'
915 >        ParamType = ptInput
916 >      end>
917 >  end
918 >  object Depts: TIBQuery
919 >    Database = IBDatabase1
920 >    Transaction = IBTransaction1
921 >    BufferChunks = 1000
922 >    CachedUpdates = False
923 >    GenerateParamNames = False
924 >    GeneratorField.ApplyOnEvent = gaeOnNewRecord
925 >    SQL.Strings = (
926 >      'Select A.DEPT_NO, A.DEPARTMENT From DEPARTMENT A'
927 >      ''
928 >      'Order by Upper(Department)'
929      )
930 <    left = 712
931 <    top = 336
930 >    Params = <>
931 >    left = 872
932 >    top = 210
933 >  end
934 >  object DeptsSource: TDataSource
935 >    DataSet = Depts
936 >    left = 832
937 >    top = 208
938    end
939   end

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines