function LinkNodesByText(SG: TSimpleGraph;
const NodeText1, NodeText2: String): TGraphLink;
var
Node1, Node2: TGraphNode;
I: Integer;
begin
Result := nil;
Node1 := nil; Node2 := nil;
for I := 0 to SG.Objects.Count - 1 do
if SG.Objects[I] is TGraphNode then
begin
if (Node1 = nil) and (SG.Objects[I].Text = NodeText1) then
begin
Node1 := TGraphNode(SG.Objects[I]);
if Node2 <> nil then
Break;
end
else if (Node2 = nil) and (SG.Objects[I].Text = NodeText2) then
begin
Node2 := TGraphNode(SG.Objects[I]);
if Node1 <> nil then
Break;
end
end;
if (Node1 <> nil) and (Node2 <> nil) then
Result := TGraphLink.CreateNew(SG, Node1, [], Node2);
end;
var NewLink: TGraphLink;
NewLink := LinkNodesByText(SimpleGraph1, '1', '2');
if NewLink = nil then
ShowMessage('Error: Identified nodes could not be found.');
function LinkNodesByText(SG: TSimpleGraph;
const NodeText1, NodeText2: String): TGraphLink;
var
Node1, Node2: TGraphNode;
I: Integer;
begin
Result := nil;
Node1 := nil; Node2 := nil;
// Find the nodes identified by the specified text strings
for I := 0 to SG.Objects.Count - 1 do
if SG.Objects[I] is TGraphNode then
begin
if (Node1 = nil) and (SG.Objects[I].Text = NodeText1) then
begin
Node1 := TGraphNode(SG.Objects[I]);
if Node2 <> nil then
Break;
end
else if (Node2 = nil) and (SG.Objects[I].Text = NodeText2) then
begin
Node2 := TGraphNode(SG.Objects[I]);
if Node1 <> nil then
Break;
end
end;
// If both nodes are found
if (Node1 <> nil) and (Node2 <> nil) then
begin
// Find the link between the nodes
for I := 0 to SG.Objects.Count - 1 do
if SG.Objects[I] is TGraphLink then
with TGraphLink(SG.Objects[I]) do
begin
if ((Source = Node1) and (Target = Node2)) or
((Source = Node2) and (Target = Node1)) then
begin
Result := TGraphLink(SG.Objects[I]);
Break;
end;
end;
// If the link does not exist, create it
if Result = nil then
Result := TGraphLink.CreateNew(SG, Node1, [], Node2);
end;
end;
Return to DELPHI AREA Projects
Users browsing this forum: No registered users and 1 guest