Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

StringGrid и удаление выделеных строк.


Страницы:   1 2

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]

Как проверить - входит ли строка в список выделенных или нет? Как вообще проверить - выделена ли строка?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо