Малък куесчън за MSFlexGrid...
3 отговора
0 прегледа
Малък куесчън за MSFlexGrid...
Използвам контрола MSFlexGrid като монитор за извадки от прости бази данни
Работата е там, че ми се филтрират данните и се изплюват както филтър при Ексел, а аз искам и да ми се сортират автоматично по едно допълнително поле! Полето по което ще сортирам няма нищо общо с критериите за сортиране. Полето представлява просто допълнителна оценка за близоста на записите към нов запис, който не е добавен още в базата!
Въпроса ми е някой знае ли как да го направя автоматично без да се налага да щракам с мишката върху полето, та после да сортирам по маркирана област?
Вариант който мога да намеря като подобен код е да симулирам движение на мишката върху колоната и щракване, ама нещо не ме кефи - трябва да има по-бърз и елегантен начин и предполагам не сложен.
В ексела да речем има Columns("B:B").Select тук няма ли нещо подобно?
Работата е там, че ми се филтрират данните и се изплюват както филтър при Ексел, а аз искам и да ми се сортират автоматично по едно допълнително поле! Полето по което ще сортирам няма нищо общо с критериите за сортиране. Полето представлява просто допълнителна оценка за близоста на записите към нов запис, който не е добавен още в базата!
Въпроса ми е някой знае ли как да го направя автоматично без да се налага да щракам с мишката върху полето, та после да сортирам по маркирана област?
Вариант който мога да намеря като подобен код е да симулирам движение на мишката върху колоната и щракване, ама нещо не ме кефи - трябва да има по-бърз и елегантен начин и предполагам не сложен.
В ексела да речем има Columns("B:B").Select тук няма ли нещо подобно?
Re: Малък куесчън за MSFlexGrid...
Може.
Първо си дефинираш две константи за сортирането във възходящ или нисходящ ред, например:
Public Enum enumGridSort
sortAscending = 0
sortDescending = 1
End Enum
след това в кода си пишеш:
mGrid.Redraw = False
mGrid.Row = 0
mGrid.Col = x
mGrid.Sort = sortAscending
mGrid.Redraw = True
mGrid.Row = 1
mGrid.Col = 1
където х ти е колоната, по която искаш да сортираш.
Много е важно да имаш предвид, че .Col и .Row пропъртитата ти сетват курсора, така че след сортирането да си ги поставиш в начална позиция. Това с единиците го давам като пример, ако нулевия ред и нулевата ти колона са заглавни.
Успех!
Първо си дефинираш две константи за сортирането във възходящ или нисходящ ред, например:
Public Enum enumGridSort
sortAscending = 0
sortDescending = 1
End Enum
след това в кода си пишеш:
mGrid.Redraw = False
mGrid.Row = 0
mGrid.Col = x
mGrid.Sort = sortAscending
mGrid.Redraw = True
mGrid.Row = 1
mGrid.Col = 1
където х ти е колоната, по която искаш да сортираш.
Много е важно да имаш предвид, че .Col и .Row пропъртитата ти сетват курсора, така че след сортирането да си ги поставиш в начална позиция. Това с единиците го давам като пример, ако нулевия ред и нулевата ти колона са заглавни.
Успех!
Ооо задължен съм ти :)
а аз се чудех по едно време защо ли има и .Col и .Cols :)
хах, мн яко миси :) сега разбрах и как ще си оцветя отделните колонки!
а защо се забранява преизчертаването и после пак се разрешава?
пести се време ли? лично при мен всяко излишно действие ще е добре да се премахне защото ми трябва максимално бързодействие - ще правя нещо от рода на генетични мутации за определяне на най-добри тегловни коефиценти за анализ на дадени статистики... процеса ще се повтаря и повтаря докато се усъвършенства максимално :)
хах, мн яко миси :) сега разбрах и как ще си оцветя отделните колонки!
а защо се забранява преизчертаването и после пак се разрешава?
пести се време ли? лично при мен всяко излишно действие ще е добре да се премахне защото ми трябва максимално бързодействие - ще правя нещо от рода на генетични мутации за определяне на най-добри тегловни коефиценти за анализ на дадени статистики... процеса ще се повтаря и повтаря докато се усъвършенства максимално :)
Re: Ооо задължен съм ти :)
Вече не си спомням със сигурност, защото от доста време не пиша код, но мисля, че ако не забраниш преизчертването, се получава много неприятно премигване на екрана, а освен това май се забързва цялата операция.