|
[x]
Posted via EE Mobile
|
||
Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again. |
||
| Question |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: |
implementation
uses NewFolder, NewItem;
{$R *.dfm}
type
TItem = class(TObject)
private
fStatus: byte;
fParentID: integer;
fNodeText: string;
fID: integer;
fData: string;
fSaver: TAdoQuery;
fChanged: Boolean;
fSaveImmediate: boolean;
fIsNew: Boolean;
fImageIndex: integer;
procedure SetData(const Value: string);
procedure SetNodeText(const Value: string);
procedure SetParentID(const Value: integer);
procedure SetStatus(const Value: byte);
procedure SetImageIndex(const Value: integer);
protected
procedure Changed; dynamic;
public
constructor Create(aSaver: TAdoQuery; AId, AParentID: integer; AStatus: byte);
constructor LoadFromDataset(aSaver: TAdoQuery);
procedure BeginUpdate;
procedure EndUpdate;
procedure Delete;
procedure Save;
published
property ID: integer read fID write fID;
property ParentID: integer read fParentID write SetParentID;
property ImageIndex: integer read fImageIndex write SetImageIndex;
property Status: byte read FStatus write SetStatus;
property Data: string read fData write SetData;
property NodeText: string read fNodeText write SetNodeText;
end;
{ TItem }
procedure TItem.BeginUpdate;
begin
fSaveImmediate := false;
end;
(*---------------------------------------------------*)
procedure TItem.Changed;
begin
fChanged := True;
if fSaveImmediate then Save;
end;
(*---------------------------------------------------*)
constructor TItem.Create(aSaver: TAdoQuery; AId, AParentID: integer;
AStatus: byte);
begin
inherited Create;
fChanged := False;
fSaveImmediate := True;
fIsNew := True;
fSaver := aSaver;
fID := AID;
fParentID := AParentID;
fStatus := AStatus;
fNodeText := '';
fData := '';
end;
(*---------------------------------------------------*)
procedure TItem.Delete;
begin
//
end;
(*---------------------------------------------------*)
procedure TItem.EndUpdate;
begin
fSaveImmediate := True;
if fChanged then Save;
end;
(*---------------------------------------------------*)
constructor TItem.LoadFromDataset(aSaver: TAdoQuery);
begin
Create(aSaver, 0, 0, 0);
if not aSaver.IsEmpty then
begin
fId := aSaver.FieldByName('ID').AsInteger;
fParentID := aSaver.FieldByName('PARENT').AsInteger;
fStatus := aSaver.FieldByName('STATUS').AsInteger;
fNodeText := aSaver.FieldByName('NAME').AsString;
if aSaver.FindField('DATA') <> nil then
fData := aSaver.FieldByName('DATA').AsString;
fImageIndex := aSaver.FieldByName('IMAGE_INDEX').AsInteger;
fIsNew := False;
end;
end;
(*---------------------------------------------------*)
procedure TItem.Save;
begin
if fIsNew then
fSaver.SQL.Text :=
'insert into tree (parent, name, status, image_index, data) values (:v1, :v2, :v3, :v4, :v5)'
else
fSaver.SQL.Text :=
'update tree set parent = :v1, name = :v2, status = :v3, image_index = :v4, data = :v5 where id = :v6';
fSaver.Parameters.ParamByName('v1').Value := fparentID;
fSaver.Parameters.ParamByName('v2').Value := fNodeText;
fSaver.Parameters.ParamByName('v3').Value := fStatus;
fSaver.Parameters.ParamByName('v4').Value := fImageIndex;
fSaver.Parameters.ParamByName('v5').Value := fData;
if not fIsNew then
fSaver.Parameters.ParamByName('v6').Value := fId;
fSaver.ExecSQL;
if fIsNew then
begin
fSaver.SQL.Text :=
'SELECT id from tree order by id desc';
fSaver.Open;
fId := fSaver.FieldByName('ID').asInteger;
fSaver.Close;
fIsNew := False;
end;
fChanged := False;
end;
(*---------------------------------------------------*)
procedure TItem.SetData(const Value: string);
begin
if fData <> Value then
begin
fData := Value;
Changed;
end;
end;
(*---------------------------------------------------*)
procedure TItem.SetImageIndex(const Value: integer);
begin
if fImageIndex <> Value then
begin
fImageIndex := Value;
Changed;
end;
end;
(*---------------------------------------------------*)
procedure TItem.SetNodeText(const Value: string);
begin
if fNodeText <> Value then
begin
fNodeText := Value;
Changed;
end;
end;
(*---------------------------------------------------*)
procedure TItem.SetParentID(const Value: integer);
begin
if fParentId <> Value then
begin
fParentID := Value;
Changed;
end;
end;
(*---------------------------------------------------*)
procedure TItem.SetStatus(const Value: byte);
begin
if fStatus <> Value then
begin
FStatus := Value;
Changed;
end;
end;
(*---------------------------------------------------*)
procedure TForm1.AddItem(aText: string; aIndex: Integer; aParent: TTreeNode);
var n: TTreeNode;
data: TItem;
parentId: integer;
begin
parentId := 0;
if (aParent <> nil) and (TItem(aParent.Data) <> nil) then
parentId := TItem(aParent.Data).ID;
data := TItem.Create(AdoQuery1, -1, parentId, 0);
data.NodeText := aText;
data.ImageIndex := aIndex;
n := TTreeNode.Create(TreeView1.Items);
n.Text := data.NodeText;
n.ImageIndex := data.ImageIndex;
n.SelectedIndex := data.ImageIndex;
TreeView1.Items.AddNode(n, aParent, aText, data, naAddChild);
TreeView1.SetFocus;
TreeView1.Selected := n;
n.MakeVisible;
end;
(*---------------------------------------------------*)
procedure TForm1.FileBtnClick(Sender: TObject);
begin
if (TreeView1.Selected <> nil) and
(TreeView1.Selected.ImageIndex = 15) then
begin
if NewItemFrm.ShowModal = mrOk then
AddItem(NewItemFrm.eInput1.Text ,17,TreeView1.Selected);
end else
ShowMessage('You must select a folder first');
end;
(*---------------------------------------------------*)
function TForm1.findNode(t: TTreeView; id: integer): TTreeNode;
var i:integer;
begin
i:=0;
while (i<t.items.count) and (TItem(t.items[i].data).ID<>id) do
inc(i);
if i<t.items.count then result:=t.items[i]
else result:=nil;
end;
(*---------------------------------------------------*)
procedure TForm1.FolderBtnClick(Sender: TObject);
begin
if (TreeView1.Selected <> nil) and
(TreeView1.Selected.ImageIndex = 15) or
(TreeView1.Selected.ImageIndex = 18) then
begin
if (NewFolderFrm.ShowModal = mrOk ) then
AddItem(NewFolderFrm.eInput2.Text ,15,TreeView1.Selected);
end else
ShowMessage('You must select a folder first');
end;
(*---------------------------------------------------*)
procedure TForm1.FormCreate(Sender: TObject);
var
conn_str:string;
begin
conn_str:='provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=';
conn_str:=conn_str+IncludeTrailingPathDelimiter(ExtractFilePath(Application.Exename));
conn_str:=conn_str+'Root.pkd;';
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:=conn_str;
ADOConnection1.Connected:=True;
end;
(*---------------------------------------------------*)
procedure TForm1.loadtree(t: TTreeView);
var
p, n: TTreeNode;
data: TItem;
begin
t.Items.Clear;
ADOQuery1.SQL.Text := 'select * from tree order by parent asc';
ADoQuery1.Open;
while not ADoQuery1.Eof do
begin
data := TItem.LoadFromDataset(AdoQuery1);
p := FindNode(t, data.ParentID);
n := t.items.AddChildObject(p, data.NodeText, data);
n.ImageIndex := data.ImageIndex;
n.SelectedIndex := data.ImageIndex;
AdoQuery1.Next;
end;
AdoQuery1.Close;
end;
(*---------------------------------------------------*)
procedure TForm1.Open1Click(Sender: TObject);
begin
loadTree(treeview1);
end;
(*---------------------------------------------------*)
procedure TForm1.saveNode(n: TTreeNode);
var i, aParent: integer;
item: TItem;
begin
item := TItem(n.Data);
if item <> nil then
begin
item.BeginUpdate;
try
Item.NodeText := n.Text;
aParent := 0;
if (n.Parent <> nil) and (TItem(n.Parent.Data) <> nil) then
aParent := TItem(n.Parent.Data).ID;
Item.ParentID := aParent;
Item.ImageIndex := n.ImageIndex;
finally
Item.EndUpdate;
end;
end;
for i := 0 to n.Count-1 do SaveNode(n.Item[i]);
end;
(*---------------------------------------------------*)
procedure TForm1.savetree(t: ttreeview);
var n: TTreeNode;
begin
n := t.items.getFirstNode;
while n <> nil do
begin
SaveNode(n);
n := n.getNextSibling;
end;
end;
(*---------------------------------------------------*)
procedure TForm1.Save1Click(Sender: TObject);
begin
savetree(treeview1);
end;
(*---------------------------------------------------*)
end.
|
Advertisement
| Hall of Fame |