![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление строки в StringGrid
aht © (2006-09-29 10:47:00)HI ALL.
как ниболее простым способом реализовть сабж?
ЮЮ (2006-10-02 07:04:00) [1]а также Canvas.Brush.Color, Canvas.Pen.Color
ЮЮ (2006-10-02 07:02:00) [2]"Красить", естественно, придется самому, в OnDrawCell, в контексте Canvas.Font.Color
vegarulez (2006-10-02 06:28:00) [3]Уже сделал отчистку rows[i], перед их удалением... поэтому когда вставляю новую строку она автоматически пустая...
Теперь возникает другой вопрос, как пометить разные строки разным цветом?
то бишь допустим те которые готовы к удалению красным, другие ещё каким нить...
свойства color приминительно к rows[i] я что-то не нашёл... :(
А просто color от грида - красит весь грид...
подскажите плз...
Германн (2006-10-01 20:36:00) [4]
> Я так полагаю, она где-то храниться и надо хранилище отчищать.
> ..
> подскажите где...
>
property Rows[Index: Integer]: TStrings;
vegarulez (2006-10-01 13:39:00) [5]Народ подскажите почему при вот такой реализации
type
THStringGrid = class(TStringGrid)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
THStringGrid(StringGrid1).DeleteRow(2);
end;
после удаления делаю
Form1.StringGrid1.RowCount:=Form1.StringGrid1.RowCount+1;
Вылазиет в конце таблички та строка, которая удалилась тока что... (
Я так полагаю, она где-то храниться и надо хранилище отчищать...
подскажите где...
Германн (2006-09-30 03:02:00) [6]Но вот почему DeleteRow до сих пор сидит в protecdedдля TStringGrid (а и в BDS2006 - то же самое) я не понимаю!
Похоже Гридами в Борланде либо не занимаются, либо занимаются "от случая к случаю", либо отдали сей вопрос на решение кому-то, кто и не знает и не хочет работать. :-(
Германн (2006-09-30 01:45:00) [7]
> aht © (29.09.06 10:47)
>
> HI ALL.
> как ниболее простым способом реализовть сабж?
Использовать тот "хакерский" приём, который единствееный незапрещённый на сём форуме. И который постоянно "рекламирует" ЮЗ :-)
Например удаляем строку с номером 2 нажав на кнопку Button1.
type
THStringGrid = class(TStringGrid)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
THStringGrid(StringGrid1).DeleteRow(2);
end;
MsGuns (2006-09-29 17:48:00) [8]>Elen © (29.09.06 14:05) [12]
>Мой каприз за ваши грошики ;D
Без проблем ;))
Elen (2006-09-29 14:05:00) [9]
> MsGuns
Опа СПОНСОР!!! УРА!!! Мой каприз за ваши грошики ;D
MsGuns (2006-09-29 14:02:00) [10]>Elen © (29.09.06 13:57) [10]
Леночка, Вы бы себе блузончик новый купили. Или в кафешку сходили с воздыхателем - не все ж мозг напрягать.
Сори за фотоп, но дефчонка достала ;))
Elen (2006-09-29 13:57:00) [11]
> MsGuns
Не писать - это жесть, а не справление потребностей. (Ну все. Щас нас модераторы вытрут)
MsGuns (2006-09-29 13:48:00) [12]>Elen © (29.09.06 12:16) [8]
>От же любитель подкалывать...
"Не могу с Вами согласиться. Свежесть не бывает второй степени. Она бывает только первая, она же и последняя. Да вот извольте, не угодно ли отведать ?.." (МиМ)
"Пишите только в самом крайнем случае, если не писать не можете" (А.П.Чехов)
;)))
Elen (2006-09-29 12:16:00) [13]
> MsGuns
Ну я имею ввиду Row. По привычке называю записью строку в таблице. Но главное что мня автор понял... ;-) (От же любитель подкалывать...)
Ketmar (2006-09-29 12:16:00) [14]>[6] MsGuns(c) 29-Sep-2006, 12:12
>строки. А это не одно и то же - см. справку по
>string и TStrings в MSDN
э-э-э... я отстал от жизни, или MSDN уже-таки описывает Delphi? %-)
MsGuns (2006-09-29 12:12:00) [15]>Elen © (29.09.06 10:52) [1]
>Тебе надо физически удалить запись или достаточно будет скрыть ее с глаз?
У стрингрида нет записей. У него есть только строки. А это не одно и то же - см. справку по string и TStrings в MSDN
aht (2006-09-29 11:23:00) [16]ок, пасибо большое
Elen (2006-09-29 11:22:00) [17]
> aht
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
StringGrid1.Row:=0;
i:=0;
while( i<=StringGrid1.RowCount - 1)and( StringGrid1.Row<StringGrid1.RowCount-1) do
begin
if i>= 2then begin
StringGrid1.Rows[i].Assign(StringGrid1.Rows[i+1]);
end else
StringGrid1.Row:=StringGrid1.Row+1;
inc(i);
end;
// StringGrid1.RowCount := StringGrid1.RowCount - 1;
end;
Где 2- номер строки которую нужно удалить (код сыроват)
ЮЮ (2006-09-29 11:02:00) [18]смещать информацию и уменьшать количество строк:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := StringGrid1.Row + 1 to StringGrid1.RowCount - 1 do
StringGrid1.Rows[i - 1].Assign(StringGrid1.Rows[i]);
StringGrid1.RowCount := StringGrid1.RowCount - 1;
end;
aht (2006-09-29 10:59:00) [19]физически
Elen (2006-09-29 10:52:00) [20]
> aht
Тебе надо физически удалить запись или достаточно будет скрыть ее с глаз?