-
MY PROJECTS
-
Recent Posts
- SpringBoot.Making our first starter and autoconfiguration
- Spring. Creating main annotation to start business logic
- Spring.Reading from properties file
- Spring.How to define spring version inside springBoot ?
- SpringBoot App inside Docker
- Kafka.FirstExperience
- Docker.MySql and Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0
- Gradle.Tips
- Spring.AppConfig
- Leetcode.Best-time-to-buy-and-sell-stock
- LeetCode.ClimbStairs.Fibbonacci
- Leetcode.Roman-to-integer
- LeetCode.Palindrome-number
- Java.DesignPatterns.Lightweight
- Java.DesignPatterns.Proxy
- Java.DesignPatterns.Facade
- Java.DesignPatterns.Composite
- Java.DesignPatterns.Bridge
- Java. Strange OOP thing
- Java.Classpath
Categories
- Aptana
- Azure
- C#
- DataSnap
- DBExpress
- Delphi
- Delphi и сети
- Delphi. Язык программирования
- ExtJS
- FastReport
- FireDAC
- FireMonkey
- GIT
- ICS
- IDE
- IIS
- Indy
- InnoSetup
- javascript
- jQuery
- JSON
- LiveBindings
- MSHTML
- MySQL
- PHP
- REST
- Ribbons
- SMS
- SQL инструкции
- SVN
- TRichView
- UniGui
- WebBroker
- WinAPI
- Windows
- Алгоритмы
- Без рубрики
- Деревья
- Ищу ответ
- Компонентостроение
- Мои компоненты
- Начальный уровень
- Обработка исключений
- Парсинг
- Потоки(Threads)
- Регулярные выражения
- Тестирование приложений
Daily Archives: 09.05.2016
Delphi.DBTreeView своими руками. Основной модуль компонента
Основной модуль компонента
Posted in Delphi, Компонентостроение
Comments Off on Delphi.DBTreeView своими руками. Основной модуль компонента
Delphi. DBTreeView. Модуль Etcetra
Это модуль с методами, которые не вошли в другие методы
Posted in Delphi, Компонентостроение
Comments Off on Delphi. DBTreeView. Модуль Etcetra
Delphi. DBTreeView. Загрузка картинок проекта из ресурсов
Добавляем ресурсы в проект Project > Resources and Images Модуль загрузки из ресурсов
Posted in Delphi, Компонентостроение
Comments Off on Delphi. DBTreeView. Загрузка картинок проекта из ресурсов
Delphi.DBTreeView своими руками.Прорисовка картинок папок и файлов
В событии CustomTreeDraw делаем следующее
Posted in Delphi, Компонентостроение
Comments Off on Delphi.DBTreeView своими руками.Прорисовка картинок папок и файлов
Delphi. DBTreeView. Обработка CheckBoxes
В главном модуле компонента при обработке события onClick
Posted in Delphi, Компонентостроение
Comments Off on Delphi. DBTreeView. Обработка CheckBoxes
Delphi. DBTreeView своими руками. Дополнительный модуль uSQLQueries
Дополнительный модуль, в котором сосредоточены основные SQL запросы. Имена некоторых полей берутся из ObjectInspector. Из специфичного для MySQL инструкция Insert… Select… для копирования узлов
Posted in Delphi, Компонентостроение
Comments Off on Delphi. DBTreeView своими руками. Дополнительный модуль uSQLQueries
Delphi. DBTreeView своими руками. Поиск
Модуль поиска по имени узла в компоненте выглядит следующим образом
Posted in Delphi, Компонентостроение
Comments Off on Delphi. DBTreeView своими руками. Поиск
Delphi.DBTreeView своими руками.Вставка скопированных, вырезанных узлов
Здесь самая большая сложность – восстановление структуры вставленных узлов в процедуре Structuring. В главном модуле компонента код выглядит следующим образом. Здесь у нас 2 потока должны работать по очереди, поэтому используем синхронизацию.
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 |
//----------------------Вставка выбранных узлов----------------------------------------------------- procedure TDBTreeView.PasteNodes; {Здесь можно увидеть наглядный пример синхронизации потоков!!!} var PasteThread:TPasteThread; UpdateIndexesThread:TUpdateIndexesThread; Event:TEvent; IDSelected:integer; begin if not Assigned(FIDList) then FIDList:=TStringList.Create; //Защита, если список пустой, то выходим if FIDList.Count=0 then exit; //Если копируем родителя в ребенка, тоже выходим IDSelected:=integer(Self.Selected.Data^); if FIDList.IndexOf(IDSelected.ToString())<>-1 then begin raise Exception.Create('Начальный элемент содержит конечный.Вставка невозможна'); exit; end; Event:=TEvent.Create( nil, //Security Attributes true, //Manual Reset false,// Initial State '' ); //Event.ReSetEvent; // <<Вошли в событие //Запускаем поток копирования, передаем ссылки... Self.Items.BeginUpdate; PasteThread:=TPasteThread.Create(true);//true означает ручное управление потоком PasteThread.DBTreeView:=Self; //Передаем ссылку на дерево PasteThread.Event:=Event; //Передали ссылку на событие снаружи PasteThread.MyCreate; // Создаем внутренние переменные потока PasteThread.IDList.Assign(FIDList); PasteThread.IDofCopiedNode:=FIDofCopiedNode; PasteThread.Cut:=FCut; PasteThread.Start; PasteThread.FreeOnTerminate:=true; //Event.SetEvent; // << Вышли из события //if PasteThread.Finished then begin //Перенумерация индексов UpdateIndexesThread:=TUpdateIndexesThread.Create(true); UpdateIndexesThread.Event:=Event; UpdateIndexesThread.DBTreeView:=Self; UpdateIndexesThread.MyCreate; UpdateIndexesThread.Start; UpdateIndexesThread.FreeOnTerminate:=true; end; Self.Items.EndUpdate; FCut:=false; //Освобождение Event происходит внутри UpdateIndexesThread потока по ссылке //if Event<>nil then FreeAndNil( Event );// <<Так делать не надо, так как поток может // закончиться позже end; |
Posted in Delphi, Компонентостроение
Comments Off on Delphi.DBTreeView своими руками.Вставка скопированных, вырезанных узлов
Delphi.DBTreeView своими руками. Копирование, вырезка узлов
В главном модуле копирование, вырезка узлов выглядит следующим образом. FIDList это список (TStringList), в который мы собираем узлы для копирования и вырезки. Также используется модуль uSelectedOrChecked, он приведен ниже.
Posted in Delphi, Компонентостроение
Comments Off on Delphi.DBTreeView своими руками. Копирование, вырезка узлов
Delphi. DBTreeView. Поднятие, опускание узлов.
В главном модуле компонента поднятие опускание узлов выглядит следующим образом
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 |
//--------------------------------Поднятие, опускание узлов----------------------------------------- procedure TDBTreeView.NodeDown; var NodeUpDown:TNodeUpDown; begin try Screen.Cursor:=crSQLWait; //Do_Something NodeUpDown:=TNodeUpDown.Create(Self); NodeUpDown.DBTReeView:=Self; // << Передаем в поле экземпляра класса ссылку на себя NodeUpDown.NodeDown; finally Screen.Cursor:=crDefault; FreeAndNil(NodeUpDown); end; end; procedure TDBTreeView.NodeUp; var NodeUpDown:TNodeUpDown; begin try Screen.Cursor:=crSQLWait; //Do_Something NodeUpDown:=TNodeUpDown.Create(Self); NodeUpDown.DBTReeView:=Self; // << Передаем в поле экземпляра класса ссылку на себя NodeUpDown.NodeUp; finally Screen.Cursor:=crDefault; FreeAndNil(NodeUpDown); end; end; |
Сам модуль uNodeUpDown выглядит следующим образом
Posted in Delphi, Компонентостроение
Comments Off on Delphi. DBTreeView. Поднятие, опускание узлов.