Форум: "Базы";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];
ВнизКак программно кликнуть в определенной строке DBGrid_a Найти похожие ветки
← →
MaximShabanov (2002-05-06 22:20) [0]Задача вроде прооста: по автоинкрементальному полю выбрать номер записи и программно кликнуть на ДБГриде. Может кто подскажет как это реализовать?
Заранее благодарен!
← →
Fay (2002-05-07 07:26) [1]Я, быть может, чего-то не понял...
Вызови обработчик OnClick-а
← →
Song (2002-05-07 08:35) [2]Спозиционируйие мышь в нужную точку и сгенеруйте клик.
← →
Anatoly Podgoretsky (2002-05-07 08:48) [3]Странные какие то задачи
← →
+aaZ (2002-05-07 10:43) [4]Ну и советы: мышь подвинуть ... с головой-то всё в порядке ???
Вопрос в том в чём состоит задача:
1) Надо встать на заранее известную запись, и там что-то сделать (кликнуть)
2) Надо перебрать записи последовательно, и в каждой кликнуть.
Во-первых дбгрид это только отображение данных, сами данные лежат в Query привязанному к DataSource либо в Table ...
В обоих случаях надо использовать Actions!!! У многих компонент например у всех кнопок, у меню. и прочего есть такое понятие Action, вот там и надо выбирать тот Action который ты написал.
Получаем следующие преимущества, Action можно повесить на обработчик клика, но не в Object Inspector"е выбирать событие OnClick, а сделать новую функцию на OnClick и уже в ней написать:
Action1.Execute;
В этом случае если Action стоит в Enable=false; действие выполнятся не будет, зачем это нужно ???
Очень просто предположим что на Action1Execute стоит показ окна MessageBox, а сам Action висит на кнопке, в главном меню, и в контестном меню, тогда стоит мне сказать Action1.Enabled=false; тут же становятся недоступны соответствующие кнопки (где бы они не находились) пункты меню и прочее, если я поменяю Caption у Action то он изменится у всех конопок на которм этот Action у всех пунктов меню и прочего. Теперь как это всё должно работать в нашем случае
Рассмотрим случай с Query:
Случай 1. (надо встать на заранее известую запись)
implementation
{$R *.dfm}
procedure TForm1.Action1Execute(Sender: TObject);
begin
// Здесь можно что-то сделать при клике на ДБГриде
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Opts: TLocateOptions;
begin
Query1.Locate("ID",153,Opts);
Action1.Execute;
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Action1.Execute;
end;
end.
Здесь мы нашли запись 153, в поле с именем ID... встали туда и что-то сделали. Начали всё это делать после того как нажали кнопку 2.
во втором случае надо делать то же самое только перебрать все записи.
для этого
procedure TForm1.Button2Click(Sender: TObject);
var
Opts: TLocateOptions;
i: Integer;
begin
Query1.First;
for i:=0 to Query1.RecordCount do
begin
Action1.Execute;
Query1.Next;
end;
end;
Если что-то не понятно, пиши вышлю проект целиком ... не могу я здесь так подробно писать.
← →
Johnmen (2002-05-07 10:55) [5]Ммм-да-а-а-а-а...
Еще один сенсей, путающийся в терминологии и не понимающий сути вопроса...
Печально... <:(
← →
Lusha (2002-05-08 11:03) [6]Смотрите функцию mouse_event и свойство TCustomGrid.CellRect... Может полегчает... :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c