TMS DBPlanner — копирование и вставка события

Я пытаюсь скопировать и вставить событие из DBPlanner. Я пытался :

procedure TForm1.Copy1Click(Sender: TObject);
begin
DBPlanner2.Items.Select(APlannerItem);
DBPlanner2.Items.CopyToClipboard;
DBPlanner2.SelectCells(DBPlanner2.SelItemBegin,DBPlanner2.SelItemEnd, DBPlanner2.SelPosition + 1);
end;

Я получил :

[Ошибка dcc32] Unit1.pas(107): E2003 Необъявленный идентификатор: «APlannerItem»

Затем вставить:

procedure TForm1.Paste1Click(Sender: TObject);
begin
DBPlanner2.Items.PasteFromClipboardAtPos;
end;

Что я делаю неправильно ?


person user3927897    schedule 18.02.2015    source источник
comment
Как заявляет компилятор, он не знает, что такое APlannerItem, и мы тоже. Где заявлено? Откуда оно вообще взялось? Вам нужно будет объявить его где-нибудь и присвоить ему какое-то значение   -  person Jason    schedule 18.02.2015


Ответы (1)


Похоже, вы совершили классическую ошибку, а именно копирование кода либо из примеров, либо из другого кода. Не беспокойтесь, мы все это сделали.

APlannerItem в ошибке компилятора относится к первой строке в Copy1Click:

DBPlanner2.Items.Select(APlannerItem);

В контексте Copy1Click компилятор не знает, что такое APlannerItem. Это может быть что-то, что вы взяли из примера, документации или другого кода, и в этом случае он, скорее всего, относится к параметру функции/процедуры в том коде, где появилась строка.

Теперь вам нужно изменить это на конкретный PlannerItem, который вы хотите выбрать и скопировать. Я предполагаю, что вы нажимаете на PlannerItem, прежде чем хотите скопировать. Если это так, вы должны обратиться к этому PlannerItem. Если нет, то вы должны получить доступ к PlannerItem через индексированный список PlannerItem DBPlanner, каким бы ни было имя функции. Я вижу, что у вас есть свойство Items в DBPlanner2, так что это может быть переход к нужному элементу. Может быть даже свойство ItemIndex, в котором указано, какой элемент выбран.

В качестве примечания на случай, если вы не знали этого раньше: компилятор всегда пытается показать вам, где произошла ошибка, и в случае ошибки он покажет номер строки кода, где произошла ошибка. В данном случае строка номер 107. Перейдите к этой строке и проверьте код, чтобы выяснить, в чем проблема.

person Blurry Sterk    schedule 18.02.2015
comment
Жаль, что я не знал, что там написать.... никогда не использовал это раньше.... Извините....Код взят из руководства по TMS. - person user3927897; 18.02.2015
comment
(DBPlanner2.Items.Selected) ?? - person user3927897; 18.02.2015
comment
(DBPlanner2.Items.Selected) работает, но интересно, почему не копирует время. - person user3927897; 18.02.2015
comment
Тяжело сказать. Я никогда не использовал компоненты, поддерживающие БД. Не смогу комментировать, что копирует, а что нет. Могу ли я тогда предположить, что моего ответа было достаточно для решения вашей первоначальной проблемы? - person Blurry Sterk; 18.02.2015