ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/ibcontrols/IBTreeView.pas
(Generate patch)

Comparing ibx/trunk/ibcontrols/IBTreeView.pas (file contents):
Revision 80 by tony, Mon Jan 1 11:31:07 2018 UTC vs.
Revision 143 by tony, Fri Feb 23 12:11:21 2018 UTC

# Line 88 | Line 88 | type
88      FDataLink: TIBTreeViewDatalink;
89      FIBTreeViewControlLink: TIBTreeViewControlLink;
90      FHasChildField: string;
91 +    FImageIndexField: string;
92      FKeyField: string;
93 +    FSelectedIndexField: string;
94      FTextField: string;
95      FParentField: string;
96      FExpandNode: TTreeNode;
# Line 111 | Line 113 | type
113      procedure NodeUpdated(Node: TTreeNode);
114      procedure RecordChanged(Sender: TObject; Field: TField);
115      procedure SetHasChildField(AValue: string);
116 +    procedure SetImageIndexField(AValue: string);
117      procedure SetKeyField(AValue: string);
118 +    procedure SetSelectedIndexField(AValue: string);
119      procedure SetTextField(AValue: string);
120      procedure SetDataSource(AValue: TDataSource);
121      procedure SetParentField(AValue: string);
# Line 167 | Line 171 | type
171      property Images;
172      property Indent;
173      property HasChildField: string read FHasChildField write SetHasChildField;
174 +    property ImageIndexField: string read FImageIndexField write SetImageIndexField;
175 +    property SelectedIndexField: string read FSelectedIndexField write SetSelectedIndexField;
176      property KeyField: string read FKeyField write SetKeyField;
177      property MultiSelect;
178      property MultiSelectStyle;
# Line 360 | Line 366 | begin
366        DataSet.First;
367        while not DataSet.EOF do
368        begin
369 <        Node := Items.AddChild(FExpandNode,DataSet.FieldByName(TextField).AsString);
370 <        TIBTreeNode(Node).FKeyValue := DataSet.FieldByName(KeyField).AsVariant;
371 <        Node.HasChildren := (HasChildField = '') or (DataSet.FieldByName(HasChildField).AsInteger <> 0);
372 <        Inc(ChildCount);
369 >        if (FExpandNode = nil) or (TIBTreeNode(FExpandNode).KeyValue <> DataSet.FieldByName(KeyField).AsVariant) then
370 >        begin
371 >          Node := Items.AddChild(FExpandNode,DataSet.FieldByName(TextField).AsString);
372 >          if ImageIndexField <> '' then
373 >            Node.ImageIndex := DataSet.FieldByName(ImageIndexField).AsInteger;
374 >          if SelectedIndexField <> '' then
375 >            Node.SelectedIndex := DataSet.FieldByName(SelectedIndexField).AsInteger;
376 >          TIBTreeNode(Node).FKeyValue := DataSet.FieldByName(KeyField).AsVariant;
377 >          Node.HasChildren := (HasChildField = '') or (DataSet.FieldByName(HasChildField).AsInteger <> 0);
378 >          Inc(ChildCount);
379 >        end;
380          DataSet.Next
381        end;
382      finally
# Line 377 | Line 390 | end;
390  
391   procedure TIBTreeView.DataSetChanged(Sender: TObject);
392   begin
393 < //  Reinitialise
393 > //  Do nothing;
394   end;
395  
396   function TIBTreeView.GetDataSet: TDataSet;
# Line 446 | Line 459 | begin
459      end;
460    end
461    else
462 +  if assigned(Field) and (Field.FieldName = ImageIndexField) then
463 +  begin
464 +    Node := FindNode(DataSet.FieldByName(KeyField).AsVariant);
465 +    if assigned(Node) then
466 +    begin
467 +      FUpdating := true;
468 +      try
469 +        Node.ImageIndex := Field.AsInteger
470 +      finally
471 +        FUpdating := false
472 +      end;
473 +    end;
474 +  end
475 +  else
476    if assigned(Field) and (Field.FieldName = ParentField) then
477    begin
478      Node := FindNode(DataSet.FieldByName(KeyField).AsVariant);
# Line 475 | Line 502 | begin
502    Reinitialise
503   end;
504  
505 + procedure TIBTreeView.SetImageIndexField(AValue: string);
506 + begin
507 +  if FImageIndexField = AValue then Exit;
508 +  FImageIndexField := AValue;
509 +  Reinitialise
510 + end;
511 +
512   procedure TIBTreeView.SetKeyField(AValue: string);
513   begin
514    if FKeyField = AValue then Exit;
# Line 482 | Line 516 | begin
516    Reinitialise
517   end;
518  
519 + procedure TIBTreeView.SetSelectedIndexField(AValue: string);
520 + begin
521 +  if FSelectedIndexField = AValue then Exit;
522 +  FSelectedIndexField := AValue;
523 +  Reinitialise;
524 + end;
525 +
526   procedure TIBTreeView.SetTextField(AValue: string);
527   begin
528    if FTextField = AValue then Exit;
# Line 569 | Line 610 | begin
610        Parser.Add2WhereClause(GetRelationNameQualifier + '"' + FParentField + '" is null')
611      else
612      if assigned(FExpandNode) then
613 +    begin
614        Parser.Add2WhereClause(GetRelationNameQualifier + '"' + FParentField + '" = :IBX_PARENT_VALUE');
615 +      Parser.Add2WhereClause(GetRelationNameQualifier + '"' + FKeyField + '" = :IBX_PARENT_VALUE',true);
616 +    end;
617   end;
618  
619   procedure TIBTreeView.Added(Node: TTreeNode);
# Line 631 | Line 675 | begin
675      FExpandNode := Node;
676      DataSet.Active := false;
677      DataSet.Active := true;
678 <    if assigned(Selected) then
635 <      ScrollToNode(TIBTreeNode(Selected))
678 >    Selected := Node;
679    end;
680   end;
681  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines