3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Dotnet + MaxScript, Обсуждаем применение DotNet
Track
сообщение 17/03/2010, 22:27
Сообщение #16


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Цитата(MadlasS @ 17/03/2010, 16:03) *
Такой вапрос, есть image=((dotnetclass "System.Drawing.Image").FromFile (iconPath+str+".png"))
Mожно потом както узнать имя файла для image?
Mожно в image.tag записать стринг с именем файла?

А почему нет?
В твоем вопросе уже есть ответ.
Go to the top of the page
 
+Quote Post
Karba
сообщение 17/03/2010, 23:47
Сообщение #17


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



Читал читал про этот dotnet, так и не понял, что за зверь. Это просто библиотека элементов управления? А чем она лучше WinAPI?
Go to the top of the page
 
+Quote Post
Track
сообщение 18/03/2010, 00:25
Сообщение #18


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



DotNet cовместим с максом
Независимость от версии макса - практически любой скрипт, написанный с использованием dotnet можно запустить на любой версии 3dsmax (есть моменты, но об этом не сейчас)
Ну и конечно отличная документированность, включая русский язык

Но ресурсоемкие штуки конечно лучше писать с использованием WinApi.

Более развернуто сейчас ответить сложно - опыту без году неделя. smile.gif
Go to the top of the page
 
+Quote Post
MadlasS
сообщение 18/03/2010, 11:46
Сообщение #19


Знаток
Иконка группы

Группа: Пользователи
Сообщений: 259
Регистрация: 25/11/2005
Пользователь №: 18 441



Проблема следующая, есть DataGridView в ней отображаются ноды сцены, (много 1000-2000).Теперь я хочу убрать часть нод из списка, но
DataGridView.rows.item[index].visible=false
DataGridView.rows.removeat index
Работает медленно и приудалении 300 нод всё зависает, Что делать?
И ещё есть поиск по столбцу?Т.е. можно вернуть индех строки.Типа как масив index=finditem array value

Есть ли какието аналоги DataGridView но работаюшие быстрее?Может на ActiveX лучше, есть там похожие таблицы?

Сообщение отредактировал MadlasS - 18/03/2010, 11:51
Go to the top of the page
 
+Quote Post
Track
сообщение 18/03/2010, 16:39
Сообщение #20


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



ActiveX не будет работать с последними версиями макса - до 8й версии только
Остальное требует тестирования
Кстати а почему именно DataGridView ?

И в нем должны быть методы вроде BeginUpdate() и EndUpdate()
Должен, но я не нашел smile.gif
Это методы из ListView.
В общем здесь смотри
http://msdn.microsoft.com/ru-ru/library/sy...tagridview.aspx
Go to the top of the page
 
+Quote Post
MadlasS
сообщение 18/03/2010, 16:53
Сообщение #21


Знаток
Иконка группы

Группа: Пользователи
Сообщений: 259
Регистрация: 25/11/2005
Пользователь №: 18 441



DataGridView мне нужна таблица с сортировкой, и чтобы бала возможность исправлять любую ячейку, значения в ячейках могут быть, image, и text, я потому и спросил. Есть ли какието аналоги DataGridView но работаюшие быстрее?
Go to the top of the page
 
+Quote Post
Track
сообщение 18/03/2010, 19:35
Сообщение #22


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Прикрепленный файл  XtraTreeList_Test.rar ( 959 байт ) Кол-во скачиваний: 480

Посмотри еще DevExpress
Go to the top of the page
 
+Quote Post
MadlasS
сообщение 19/03/2010, 15:04
Сообщение #23


Знаток
Иконка группы

Группа: Пользователи
Сообщений: 259
Регистрация: 25/11/2005
Пользователь №: 18 441



toTrack И в нем должны быть методы вроде BeginUpdate() и EndUpdate()
И в прямь, я что то тоже не нашёл, но ведь не может быть чтобы небыло.(час сегодня по МСДН лазил)
XtraTreeList попробовал, если юзать BeginUpdate() и EndUpdate() вроде терпимо работает, при удалении нод, не охота переводить на XtraTreeList может кто всётаки знает, как для DataGridView BeginUpdate() и EndUpdate() сделать.

И ещё такая проблема добавление и удаление строки в таблицу происходит у меня по максовым калбекам хайд унхайд, а они работают для одной ноды, как использовать BeginUpdate() и EndUpdate(). ставить таймер на EndUpdate() 2-3с. или как?
Go to the top of the page
 
+Quote Post
Karba
сообщение 19/03/2010, 16:46
Сообщение #24


Creator
Иконка группы

Группа: AWARD
Сообщений: 3 749
Регистрация: 08/12/2002
Пользователь №: 1 252



А какая конечная цель? Что сделать надо в результате?
Go to the top of the page
 
+Quote Post
MadlasS
сообщение 19/03/2010, 18:06
Сообщение #25


Знаток
Иконка группы

Группа: Пользователи
Сообщений: 259
Регистрация: 25/11/2005
Пользователь №: 18 441



Смысл следующий UserProperty каждой ноды есть ряд переменных нужен удобный интерфейс для их задания
Go to the top of the page
 
+Quote Post
Track
сообщение 20/03/2010, 23:53
Сообщение #26


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Цитата(MadlasS @ 19/03/2010, 14:04) *
toTrack И в нем должны быть методы вроде BeginUpdate() и EndUpdate()
И в прямь, я что то тоже не нашёл, но ведь не может быть чтобы небыло.(час сегодня по МСДН лазил)
XtraTreeList попробовал, если юзать BeginUpdate() и EndUpdate() вроде терпимо работает, при удалении нод, не охота переводить на XtraTreeList может кто всётаки знает, как для DataGridView BeginUpdate() и EndUpdate() сделать.

И ещё такая проблема добавление и удаление строки в таблицу происходит у меня по максовым калбекам хайд унхайд, а они работают для одной ноды, как использовать BeginUpdate() и EndUpdate(). ставить таймер на EndUpdate() 2-3с. или как?


Вот здесь только нашел это свойство (Юзай "Show Net Property")

---------- System.Windows.Forms.DataGridViewComboBoxEditingControl ----------
.BeginUpdate()

Таймера не надо
перед апдейтом ставишь BeginUpdate()
По завершении EndUpdate()

Кстати а garbage collection максовский с комбобоксами в GridView не выдает ошибку?
Я пытаюсь перекинуть "Show Net Property" с комбобоксов на DataGridView но никак не получается сделать эти "DataGridViewComboBoxCell" редактируемыми
Застрял как раз на получении доступа к этим самым "DataGridViewComboBoxEditingControl"

У тебя получилось сделать их редактируемыми?
Код
form = dotNetObject "MaxCustomControls.MaxForm"

form.Width = 250

gridView=dotNetObject "System.Windows.Forms.DataGridView"
gridView.Dock = gridView.Dock.Fill
CellTemplate
fn CreatedotNetGridView gridView =
(
    gridView.AutoGenerateColumns=false
    gridView.SelectionMode=gridView.SelectionMode.CellSelect
    gridView.ColumnHeadersVisible=false
    gridView.AllowUserToResizeRows=false
    gridView.AllowUserToResizeColumns=false

    gridView.RowHeadersVisible = false
    gridView.ColumnHeadersBorderStyle=gridView.ColumnHeadersBorderStyle.Single
    gridView.ColumnHeadersHeightSizeMode=gridView.ColumnHeadersHeightSizeMode.D
isableResizing
    gridView.ShowCellToolTips=true

    gridView.ScrollBars=gridView.ScrollBars.None
    columnCheck = dotNetObject "System.Windows.Forms.DataGridViewComboBoxColumn"
--     columnCheck = dotNetObject "System.Windows.Forms.DataGridViewComboBoxEditingControl"
    columnCheck.Width = 240
    columnCheck.ReadOnly=false
    columnCheck.DropDownWidth=400
    columnCheck.MaxDropDownItems=40
    columnCheck.Sorted=true
--     columnCheck.DropDownStyle=columnCheck.DropDownStyle.DropDown
--     columnCheck.SortMode=Avtomatic

--     CellTemplate = (dotnetobject"System.Windows.Forms.DataGridViewComboBoxEditingControl")
    CellTemplate = (dotnetobject"System.Windows.Forms.DataGridViewComboBoxCell")
    CellTemplate.ReadOnly=false
    CellTemplate.DisplayStyle=CellTemplate.DisplayStyle.ComboBox
--     CellTemplate.EditType.DropDownStyle=CellTemplate.EditType.DropDownStyle.Dro
pDown

--     CellTemplate.EditingCellValueChanged = true
    columnCheck.CellTemplate = CellTemplate
    gridView.columns.AddRange #(columnCheck)
)--

fn UpdateFileTypeGridView gridView FolderCell:false =
    (
--         gridView.Rows.Clear()
        gridView.AllowUserToAddRows=true
        CreatedotNetGridView gridView
        gridView.ColumnHeadersHeight=18
        gridView.ColumnCount=1
        gridView.RowCount = 3

        (gridView.Item 0 0).Items.AddRange #("AA","BB","CC","!!!")
        (gridView.Item 0 1).Items.AddRange #("AA","BB","CC","!!!")
--         (gridView.Item 0 0).EditType.DropDownStyle=(gridView.Item 0 0).EditType.DropDownStyle.DropDown
--         gridView.DefaultCellStyle.NullValue = "BB"
        (gridView.Item 0 0).Value = "!!!"
        (gridView.Item 0 1).Value = "BB"
--         .BaseType()
--         CellTemplate.EditType
--         CellTemplate.EditType.MemberType
--         CellTemplate.EditType.GetExportedTypes()
--         CellTemplate.EditType.
--         CellTemplate.EditType.Name
--         for i in CellTemplate.EditType.GetMembers() do print (i.tostring())
--         show (gridView.Item 0 0).EditType
--         showmethods (gridView.Item 0 0).EditType
        gridView.AllowUserToAddRows=false
    )--fn CreatedotNetControlGrid gridView

UpdateFileTypeGridView gridView

form.controls.add gridView
form.ShowModeless()


Go to the top of the page
 
+Quote Post
Track
сообщение 21/03/2010, 00:45
Сообщение #27


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Код
fn EditingControlShowing e = (
--         show e
--         showmethods e
        e.Control.DropDownStyle=e.Control.DropDownStyle.DropDown
    )

dotNet.addEventHandler gridView "EditingControlShowing" EditingControlShowing


Чесно сказать метод сделать комбобокс редактируемым какой-то через одно место - но работает.
И при gc() пока ошибку не выдает.
Go to the top of the page
 
+Quote Post
MadlasS
сообщение 23/03/2010, 16:30
Сообщение #28


Знаток
Иконка группы

Группа: Пользователи
Сообщений: 259
Регистрация: 25/11/2005
Пользователь №: 18 441



Значит так выяснил что основные тормаза возникали из-за AutoSizeMode
Плюс сделал DataSource=DataTable заработало ещё быстрей, единственное возникла странная проблема
DataTable.Rows.item[0].item[0] выводит значение нулевой строки, столбца
а,

DataTable.Rows.item[0].item[0]="aaa" не работает, хотя в msdn написано возвращает и задаёт, я не понял???

Щас сделал через

Array=DataTable.Rows.item[0].itemarray
Array[1]="aaa"
DataTable.Rows.item[0].itemarray=Array

но это както криво
Go to the top of the page
 
+Quote Post
MadlasS
сообщение 23/03/2010, 19:41
Сообщение #29


Знаток
Иконка группы

Группа: Пользователи
Сообщений: 259
Регистрация: 25/11/2005
Пользователь №: 18 441



Возниклаещё одна проблема.С сортировкой
Если использовать Datatable.DefaultView.sort всё сортируется, но при изменении одной из ячеек таблица опять сортируется, сама без нажатия на хедер, и строчка с которой я работал меняет своё положение, это очень неудобно.А как сделать так чтобы сортировка происходила только по нажатию хедера непонятно.Если кто знает подскажите?
Go to the top of the page
 
+Quote Post
Track
сообщение 24/03/2010, 14:42
Сообщение #30


Русскоговорящий жидо-бандеровец
Иконка группы

Группа: Пользователи
Сообщений: 1 336
Регистрация: 16/07/2004
Из: Украина-Одесса
Пользователь №: 6 600



Вообще-то гораздо проще понять в чем дело, когда хотя бы часть кода выложена.

Цитата
А как сделать так чтобы сортировка происходила только по нажатию хедера непонятно.

Ну так включай сортировку только когда жмешь на заголовок, потом выключай.

Сообщение отредактировал Track - 24/03/2010, 14:45
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






6 страниц V  < 1 2 3 4 > » 
Fast ReplyReply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 28/03/2024 - 15:35