![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid и удаление выделеных строк.
rioko © (2012-07-14 15:37:00)Здравствуйте! Надоумьте пожалуйста, как можно из стринггрида удалить выделеные строки? Как удалять я знаю, я не могу понять как опознать выделена ли строка или нет... Суть проблемы в следующем.. У меня в СтрингГриде стоит РэнжСелект, и пользователь может рандомным образом выделить какие то строки и нажав кнопку "удалить" - они должны удалиться.
Я никак не могу сделать что бы это работало...
Удаляю я строки так:
procedure DeleteRow(SG:TStringGrid; RowToDelete:Integer);
var i: Integer;
begin
with SG do begin
if (RowToDelete>=0) and (RowToDelete<RowCount) then begin
for i:=RowToDelete to RowCount-2 do
Rows[i].Assign(Rows[i+1]);
RowCount:= RowCount-1;
end;
end;
end;
в общем, проблема думаю понятна) помогите пожалуйста)
Юрий Зотов (2012-07-14 21:47:00) [21]
> turbouser © (14.07.12 21:45) [12]
Не обязательно. Можно кратко - только суть того, что Вас там не устроило.
turbouser (2012-07-14 21:45:00) [22]
> Юрий Зотов © (14.07.12 21:44) [11]
> А зачем?
Вам по пунктам разложить? :)
Юрий Зотов (2012-07-14 21:44:00) [23]
> turbouser © (14.07.12 21:39) [10]
Конечно не доводилось. А зачем?
turbouser (2012-07-14 21:39:00) [24]Конечно, Юрий. А Вам доводилось править исходники DevExpress?
Юрий Зотов (2012-07-14 21:35:00) [25]
> turbouser © (14.07.12 21:14) [8]
> protected не зря так называется.
Извините, а Вы уверены, что понимаете суть секции protected? Зачем она вообще нужна?
turbouser (2012-07-14 21:14:00) [26]
> Юрий Зотов © (14.07.12 19:56) [7]
>
> Зачем делать самопальное удаление, если оно уже есть
> Дает доступ к секции protected
не так уж и "есть"
protected не зря так называется.
хотя, многие злоупотребляют этой секцией :(
Юрий Зотов (2012-07-14 19:56:00) [27]Зачем делать самопальное удаление, если оно уже есть в VCL?
type
TSG = class(TStringGrid); // Дает доступ к секции protected
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
with TSG(StringGrid1), Selection do
for i := Bottom downto Top do
DeleteRow(i)
end;
rioko (2012-07-14 19:55:00) [28]Омлет © Спасибо огромное за помощь, это как раз то что нужно)
> Работа программиста заключается не в поиске кода, а в его
> написании )
Для написание нужно понимание которого у меня к сожалению не было, а теперь есть) хоть и посредственное) Спасибо)
Омлет (2012-07-14 19:25:00) [29]
procedure TForm1.Button1Click(Sender: TObject);
// При нажатии на Button1 удалятся выделенные в StringGrid1 строки
var
i, h: integer;
begin
with StringGrid1, Selection do
begin
h := Bottom - Top + 1;
for i := Top to RowCount - h - 1 do
Rows[i].Assign(Rows[i + h]);
RowCount := RowCount - h;
end;
end;
> Все что было мной найдено в интернете по этому поводу сводилось
> к тому как удалить известную выделенную строку.
Работа программиста заключается не в поиске кода, а в его написании )
rioko (2012-07-14 18:03:00) [30]Можно пример пожалуйста? Все что было мной найдено в интернете по этому поводу сводилось к тому как удалить известную выделенную строку. К примеру выделена строка 10 - ее и удалить. А как удалить строки к примеру 5 - 18, если они выделены в таблице среди прочих строк?
Омлет (2012-07-14 16:44:00) [31]SG.Selection
rioko (2012-07-14 15:58:00) [32]И как получить список всех выделеных строк?)
rioko (2012-07-14 15:57:00) [33]Как проверить - входит ли строка в список выделенных или нет? Как вообще проверить - выделена ли строка?