Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Проблемы с Virtual TreeView, Статью читал :) 
:(
    Опции темы
MegaVolt
Дата 23.1.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Есть пару вопросов:

1. NodeDataSize обязательно фиксированного размера? Или можно делать записи разного размера? У меня для экономии памяти строчки задаются рзаного размера.

2. Можно ли выделить пунктирным прямоугольником фокуса сразу всю строку а не только одну ячейку. Т.е. у меня сейчас выделена вся строка а прямоугольник фокуса выделяет не строку а ячейку smile

3. Можно ли следать как в Vitrual ListVIew чтобы на добавление ячеек не требовалось место? Если мне иерархия  дерева не нужна то можно ли на этом сэкономить?

4. Можно ли рисовать GridLines дальше чем у меня есть колонки?

5. Можно ли при перетаскивании ползунка прокрутки получить такой эффек как и в ListView (прокрутка только на целое число строк)

6. К сожалению у меня очень плохо с юридическим английским. Могу ли я исспользовать VT в коммерческой программе и что для этого нужно?


M
Girder
Одна тема - один вопрос!
PS: Тема закрыта!

PM MAIL   Вверх
aktuba
Дата 23.1.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

1. NodeDataSize обязательно фиксированного размера? Или можно делать записи разного размера? У меня для экономии памяти строчки задаются рзаного размера.


Насколько я знаю, в OnGetNodeDataSize можно возвращать размер записи для каждого узла, но сам не использовал такого.

Цитата

3. Можно ли следать как в Vitrual ListVIew чтобы на добавление ячеек не требовалось место? Если мне иерархия  дерева не нужна то можно ли на этом сэкономить?


Не понял вопроса...

Цитата

4. Можно ли рисовать GridLines дальше чем у меня есть колонки?


Тоже интересует  smile 




--------------------
user posted image
PM MAIL WWW Skype   Вверх
Bose
Дата 23.1.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



1. Вроде можно разные. Смотри событие OnGetNodeDatasize
2. Именно для фокуса - нет(насколько я знаю). Выделение - это одно, фокус - это другое. (и то и то можно спрятать: TreeOptions->PaintOptions HideFocusRect и HideSelection)
3. Не понял вопроса. Можно не рисовать структуру дерева. В TreeOptions->PaintOptions убрать галочки с ShowRoot и ShowTreeLines
4, 5. не знаю
6. Да. Можно использовать без ограничений. 
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 23.1.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата

3. Не понял вопроса.

Попробую пояснить. В VT физически данные не хранятся в нём хранится только структура дерева и ссылка на данные. Если я его хочу исспользовать только для отображения списка строк без какой либо иерархии то хранить информацию о иерархии нет необходимости. В ListView это сделано так: я загружаю просто количество строк и в событии OnData подставляю данные. Т.е. сам компонент занимается только отрисовкой и никакой лишней информации кроме положения ползунка прокрутки не хранит. Можно ли в VT получить такой же эффект? Или если нельзя какой минимальный объём памяти будет занимать одна ячейка дополнительно к моим данным?
PM MAIL   Вверх
aktuba
Дата 23.1.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Попробую пояснить. В VT физически данные не хранятся в нём хранится только структура дерева и ссылка на данные. Если я его хочу исспользовать только для отображения списка строк без какой либо иерархии то хранить информацию о иерархии нет необходимости. В ListView это сделано так: я загружаю просто количество строк и в событии OnData подставляю данные. Т.е. сам компонент занимается только отрисовкой и никакой лишней информации кроме положения ползунка прокрутки не хранит. Можно ли в VT получить такой же эффект? Или если нельзя какой минимальный объём памяти будет занимать одна ячейка дополнительно к моим данным?


Нисколько. В RootNodeCount ставишь необходимое количество строк, а в обработчике OnGetText проставляешь значения. Это как вариант...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 23.1.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(aktuba @  23.1.2007,  18:51 Найти цитируемый пост)
В RootNodeCount ставишь необходимое количество строк, а в обработчике OnGetText проставляешь значения. Это как вариант...
Пробовал, время и память отнимает smile
PM MAIL   Вверх
aktuba
Дата 23.1.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Пробовал, время и память отнимает smile 


Т.е.??? Код в студию...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 23.1.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Какой код?
Ставлю: RootNodeCount=1000000 в инспекторе и компилирую в результате запуск занимает пару секунд и при этом отнимается порядка 57 мег памяти. Своего кода 0. Т.е. только настройка свойств компонента. Получается на каждую строчку тратится 57 байт что не есть здорово.
PM MAIL   Вверх
Bose
Дата 23.1.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(MegaVolt @  23.1.2007,  18:44 Найти цитируемый пост)
Т.е. сам компонент занимается только отрисовкой и никакой лишней информации кроме положения ползунка прокрутки не хранит. Можно ли в VT получить такой же эффект? Или если нельзя какой минимальный объём памяти будет занимать одна ячейка дополнительно к моим данным?

Virtual TreeView - очень гибкий компонент, но не настолько же =) В конце-концов, это именно дерево, а не Listview. Всё что могу посоветовать: попробуй посмотри в исходниках.  smile 

А вообще VirtualTreeView к памяти относится довольно экономно. Не вижу особого смысла в такой оптимизации. 
PM MAIL WWW Skype   Вверх
aktuba
Дата 23.1.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Какой код?
Ставлю: RootNodeCount=1000000 в инспекторе и компилирую в результате запуск занимает пару секунд и при этом отнимается порядка 57 мег памяти. Своего кода 0. Т.е. только настройка свойств компонента. Получается на каждую строчку тратится 57 байт что не есть здорово.


VT все-же дерево и для хранения структуры память необходима. НО, если сравнивать с ListView - VT выигрывает по всем пунктам. Сейчас проверил и получилось следующее:

VirtualTreeView - 2-3 секунды/57Мб на 1 000 000 записей
ListView             - 50-60 секунд/93Мб на 1 000 000 записей

Время дано с учетом времени создания записей!!!

Вот и сравнивай  smile 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 23.1.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(Bose @  23.1.2007,  19:42 Найти цитируемый пост)
сё что могу посоветовать: попробуй посмотри в исходниках.
smile Ясно. Я просто думал что может есть какая птичка smile

Цитата(Bose @  23.1.2007,  19:42 Найти цитируемый пост)
Не вижу особого смысла в такой оптимизации. 
Да жалко памяти на большом количестве строк. Если сам текст строки примерно равен этому объёму то получается двойное увеличение исспользования памяти.

Цитата(aktuba @  23.1.2007,  19:59 Найти цитируемый пост)
ListView             - 50-60 секунд/93Мб на 1 000 000 записей
 smile)) В обычном режиме да. А если поставить OwnerData:=true; и определить обработчик для OnData то то же самое действие потребует время незаметное на глаз smile

PM MAIL   Вверх
aktuba
Дата 23.1.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

В обычном режиме да. А если поставить OwnerData:=true; и определить обработчик для OnData то то же самое действие потребует время незаметное на глаз smile


Незаметно говоришь?  smile Сам то запускал такой пример? Попробуй - потом отпиши...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Bose
Дата 23.1.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(MegaVolt @  23.1.2007,  20:15 Найти цитируемый пост)
Да жалко памяти на большом количестве строк. Если сам текст строки примерно равен этому объёму то получается двойное увеличение исспользования памят

Для работы с таким количеством строк рекомендую переходить на использование баз данных! smile 
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 23.1.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(aktuba @  23.1.2007,  20:25 Найти цитируемый пост)
Сам то запускал такой пример
А то. Режим vsReport
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  with ListView1 do
    begin
      OwnerData:=true;
      Items.Count:=1000000;
   end;
end;

procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption:=    '111111111111111111111111111111111111'+IntToStr(Item.Index);
  Item.SubItems.Add('A22222222222222222222222222222222222'+IntToStr(Item.Index));
  Item.SubItems.Add('333333333333333333333333333333333333'+IntToStr(Item.Index));
end;




Цитата(Bose @  23.1.2007,  20:25 Найти цитируемый пост)
Для работы с таким количеством строк рекомендую переходить на использование баз данных!
Так это и есть результат выбора из импровизированной базы smile Пользователи извращаются и тестят мою прогу по максимуму выбирая все строчки. Пока работало smile Вот при переходе на VT хотелось бы сохранить прежние требования к памяти smile

PM MAIL   Вверх
aktuba
Дата 23.1.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

А то. Режим vsReport
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  with ListView1 do
    begin
      OwnerData:=true;
      Items.Count:=1000000;
   end;
end;
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption:=    '111111111111111111111111111111111111'+IntToStr(Item.Index);
  Item.SubItems.Add('A22222222222222222222222222222222222'+IntToStr(Item.Index));
  Item.SubItems.Add('333333333333333333333333333333333333'+IntToStr(Item.Index));
end;
    


У меня вообще не отобразило ни одной строки, правда я и не разбирался. Не использую ListView... Но форма действительно появилась быстро. И памяти занимает 3Мб.

Но, тебе лучше использовать ListView, т.к., если я правильно понял, ты хранишь строки. А VT позволяет хранить любые данные. Это + хранение структуры и занимает память.

Есть еще такой момент. Все данные у тебя хранятся в самом ListView, а в VT хранятся отдельно. VT используется для отображения данных, а, у тебя, ListView и для отображения и для хранения...

P.S.: не корректно сравнивать список с деревом, у них разные предназначения.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Quadr0
Дата 23.1.2007, 21:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
1. NodeDataSize обязательно фиксированного размера? Или можно делать записи разного размера? У меня для экономии памяти строчки задаются рзаного размера.

Фиксированный. И только.
В каком смысле строчки разного размера? Используется тип ShortString?
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
2. Можно ли выделить пунктирным прямоугольником фокуса сразу всю строку а не только одну ячейку. Т.е. у меня сейчас выделена вся строка а прямоугольник фокуса выделяет не строку а ячейку

Нет, нельзя, но с трудом представляю, зачем это может понадобиться. Прямоугольник фокуса он на то и нужен, чтобы во всей строке активную колонку отображать. Не стоит уродовать интерфейс.
Можно сделать это через OwnerDraw, но опять же, зачем?
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
3. Можно ли следать как в Vitrual ListVIew чтобы на добавление ячеек не требовалось место? Если мне иерархия  дерева не нужна то можно ли на этом сэкономить?

Не требовалось места где? Сэкономить на чем?
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
4. Можно ли рисовать GridLines дальше чем у меня есть колонки?

Да, можно. См. настройки категории PaintOptions.
Цитата(MegaVolt @  23.1.2007,  18:49 Найти цитируемый пост)
6. К сожалению у меня очень плохо с юридическим английским. Могу ли я исспользовать VT в коммерческой программе и что для этого нужно? 

Ограничений нет. Никаких. Абсолютно. VT использует в Delphi даже Borland.

Это сообщение отредактировал(а) Quadr0 - 23.1.2007, 21:17
  Вверх
MegaVolt
Дата 24.1.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(aktuba @  23.1.2007,  21:04 Найти цитируемый пост)
Но, тебе лучше использовать ListView, т.к., если я правильно понял, ты хранишь строки. А VT позволяет хранить любые данные. Это + хранение структуры и занимает память.
VT позволяет хранить любые данные согласен. Но в данном примере он никаких данных не хранит. Он просто подставляет строчки по умолчанию для всех колонок. А сами данные с их структурой в данном примере не задействованы smile

Цитата(aktuba @  23.1.2007,  21:04 Найти цитируемый пост)
Есть еще такой момент. Все данные у тебя хранятся в самом ListView, а в VT хранятся отдельно.
ListView как раз в этом режиме не хранит данные. Я же привёл событие которое запращивает анные для отображаемой ячейки. Сами данные могут хрантися где угодно smile Т.е. в данном случае ListView обходит VT и если бы не проблемы с отрисовками и пр... я бы на VT и не взглянул бы.

Цитата(aktuba @  23.1.2007,  21:04 Найти цитируемый пост)
P.S.: не корректно сравнивать список с деревом, у них разные предназначения.
Вот тут полностью согласен. Просто идея реализована великолепно и я думал что автор путём мелких доработок смог добавить и режим эмуляции ListView.


Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
В каком смысле строчки разного размера? Используется тип ShortString?
Исспользую записи такого вида:
Код

X=Record
  ....
  Size:integer;
  S:String;
end;

Т.е. SizeOf(x) не соотвествует занимаемому месту в памяти. В памяти структура занимает SizeOf(x)+x.Size. И если VT сам может хранить данные или извлекать их то ему нужно знать истинный размер записи в памяти.

Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
Нет, нельзя, но с трудом представляю, зачем это может понадобиться.
Для единообразия интерфейса с ListView. Есть такая вещь как привычка.

Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
Не требовалось места где? Сэкономить на чем?
В теме уже я дал развернутое объяснение и эту тему уже страницу обсуждаем.

Цитата(Quadr0 @  23.1.2007,  21:16 Найти цитируемый пост)
Да, можно. См. настройки категории PaintOptions.
Посмотрел smile Нету там птички позволяющей продолжить горизонтальные линии за границу последней колонки

PM MAIL   Вверх
MegaVolt
Дата 24.1.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Место занимает вот эта структурка:
Код

  TVirtualNode = packed record
    Index,                   // index of node with regard to its parent
    ChildCount: Cardinal;    // number of child nodes
    NodeHeight: Word;        // height in pixels
    States: TVirtualNodeStates; // states describing various properties of the node (expanded, initialized etc.)
    Align: Byte;             // line/button alignment
    CheckState: TCheckState; // indicates the current check state (e.g. checked, pressed etc.)
    CheckType: TCheckType;   // indicates which check type shall be used for this node
    Dummy: Byte;             // dummy value to fill DWORD boundary 
    TotalCount,              // sum of this node, all of its child nodes and their child nodes etc.
    TotalHeight: Cardinal;   // height in pixels this node covers on screen including the height of all of its
                             // children
    // Note: Some copy routines require that all pointers (as well as the data area) in a node are
    //       located at the end of the node! Hence if you want to add new member fields (except pointers to internal
    //       data) then put them before field Parent.
    Parent,                  // reference to the node's parent (for the root this contains the treeview)
    PrevSibling,             // link to the node's previous sibling or nil if it is the first node
    NextSibling,             // link to the node's next sibling or nil if it is the last node
    FirstChild,              // link to the node's first child...
    LastChild: PVirtualNode; // link to the node's last child...
    Data: record end;        // this is a placeholder, each node gets extra data determined by NodeDataSize
  end;


Для режима отображения одинаковых строк её можно преобразовать к виду
Код

  TVirtualNode = packed record
    Index,                   // index of node with regard to its parent
    States: TVirtualNodeStates; // states describing various properties of the node (expanded, initialized etc.)
    PrevSibling,             // link to the node's previous sibling or nil if it is the first node
    NextSibling,             // link to the node's next sibling or nil if it is the last node
    Data: record end;        // this is a placeholder, each node gets extra data determined by NodeDataSize
  end;

Осталось убедить компонент недостающие поля считать константой smile И брать для них значение по умолчанию

Добавлено @ 13:02 
Ещё вопрос а можно ли сделать чек бокс в каждой строчке? Т.е. несколько checkBox для одной строки?

Это сообщение отредактировал(а) MegaVolt - 24.1.2007, 12:51
PM MAIL   Вверх
Bose
Дата 24.1.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



MegaVolt, мне кажется, что это похоже на стрельбу из пушки по воробьям smile 

Чтобы удовлетворить твоим требованием, в любом случае придётся переписывать какой-то из компонентов, будь это ListView или Virtual tree View. 

Цитата

Ещё вопрос а можно ли сделать чек бокс в каждой строчке? Т.е. несколько checkBox для одной строки?


В каждой строке можно.  

А несколько CheckBoxов для одной, тоже можно, но уже ручками.

п.с. Хотя в этом случае, мне кажется уже уместнее воспользоваться Gridом smile NextGrid выглядит довольно красиво smile 
PM MAIL WWW Skype   Вверх
Bose
Дата 24.1.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Как вариант, советую взглянуть на готовые ListView. Например Mustang EasyListview. Здесь можно посмотреть скриншоты.
PM MAIL WWW Skype   Вверх
MegaVolt
Дата 24.1.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(Bose @  24.1.2007,  13:52 Найти цитируемый пост)
Чтобы удовлетворить твоим требованием, в любом случае придётся переписывать какой-то из компонентов, будь это ListView или Virtual tree View.
Ты совершнено прав. Я практически заточил ListView под то что хочу но столкнулся с проблемами которые решить не могу и на форумах народ тоже молчит smile Вот и решил смотреть в сторону VT. Но тут вылазят другие проблемы smile

Цитата(Bose @  24.1.2007,  13:52 Найти цитируемый пост)
Хотя в этом случае, мне кажется уже уместнее воспользоваться Gridом
Цитата(Bose @  24.1.2007,  14:27 Найти цитируемый пост)
Как вариант, советую взглянуть на готовые ListView
Обязательно посмотрю.

PM MAIL   Вверх
MegaVolt
Дата 24.1.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Посмотрел smile

NextGrid из их примера добавляет 100000 элементов за 6 секунд smile Чем явно проигрывает VT и LV.
EasyListView похоже тоже не позволяет делать CheckBox-ики в каждой колонке.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.