В событии CustomTreeDraw делаем следующее
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 |
procedure TDBTreeView.DBTreeViewCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); var NodeID:integer; qIsFolder:TFdQuery; DBConnectionLocal:TDBConnectionBPL; SQLQueriesLocal:TSQLQueries; idField:string; IsFolderField:string; DBNamePlusTable:string; begin //Создание DBConnectionLocal:=TDBConnectionBPL.Create(Self); qIsFolder:=TFdQuery.Create(Self); // SQLQueriesLocal:=TSQLQueries.Create(Self); qIsFolder.Connection:=DBConnectionLocal.FDConnection; //-------------------СТРОИМ ЗАПРОС ЛОКАЛЬНО------------------------------------- //так как через FSQLQueries в данном случае не срабатывало //Присвоение полей и переменных idField:=Self.DBTreeViewTable.id; isFolderField:=Self.DBTreeViewTable.IsFolder; DBNamePlusTable:= '`' +DBTreeViewGlobal.DBTreeViewConnParams.DataBase +'`'+'.'+'`' +DBTreeViewGlobal.DBTreeViewTable.TableName+'`'; // Построение самого запроса qIsFolder.SQL.Text:= 'SELECT '+idField+','+isFolderField+' FROM '+DBNamePlusTable+';'; NodeID:=integer(Node.Data^); with qIsFolder do begin Open(); // showmessage(IsFolderField+' '+idField); if Locate(idField,NodeId,[])=true then begin // showmessage('Здесь'); if (FieldByName(IsFolderField).AsBoolean=True) and (Node.Expanded) then begin Node.ImageIndex:=2; Node.SelectedIndex:=2 end else if FieldByName(IsFolderField).AsBoolean=True then begin Node.ImageIndex:=1; Node.SelectedIndex:=1; end else Node.ImageIndex:=0; end; Close(); end; //Освобождение FreeAndNil(qIsFolder); FreeAndNil(DBConnectionLocal); end; |