Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизКак по нажатию кнопки выбрать (multiselect) все строки в DBGrid? Найти похожие ветки
← →
serg128 (2004-06-24 13:00) [0]Т.е. у меня есть грид, к которому подключен датасет. Мне нужно, чтобы по нажатию на кнопку (Button1) Выбирались (подсвечивались синим) все строки в гриде (у которого установлено св-во multiselect := true;). Подскажите плиз, как это сделать?
← →
Reindeer Moss Eater © (2004-06-24 13:19) [1]А зачем?
← →
serg128 (2004-06-24 13:22) [2]Надо, приказ.
← →
Reindeer Moss Eater © (2004-06-24 13:25) [3]Спорим, что не надо?
← →
serg128 (2004-06-24 13:33) [4]я вообщето по делу спрашивал, но можем поспорить, если делать особо нечего.
← →
Reindeer Moss Eater © (2004-06-24 13:34) [5]Я то же по делу спросил.
Зачем?
← →
Johnmen © (2004-06-24 13:44) [6]>serg128 (24.06.04 13:00)
Не уверен насчет D5, а в D6 есть хороший пример в хелпе...
← →
serg128 (2004-06-24 13:46) [7]а где именно? или сбросьте пож-ста пример из D6. Если честно, то я пишу на С++ Builder, просто сайт этот классный!
← →
Johnmen © (2004-06-24 13:49) [8]
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
for j := 0 to FieldCount-1 do
begin
if (j>0) then s:=s+", ";
s:=s+Fields[j].AsString;
end;
Listbox1.Items.Add(s);
s:= "";
end;
end;
← →
Соловьев © (2004-06-24 13:50) [9]:)
procedure TForm1.Button1Click(Sender: TObject);
begin
with DBGrid1 do begin
Color := clNavy;
Font.Color := clWhite;
end;
end;
← →
Reindeer Moss Eater © (2004-06-24 13:50) [10]Проследи за полетом "инженерской" мысли:
Тебе дают приказ выделить все программно.
Ты вынужден проскроллить весь датасет что бы внести каждую строку в список букмарков.
После чего тебя просят произвести групповую операцию над выделением (ну не для красоты же тебя просили сделать выделение)
Ты за каким-то хреном листаешь свой список букмарков, делаешь для каждой GotoBookmark что бы обработать выделенную запись.
Спрашивается: Зачем?
Когда под кнопкой "выделить все" можно поместить кодfirst; while not eof do begin dowhatyouwant; newt; end;
← →
Reindeer Moss Eater © (2004-06-24 13:53) [11]И получаешь один полный проход по датасету вместо двух с программным выделением строк
← →
Johnmen © (2004-06-24 13:57) [12]После запостивания ответа, я прочитал вопрос :)))
(А как же иначе ? :))
Приведенный пример - обход отмеченных в гриде записей.
← →
Reindeer Moss Eater © (2004-06-24 14:02) [13]Приведенный пример - обход отмеченных в гриде записей.
Вот мне тупому невдомек. Зачем делать GotoBookMark (предварительно выстроив их список) если заведомо известно что в выделении находятся ВСЕ записи?
:)
← →
Johnmen © (2004-06-24 14:04) [14]А это я не тебе... :)
На твои высказывания я не возражаю...
← →
Reindeer Moss Eater © (2004-06-24 14:05) [15]Дык и я тоже не тебе, а автору.
:)
← →
Ega23 © (2004-06-24 14:19) [16]procedure TRxDBGrid.SelectAll;
var
ABookmark: TBookmark;
begin
if MultiSelect and DataLink.Active then begin
with Datalink.Dataset do begin
if (BOF and EOF) then Exit;
DisableControls;
try
ABookmark := GetBookmark;
try
First;
while not EOF do begin
SelectedRows.CurrentRowSelected := True;
Next;
end;
finally
try
GotoBookmark(ABookmark);
except
end;
FreeBookmark(ABookmark);
end;
finally
EnableControls;
end;
end;
end;
end;
procedure TRxDBGrid.UnselectAll;
begin
if MultiSelect then begin
SelectedRows.Clear;
FSelecting := False;
end;
end;
← →
serg128 (2004-06-24 15:20) [17]Оказывается достаточно было сделать DBGrid->SelectAll();
Всем спасибо :) !!!!
← →
Соловьев © (2004-06-24 15:21) [18]ну и зря:) надо было всего-то [9]
← →
serg128 (2004-06-24 15:36) [19]А у меня обработчик есть на мультиселект.
Мне бы ещё выделять по Ctrl+PgDown (как в Excel)
← →
Ega23 © (2004-06-24 15:41) [20]Мне бы ещё выделять по Ctrl+PgDown (как в Excel)
Ну и в чём проблема? OnKeyUp тебе нужно событие.
← →
serg128 (2004-06-24 15:50) [21]-> Ega23
Ну а как мне диапазон выделить?
← →
Reindeer Moss Eater © (2004-06-24 15:58) [22]Ну а как мне диапазон выделить?
две переменные TBookmark, Метод CompareBookmark, пара флагов и метод Next или Previous
← →
Reindeer Moss Eater © (2004-06-24 15:59) [23]Ну еще OnKeyDown, Up
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.031 c