Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];

Вниз

стереть строку в StringGrid   Найти похожие ветки 

 
Эд   (2003-02-12 13:47) [0]

Здравствуйте!
Усть ли способ стереть строку в StringGrid чтобы остальные
автоматически сместились вверх как в ListBox?
Спасибо


 
Anatoly Podgoretsky   (2003-02-12 13:51) [1]

Способ такой есть


 
Андрей Сенченко   (2003-02-12 13:53) [2]

Anatoly Podgoretsky © (12.02.03 13:51)

чтобы АВТОМАТИЧЕСКИ сместились ? В TStrinGrid ??? Анатолий ! Не дайте помереть дурой ! Расскажите !


 
Anatoly Podgoretsky   (2003-02-12 13:58) [3]

Очень просто - пишем наследника и уже им пользуемся


 
kkostik   (2003-02-12 13:59) [4]

всё ручками писать надо, я по крайней мере больше способа не знаю, можно ещё оди вариант предложить, порождаешь от TStringGrid или выше свой объект и дописываешь отображение только видимых позиций, тода проже будет удалять строки


 
Андрей Сенченко   (2003-02-12 14:03) [5]

А то я то идиот целую процедуру писал по сдвижке строк :)
примерно такую :

Begin
// Берем номер удаляемой строки
GridRow := FmWorkDel.CBoxDel.ItemIndex + 1;
// Перемещаем строки наверх
For i := 0 to FmMain.StGridWork.ColCount - 1 do
For j := GridRow to FmMain.StGridWork.RowCount - 1 do
FmMain.StGridWork.cells[i,j] := FmMain.StGridWork.cells[i,j+1];
FmMain.StGridWork.RowCount := FmMain.StGridWork.RowCount - 1;
end;


 
Андрей Сенченко   (2003-02-12 14:04) [6]

Anatoly Podgoretsky © (12.02.03 13:58)

Писать наследника :) Нуууу .... это НЕ АВТОМАТИЧЕСКИ - это предполагает работу ручками


 
kkostik   (2003-02-12 14:25) [7]

Андрей Сенченко да всё правельно это будет работать, но если в StringGrid занести порядка пяти тысяч записей и удалить первую, то будет работать долго...


 
Anatoly Podgoretsky   (2003-02-12 14:28) [8]

А ты можешь предложить другой путь, кроме перемещения, для заполнения дырок в длинных объектах.


 
kkostik   (2003-02-12 14:39) [9]

Я это реализовал через заведение у StringGrida свойства которое определяет максимальное количество строк выводимых в грид, остальные строки при перемещении перерисовываются


 
Danilka   (2003-02-12 14:41) [10]

можно сделать высоту нулевой :))


 
Андрей Сенченко   (2003-02-12 15:00) [11]

kkostik © (12.02.03 14:25)
Anatoly Podgoretsky © (12.02.03 14:28)

Собственно, я не претендовал на окончательность своего варианта, как самого идеального и скоростного. По-хорошему в моем вариате реализован достаточно убогий алгоритм "в лоб", но он себя оправдываент в той задаче, под которую был написан - там сложно представить себе существование больше 20 строк таблицы.

Предложить другой вариант имея на руках только TStringGrid без написания потомков я врядли смогу. Но если бы потребовалось делать скоростной алгоритм - там зависело бы от задачи. Если таблица большая и последовательность расположения строк важна ( нельзя заменить удаляемую строк последней строкой грида ), то скорее всего сделал бы так:
1. Делаем удаляемую строку невидимой ( например нулевой высоты, как было предложено ). Ставим метку на полное удаление - она нужна для п.2 и в случае если данные из таблицы нужно будет куда-то сохранить.
2. Ловим Application.OnIdle ( сорри если неправильный синтаксис, букваря нет под рукой ) - то есть момент, когда приложение "не используется" и потихонечку поднимаем строки.

Если бы и этот вариант не дал ощутимых преимуществ - полез бы пошукать алгоритмы, например сюда.
http://alglib.chat.ru/


 
kkostik   (2003-02-12 16:11) [12]

Андрей Сенченко ©
Всё верно, можно и так, но сколько тогда памяти съест StringGrid и сколько эта память будет освобаждаться



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
4-76238
ed
2003-01-10 13:54
2003.02.24
Контекстное меню.


3-75812
Senator
2003-02-05 13:14
2003.02.24
QuickRep


3-75780
Nikolai_S
2003-02-04 12:34
2003.02.24
из Clarion в Access


3-75835
StenKz
2003-02-06 08:37
2003.02.24
Как сделать индикацию процесса обработки данных???


4-76214
Kokopelli
2003-01-10 14:13
2003.02.24
открытие файла при запуске приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский