{"id":247,"date":"2008-05-07T14:09:03","date_gmt":"2008-05-07T14:09:03","guid":{"rendered":"http:\/\/6teen.ru\/?p=110"},"modified":"2008-05-07T14:09:03","modified_gmt":"2008-05-07T14:09:03","slug":"9138","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=247","title":{"rendered":"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 ini-\u0444\u0430\u0439\u043b\u0430 \u0432 TTreeView"},"content":{"rendered":"<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 ini-\u0444\u0430\u0439\u043b\u0430 \u0432 TTreeView<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 ini-\u0444\u0430\u0439\u043b\u0430 \u0432 TTreeView\n\nprocedure LoadIniToTree(const FName: string; Tree: TTreeView);\nvar LS, LV: TStrings;\ni, j: integer;\nroot: TTreeNode;\nn: string;\np: PString;\nbegin\nTree.Items.Clear;  \/\/ \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u0434\u0435\u0440\u0435\u0432\u043e\nwith TIniFile.Create(FName) do  \/\/ \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b FName\ntry\nLS := TStringList.Create;  \/\/ \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0441\u0435\u043a\u0446\u0438\u0439\ntry\nReadSections(LS);          \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0441\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a\nLV := TStringList.Create;   \/\/ \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 \"\u0438\u043c\u044f=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\"\ntry\nfor i := 0 to LS.Count-1 do   \/\/ \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u043a\u0446\u0438\u0439...\nbegin\nLV.Clear;                   \/\/ \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a\nReadSectionValues(LS[i], LV);  \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440 \"\u0438\u043c\u044f=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\" \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u043a\u0446\u0438\u0438\nroot := Tree.Items.Add(nil, LS[i]); \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0443\u0437\u0435\u043b (\u0438\u043c\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0435\u043a\u0446\u0438\u0438)\nfor j := 0 to LV.Count-1 do    \/\/ \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0430\u0440 \"\u0438\u043c\u044f=\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\"...\nbegin\nn := LV.Names[j];  \/\/ \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \"\u0438\u043c\u044f\"\n\n\/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a root \u0443\u0437\u0435\u043b,\n\/\/ \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0441\u043f. \"\u0438\u043c\u044f\"\n\/\/ \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f Data = \"\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\"\nNew(p);\np^ := LV.Values[n];\nTree.Items.AddChildObject(root, n, p);\nend;\nend;\nfinally\nLV.Free;\nend;\nfinally\nLS.Free;\nend;\nfinally\nFree;  \/\/ \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 TIniFile\nend;\nend;\n\n\/\/ \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435:\n\nprocedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);\nbegin\nif (TreeView1.Selected <> nil) and (TreeView1.Selected.Parent <> nil) then\nbegin\nEdit1.Text := TreeView1.Selected.Text;\nEdit2.Text := String(TreeView1.Selected.Data^);\nend else\nbegin\nEdit1.Text := '';\nEdit2.Text := '';\nend;\nend;\n\n\/\/ \u041f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a:\n\nprocedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);\nbegin\nif Node.Data <> nil then\nDispose(PString(Node.Data));\nend;\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 ini-\u0444\u0430\u0439\u043b\u0430 \u0432 TTreeView<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[430,386],"tags":[534,591,727],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/247"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=247"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/247\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}