powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IDE Expert - лента невизуальных компонентов
99 сообщений из 99, показаны все 4 страниц
IDE Expert - лента невизуальных компонентов
    #37191933
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нибудь видел такой эксперт? Типа как в .NET - на форме только визуальные, а остальные в некоем listview снизу. Про Hide/Show nonvisual в GExperts знаю, но не то.

Если не найду, буду сам писать...
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192147
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Longneck, э...а зачем? :)
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192160
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, было бы удобно, сам мечтаю о том ,чтобы невизуальные компоненты не лежали прямо на форме. В эксперте GExperts есть специльная кнопка Hide/Show Non-visual. Я её вывел на панель инструментов и при её нажатии все невизульные компоненты скрываются. Очень удобно. Рекомендую.

...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192169
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но некоторые невизульные компоненты можно/нужно хранить в специальном TDataModule. Например те же FastReports или наборы данных с источниками данных.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192217
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Но некоторые невизульные компоненты можно/нужно хранить в специальном TDataModule...
А какие - нельзя?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192296
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно это потому, что на форме лежат вагоны невизуальных компонентов - больше 60 точно (не я их туда ложил). И датамодуль тут не поможет - желателен фильтруемый и сортируемый список в стиле listview. Чтобы иконки отображались, и там имя класса, имя компонента, таг. Кроме того, оттуда должен быть доступ к дизайн-меню компонента.

Разгребусь с делами, напишу. Ибо задрало.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192304
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Да, было бы удобно, сам мечтаю о том ,чтобы невизуальные компоненты не лежали прямо на форме.
Код: plaintext
Left :=  10000 
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192326
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Longneck...вагоны невизуальных компонентов - больше 60 точно...

Сложите их квадратом, 8 х 8. 60 штук должно поместиться.
В крайнем случае - 9 х 9. :)
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192337
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrX11Да, было бы удобно, сам мечтаю о том ,чтобы невизуальные компоненты не лежали прямо на форме.
Код: plaintext
Left :=  10000 

А как их потом вернуть? На форме они могут лежать сгруппированные по типам. А после такой группировки чёрт знает что получится )))
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192344
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11...
А как их потом вернуть?...
Вернуть чуть сложнее:
Код: plaintext
1.
Left :=  0 ;
Top :=  0 ;
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192445
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Красота ?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192500
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДX11...
А как их потом вернуть?...
Вернуть чуть сложнее:
Код: plaintext
1.
Left :=  0 ;
Top :=  0 ;


т.е. невозможно
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192512
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем красота. Нет возможности отобразить в режиме report и сортировать.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192571
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что сортировать, они и так по группам разбиты. Сортировать среди 10-15 элементов ? Мне такой функционал не нужен был, поэтому и не был реализован. Хотя сделать это - пара пустяков.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192582
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассуждения не с той стороны. Когда компоненты создаются сразу в группах то и так удобно. А когда они уже есть и их надо в группы собирать, разыскивая по форме то этого мало.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192853
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Drag&Drop прекрасно работает
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37192904
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда и чего тащить\бросать? Лежат стеной датасеты. Включить имена компонентов - их всё равно нельзя прочитать - налезают друг на друга. Найти в этой куче конкретный и перенести в категорию очень трудно - через бесконечный combobox object instector'а разве что. Короче это не совсем то.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37193251
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Longneck, проектировщику люлей навешай, просто ради удовольствия, а сам потихоньку разгребай дерьмецо...64 датасета, да еще на форме...
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37193471
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael LongneckНужно это потому, что на форме лежат вагоны невизуальных компонентов - больше 60 точно (не я их туда ложил). И датамодуль тут не поможет - желателен фильтруемый и сортируемый список в стиле listview. Чтобы иконки отображались, и там имя класса, имя компонента, таг. Кроме того, оттуда должен быть доступ к дизайн-меню компонента.
А Вы не думаете что при таком подходе туда все 600 компонентов запихнут? Ладно не будут они форму загромождать, а всякие там обработчики событий куда деть из кода? Проблема возникает при неправильном проектировании и тупом батонокидательстве. Стоит ли поощрять такой стиль?

Если разумно растаскивать тематически близкие компоненты по разным датамодулям, то разобраться можно совершенно спокойно и без списка и разместить по фэншую. Кроме удобства еще и модульность улучшается и повторное использование кода... Может во времена Delphi1 стоило вообще запретить кидать на форму некоторые компоненты, что б не злоупотребляли доверием, да кто ж знал...

Нечто подобное, в датамодулях делали RX-компоненты еще 19лохматомгоду. Т.е. на датамодуле слева отображается список датасетов. Я лично не проникся, ибо когда зашкаливает э-э-э... работоспособность некоторых кулхацкеров, то ни какой список не поможет.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37193483
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspb,

Если форма "mdi-child" датамодуль для хранения датасэтов не подойдет. Иначе все формы будут показывать одни и те-же данные))
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37193502
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael LongneckЛежат стеной датасеты.
А вы видите на картинке "стену" датасетов ?
Вы используете ActionList, Dataset ?
Как много Action, Field вы видите на форме ?
Точно также и у меня, все компоненты лежат на форме, только LEFT=10000 и их не видно, а управляются с помощью редактора (подобного редактору ActionList). В редакторе можно создавать группы, таскать компоненты по группам, создавать/удалять компоненты, показывать/прятать компоненты (Left = 50/10000).
Это не эксперт, это просто такой компонент на форме, который хранит список групп и кто в какой группе сидит. В Run-Time он ничего не делает, только в дизайнере.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37195244
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterroschinspb,

Если форма "mdi-child" датамодуль для хранения датасэтов не подойдет. Иначе все формы будут показывать одни и те-же данные)) Блин точно, что ж делать-то? Уйду в монастырь Не, на C# перехожу.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #37195386
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roschinspbчто ж делать-то?Создавать в рантайме, колега...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
IDE Expert - лента невизуальных компонентов
    #38247732
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поделитесь исходниками BrComponentList
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38247796
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38249163
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как выставить у не визуального компонента параметр LEFT
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38249502
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
var X: Word;
begin
   X := AComponent.DesignInfo;
   if X < 5000 then X := X + 10000 else X := X - 10000;
   AComponent.DesignInfo := MakeLong(X, 10);
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38249899
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrКрасота ?
Смотря на эту красоту появилось 2 вопроса:
1. Как ты вывел иконку компонента? Что-то не нашел я такого в ToolsApi.
2. Вот ты спрятал компонент. А обработку DblClick на нем? И Popupmenu его? Как вышел их этой ситуации?
Заранее спасибо.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38249985
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr
Код: pascal
1.
2.
3.
4.
5.
var X: Word;
begin
   X := AComponent.DesignInfo;
   if X < 5000 then X := X + 10000 else X := X - 10000;
   AComponent.DesignInfo := MakeLong(X, 10);


И вопрос вдогонку: как перерисовать форму при изменении DesignInfo компонента. Если изменять DesignInfo, то у меня реально на экране что-то изменяется только при нажатии кнопки "Сохранить".
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38250033
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg6619то у меня реально на экране что-то изменяется только при нажатии кнопки "Сохранить".
Так нажми её программно
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38250035
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DblClik - это вызов метода TComponentEditor.Edit
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38250436
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg66191. Как ты вывел иконку компонента? Что-то не нашел я такого в ToolsApi.
1. Узнал в каком пакете компонент (перебрал все загруженые пакеты IOTAPackageServices, а в них все компонтены)
2. Определил Handle пакета (GetModuleHandle)
3. Нашёл в пакете ресурс компонента (FindResource)
4. Загрузил в ImageList (который прицеплен к ListView) (LoadFromResourceName)
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251389
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что у меня получилось

http://www3.zippyshare.com/v/224875/file.html

В данной версии нет отображения иконки компонентов и обработки DblClick
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251393
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlDeveloper,

Исправил баг с установкой компонента

http://www3.zippyshare.com/v/42151702/file.html
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251394
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlDeveloper,

нафиг ты выкладываешь крошечный файл черт те куда?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251398
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlDeveloperAlDeveloper,

Исправил баг с установкой компонента

http://www3.zippyshare.com/v/42151702/file.html

Краткая инструкция
1 Кидаешь на форму TicNonVisualComponentEditor
2 Кликаеш по нему двойным щелчком мыши и пользуешся
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251399
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А куда его выкладывать, что первое нашел туда и выложил
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251407
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlDeveloperА куда его выкладывать, что первое нашел туда и выложил

тут в сообщении прикрепи
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251415
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выложил на внутреннее хранилище
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251418
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выложил на внутреннее хранилище
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251420
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlDeveloper,

1. просит vcljpg, длянафига? Закомментил, вроде отстал..
2. Где брать icFunctions?


У меня XE2..
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251423
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mvb,

icFunctions тоже не нужен, просто закомментировал.. Тестим..
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251439
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я выдернул компонент из сборки других внутренних компонентов, мог остаться мусор
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251445
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlDeveloper,

вроде работает.. Группы пока нельзя переименовывать? Еще было бы хорошо размеры и позицию редактора запоминать ..
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251454
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там еще нужно добавить условие отображение списка только не визуальных компонентов, подскажите как это сделать
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251505
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Позже добавлю настройку
1 изменения группы
2 мульти выделение
3 отображения иконки
4 сохранение позиции окна
5 DragAndDrop для изменение группы и позиции
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251665
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlDeveloper,

если в проекте используется визуальное наследование форм и коллекция изменяется в потомках, то компонент начинает выдавать что-то типа "error pointer" и IDE начинает глючить.. Сходу не разобрался, пока убрал ..
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38251755
dymka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlDeveloper, навскидку:

1. В список попадают также невизуальные компоненты, которые не имею иконки - колонки гридов, кнопки DevExpress итп...
2. Хочется какую-нибудь сортировку - по имени или по классу.
3. Убрать все/Показать все.
4. Не отображаются свойства компонента в OI.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38252310
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TicNonVisualComponentEditorDlg.FormShow(Sender: TObject);
var
  LComponent: TComponent;
  LComponentIndex: Integer;
  Idx: Integer;
begin
  Color := clWhite;
  pnConfigComponents.Align := alClient;
  pnGroupComponents.Align := alClient;

  for Idx := 0 to Collection.Count - 1 do
    Collection.Items[Idx].OnGroupNameChange := GroupNameChane;

  tvConfig.Items.GetFirstNode.Selected := True; // а если элементов нет ?
  tvConfigClick(nil);

  GroupNameChane(nil);
end;
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38252315
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем запоминать настоящие позиции ? Проще просто прибавлять/отнимать 10000. Получится X:334 или X:10334
Код: pascal
1.
2.
3.
4.
5.
6.
      item
        Component = ActionList1
        GroupName = 'Без группы'
        OriginalPosition.X = 344
        OriginalPosition.Y = 80
      end
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38252327
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще не работает
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38252353
mvb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TicNonVisualComponentEditorDlg.FormShow(Sender: TObject);
var
  LComponent: TComponent;
  LComponentIndex: Integer;
  Idx: Integer;
begin
  Color := clWhite;
  pnConfigComponents.Align := alClient;
  pnGroupComponents.Align := alClient;

  for Idx := 0 to Collection.Count - 1 do
    Collection.Items[Idx].OnGroupNameChange := GroupNameChane;

  tvConfig.Items.GetFirstNode.Selected := True; // а если элементов нет ?
  tvConfigClick(nil);

  GroupNameChane(nil);
end;

я этот момент тоже увидел и проверил на пустой форме - странно, но работает )
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38252366
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TicNonVisualComponentEditorDlg.FormShow(Sender: TObject);
var
  LComponent: TComponent;
  LComponentIndex: Integer;
  Idx: Integer;
begin
  Color := clWhite;
  pnConfigComponents.Align := alClient;
  pnGroupComponents.Align := alClient;

  for Idx := 0 to Collection.Count - 1 do
    Collection.Items[Idx].OnGroupNameChange := GroupNameChane;

  tvConfig.Items.GetFirstNode.Selected := True; // а если элементов нет ?
  tvConfigClick(nil);

  GroupNameChane(nil);
end;



Он всегда есть, это пункт "Настроить". По умолчанию делаю его активным
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38252367
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrЗачем запоминать настоящие позиции ? Проще просто прибавлять/отнимать 10000. Получится X:334 или X:10334
Код: pascal
1.
2.
3.
4.
5.
6.
      item
        Component = ActionList1
        GroupName = 'Без группы'
        OriginalPosition.X = 344
        OriginalPosition.Y = 80
      end



Хорошая идея, возьму во внимание
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38253401
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получайте обновленную версию компонента
Проблемы
1. Иногда глючит DragAndDrop
2. Не отображать невизуальные объекты других компонентов, например колонка cxGrid и тому подобное

С наследованием проблем не было, разрабатывал и тестировал компонент на Delphi 2007
Помогите кто может доработать оставшиеся проблем. По желанию можете добавить новый функционал.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38253404
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новые возможности
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38253405
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новые возможности
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38253478
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторяю ещё раз, валится ошибка
Код: pascal
1.
2.
3.
  //Делаем активной по умолчанию пункт "Настроить"
  N := tvConfig.Items.GetFirstNode;
  if Assigned(N) then N.Selected := True;
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38253480
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже не знаю что сказать
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38253484
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте ноды в Run-Time, а то не читаются с потока
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254472
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrДобавьте ноды в Run-Time, а то не читаются с потока

Проверь рантайм и еще на твоем скрине некорректно отображаются иконки объектов. Возможно это баг из за проблемы с обращением к первому пункту меню.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254476
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя зря я окно сделал модальным, не удобно в работе. Буду переделывать
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254510
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте ноды в Run-Time, ещё в 2 не читается
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254523
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Не ну тут все правильно
1. Гружу массив всех пакетов с компонентами и их хендлами CompImageIndex на этом этапе остается равным 0, так как нет смысла грузить все картинки всех компонентов,

Вызывается в событии Show
Код: pascal
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.
  //Инициализация списка установленных компонентов

  SetLength(FInstComp, 0);
  LPackSvcs := (BorlandIDEServices as IOTAPackageServices);
  for LPackIdx := 0 to LPackSvcs.PackageCount - 1 do
  begin
    LCompInfo.PackageName := LPackSvcs.PackageNames[LPackIdx];
    LCompInfo.PackageHandle := GetModuleHandle(PAnsiChar(LCompInfo.PackageName));

    for LCompIdx := 0 to LPackSvcs.ComponentCount[LPackIdx] - 1 do
    begin
      LCompInfo.CompClassName := LPackSvcs.ComponentNames[LPackIdx, LCompIdx];
      LCompInfo.CompImageHandle := FindResource(LCompInfo.PackageHandle, PAnsiChar(LCompInfo.CompClassName), RT_BITMAP);

      SetLength(FInstComp, Length(FInstComp) + 1);

      with FInstComp[Length(FInstComp) - 1] do
      begin
        PackageName := LCompInfo.PackageName;
        PackageHandle := LCompInfo.PackageHandle;
        CompClassName := LCompInfo.CompClassName;
        CompImageHandle := LCompInfo.CompImageHandle;
      end;
    end;
  end;



2. Загружаю список не визуальных компонентов которые имеются на форме и ищу к ним картинку выполняя процедуру ConfigComLoad

3. В ней прописана логика поиска картинки и дополнения данных массива инсталлированных компонентов индексов imCompImage для дальнейшего использования

Код: pascal
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.
  function InitComonentImage(AComponent: TComponent): Integer;
  var
    LClassRef: TClass;
    LClassInherited: TStringList;
    LBmp: TBitmap;
    LFirstClassIdx: Integer;
    i, j: Integer;
  begin
     Result := -1;

     LClassInherited := TStringList.Create;
     try
       //Инициализация списка наследования класса
       LClassRef := AComponent.ClassType;
       while LClassRef <> nil do
       begin
         LClassInherited.Add(LClassRef.ClassName) ;
         LClassRef := LClassRef.ClassParent;
       end;

       LFirstClassIdx := -1;

       //Поиск иконки компонента
       LBmp := TBitmap.Create;
       try
         for i := 0 to LClassInherited.Count - 1 do
           for j := 0 to Length(FInstComp) - 1 do
             with FInstComp[j] do
             begin
               if UpperCase(CompClassName) = UpperCase(LClassInherited[i]) then
               begin
                 if LFirstClassIdx = -1 then
                   LFirstClassIdx := j;

                 if CompImageHandle <> 0 then
                 begin
                   try
                     LBmp.LoadFromResourceName(PackageHandle, UpperCase(CompClassName));
                     imCompImage.AddMasked(LBmp, clFuchsia);

                     CompImageIndex := imCompImage.Count - 1;
                     FInstComp[LFirstClassIdx].CompImageIndex := CompImageIndex;

                     Result := CompImageIndex;

                     Break;
                   except
                   end;
                 end;
               end;
             end;

       finally
         LBmp.Free;
       end;

     finally
       LClassInherited.Free;
     end;
  end;



4. Инициализация списка наследования классов необходимо для того чтоб если нет картинки на данный компонент, то ищет иконку предка

Код: pascal
1.
2.
3.
4.
5.
6.
7.
       //Инициализация списка наследования класса
       LClassRef := AComponent.ClassType;
       while LClassRef <> nil do
       begin
         LClassInherited.Add(LClassRef.ClassName) ;
         LClassRef := LClassRef.ClassParent;
       end;



Создание списка наследования взял тут Получить название класса предка
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254532
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приложенном скрине видно что CompImageHandle = 0
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254682
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

На этом этапе он и будет равен нулю, проверь в событии Show после выполнения процедуры ConfigComLoad
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254715
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не видите куда я вставил код ?
Код: pascal
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.
LFirstClassIdx := -1;

// S := TStringList.Create;
// for j := 0 to Length(FInstComp) - 1 do
//      S.Add(IntToStr(FInstComp[j].CompImageHandle));
// S.SaveToFile('D:\1.txt');
// Если здесь  CompImageHandle = 0, то
       //Поиск иконки компонента
       LBmp := TBitmap.Create;
       try
         for i := 0 to LClassInherited.Count - 1 do
           for j := 0 to Length(FInstComp) - 1 do
             with FInstComp[j] do
             begin
               if UpperCase(CompClassName) = UpperCase(LClassInherited[i]) then
               begin
                 if LFirstClassIdx = -1 then
                   LFirstClassIdx := j;

                 if CompImageHandle <> 0 then // то здесь никакой иконки нет
                 begin
                   try
                     LBmp.LoadFromResourceName(PackageHandle, UpperCase(CompClassName));
                     imCompImage.AddMasked(LBmp, clFuchsia);

                     CompImageIndex := imCompImage.Count - 1;
                     FInstComp[LFirstClassIdx].CompImageIndex := CompImageIndex;

                     Result := CompImageIndex;

                     Break;
                   except
                   end;
                 end;
               end;
             end;

       finally
         LBmp.Free;
       end;

     finally
       LClassInherited.Free;
     end;
  end;



И вообще, зачем такая сложность ? Зачем хранить 100 одинаковых иконок, для 100 одинаковых компонентов. Не проще ли каждую иконку хранить в одном экземпляре ?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254793
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Согласен, добавлю проверку была ли инициализирована картинка для класса ранее
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254914
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую завести TStringList, в котором хранить названия картинок(тип компонента), хранящихся в TImageList, а получать картинки в OnGetImageIndex, по такому типу
Код: pascal
1.
2.
3.
4.
5.
procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
  Node.ImageIndex := IconStringList.IndexOf(TComponent(Node.Data).ClassName);
  if Node.ImageIndex := -1 then Node.ImageIndex := GetIconFromResource(TComponent(Node.Data).ClassName)
end;
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254935
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrВы не видите куда я вставил код ?
Код: pascal
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.
LFirstClassIdx := -1;

// S := TStringList.Create;
// for j := 0 to Length(FInstComp) - 1 do
//      S.Add(IntToStr(FInstComp[j].CompImageHandle));
// S.SaveToFile('D:\1.txt');
// Если здесь  CompImageHandle = 0, то
       //Поиск иконки компонента
       LBmp := TBitmap.Create;
       try
         for i := 0 to LClassInherited.Count - 1 do
           for j := 0 to Length(FInstComp) - 1 do
             with FInstComp[j] do
             begin
               if UpperCase(CompClassName) = UpperCase(LClassInherited[i]) then
               begin
                 if LFirstClassIdx = -1 then
                   LFirstClassIdx := j;

                 if CompImageHandle <> 0 then // то здесь никакой иконки нет
                 begin
                   try
                     LBmp.LoadFromResourceName(PackageHandle, UpperCase(CompClassName));
                     imCompImage.AddMasked(LBmp, clFuchsia);

                     CompImageIndex := imCompImage.Count - 1;
                     FInstComp[LFirstClassIdx].CompImageIndex := CompImageIndex;

                     Result := CompImageIndex;

                     Break;
                   except
                   end;
                 end;
               end;
             end;

       finally
         LBmp.Free;
       end;

     finally
       LClassInherited.Free;
     end;
  end;



И вообще, зачем такая сложность ? Зачем хранить 100 одинаковых иконок, для 100 одинаковых компонентов. Не проще ли каждую иконку хранить в одном экземпляре ?

Точно, извените. Тогда не отрабатывает код

Код: pascal
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.
  //Инициализация списка установленных компонентов

  SetLength(FInstComp, 0);
  LPackSvcs := (BorlandIDEServices as IOTAPackageServices);
  for LPackIdx := 0 to LPackSvcs.PackageCount - 1 do
  begin
    LCompInfo.PackageName := LPackSvcs.PackageNames[LPackIdx];
    LCompInfo.PackageHandle := GetModuleHandle(PAnsiChar(LCompInfo.PackageName));

    for LCompIdx := 0 to LPackSvcs.ComponentCount[LPackIdx] - 1 do
    begin
      LCompInfo.CompClassName := LPackSvcs.ComponentNames[LPackIdx, LCompIdx];
      LCompInfo.CompImageHandle := FindResource(LCompInfo.PackageHandle, PAnsiChar(LCompInfo.CompClassName), RT_BITMAP);

      SetLength(FInstComp, Length(FInstComp) + 1);

      with FInstComp[Length(FInstComp) - 1] do
      begin
        PackageName := LCompInfo.PackageName;
        PackageHandle := LCompInfo.PackageHandle;
        CompClassName := LCompInfo.CompClassName;
        CompImageHandle := LCompInfo.CompImageHandle;
      end;
    end;
  end;
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38254980
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отрабатывает, иначе список бы был пустым
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38255120
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrDblClik - это вызов метода TComponentEditor.Edit

Сможешь поподробнее рассказать, как использовать. Хочу на DblClick реализовать выполнение метода TComponentEditor.Edit
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38255130
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrОтрабатывает, иначе список бы был пустым

Я иммел ввиду строчку кода

Код: pascal
1.
LCompInfo.CompImageHandle := FindResource(LCompInfo.PackageHandle, PAnsiChar(LCompInfo.CompClassName), RT_BITMAP);



Почему то FindResource возвращает 0, может PackageHandle не нашел
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38255133
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlDeveloperDimaBrDblClik - это вызов метода TComponentEditor.Edit

Сможешь поподробнее рассказать, как использовать. Хочу на DblClick реализовать выполнение метода TComponentEditor.Edit

Разобрался, необходимо выполнить

Код: pascal
1.
Designer.Edit(LComponent);
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38256123
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тестировал на Delphi 2007 полет нормальный только иногда глючит DragAndDrop
Начал тестировать на Delphi 7, работает так себе не весь функционал корректно отрабатывает, но основной функционал работал на мой взгляд нормально
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38256315
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Не понятно зачем выбирается в инспекторе TicComponentEditorList при нажатии на "без группы"
2. Не понятно зачем отображаются без иконные компоненты (TMenuItem)
3. По прежднему присутствует многооконность
4. Нет мультиселекта
5. Не понятно как всё таки сделать новую группу
6. непонятные элементы в списке <Unnamed> (приэтом самих элементов на форме/в описании нет)
7. Некрасивые картинки
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38256326
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8. Если удалить с формы компонент, то получим то что ожидалось
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38256329
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9. Кнопки на Тулбаре "зачёркнуты" - известный старый баг
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38257972
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr8. Если удалить с формы компонент, то получим то что ожидалось

Есть идеи как отлавливать удаление и изменение имени объекта?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38257996
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не интуитивно понятный интерфейс переделаю позже,
Пункт "Настроить" служит для включения и выключения слежения за объектом
По умолчанию все объекты которые ранее не были включены попадают в группу "Без группы"
Чтоб изменить группу необходимо зайти в "Без группы", выделить необходимые объекты и нажать кнопку "Изменить группу"
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38258080
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlDeveloperЕсть идеи как отлавливать удаление и изменение имени объекта?
Создать визард, подписаться на нотификацию IOTAFormNotifier и там отловить ComponentRenamed
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38258123
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38264508
lu0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lu0
Гость
Господа, а проблема-таки решилась?
готовый код есть?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38264526
AlDeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще нет, позже как освобожусь доделаю.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38264700
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ComponentList на основе VirtualTree (delphi 2007).
Установка:
1. до установки пакета НЕ ОТКРЫВАТЬ в IDE frmCList.pas.(Поленился делать отд. пакет для CheckListBox).
2. в clGrapfics32.pas, если не хотите использовать Grapfics32, отключите.

Использование:
1. перемещение по гр.- Drag-Drop
2. Св-ва :
HideWhenInGroup=true - прятать компонент, включенные в группы
InSingleGroup=true - компонент может входить только в 1 гр.
3. Можно выводить в дерево TAction, TField.....
4. Можно фильтровать по названию, классу (Edit над VirtualTree).
5. Можно выравнивать невиз. комп-ты. (в выборе не должны попасть контролы)
6. выравнивание и поиск можно использовать без вставки компонента на форму.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38264782
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не устанавливается XE2
автор[DCC Error] frmCList.pas(23): E2003 Undeclared identifier: 'TVirtualStringTree'
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38264803
Фотография MMM_Corp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrНе устанавливается XE2
автор[DCC Error] frmCList.pas(23): E2003 Undeclared identifier: 'TVirtualStringTree'

ComponentList на основе VirtualTree (delphi 2007).
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38264860
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMM_Corp ComponentList на основе VirtualTree (delphi 2007).
Да я вкурсе, завтра выложу компонент на основе TMyListView
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38276040
lu0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lu0
Гость
вот и неделя уж пролетела....
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38276088
Oleg6619
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего-то поправил.
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38276303
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правь-неправь нет TVirtualStringTree
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
IDE Expert - лента невизуальных компонентов
    #38835642
alex25ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оживлю темку, ну что есть какой нибудь готовый, удобный, полезный компонент для этого дела?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38835662
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глаза двумя постами выше не поднимаются ? Офтальмолог и патологоанатом в помощь !!!
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38835668
alex25ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrГлаза двумя постами выше не поднимаются ? Офтальмолог и патологоанатом в помощь !!!
Лошадей не гони, рано еще врачей вызывать. Подниматься поднимаются, и что там увидеть? Твой пост что "не дам, делов на час" или сообщение о трабле с TVirtualStringTree или еще поглубже покывыряться? Больше года прошло, а ничего нового не появилось?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38837683
debose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кстати, хорошо бы, если б автор исходники на какой-нибудь github/bitbucket залил (какой из них в России банят реже?)
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38837689
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой Автор ? Вам что трудно уделить 1 часов времени и сделать свой эксперт ?
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38837693
alex25ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrКакой Автор ? Вам что трудно уделить 1 часов времени и сделать свой эксперт ?
Меня прямо умиляет это, надо каждый раз написать "не дам\делов на час и т.д." вместо того, чтобы взять и поделится с общественностью, общественность спасибо скажет.....
...
Рейтинг: 0 / 0
IDE Expert - лента невизуальных компонентов
    #38837758
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясняю для тех кто в ТАНКЕ. Компонент находится в пакете и использует "вкусняшки" из пакета. Выдёргивать и перелопачивать чтобы он устанавливался отдельно я не собираюсь.
Компонент Delphi для объединения невизуальных компонент
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
IDE Expert - лента невизуальных компонентов
    #39944734
zrocker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал тут для своих нужд на основе выложенного выше - может кому пригодится
https://github.com/DzmitryiK/TNonVisualCompList
...
Рейтинг: 0 / 0
99 сообщений из 99, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / IDE Expert - лента невизуальных компонентов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]