В стиле questionnaireitem есть две кнопки событие которых присваивается через OnDeleteClick и OnEditClick
Ниже пример построения элементов
procedure TfrJournalQuestionnaire.InitList;
var
Index: Integer;
AItem: TQuestionnaireItem;
begin
lbJournalQuestionnaire.Items.Clear;
for Index := 1 to 5 do
begin
AItem := TQuestionnaireItem.Create(lbJournalQuestionnaire);
AItem.QuestionnaireId := Index;
AItem.Dozsait := 'Дозорый сайт '+ Index.ToString;
AItem.OnEditClick := ClickQuestionnaireEdit;
AItem.OnDeleteClick := ClickQuestionnaireDelete;
lbJournalQuestionnaire.AddObject(AItem);
end;
end;
Визуально выглядит так
На событие клика кнопки присваиваются процедуры ClickQuestionnaireEdit и ClickQuestionnaireDelete
Теперь вопрос, как получить из процедур ClickQuestionnaireEdit и ClickQuestionnaireDelete объект TQuestionnaireItem, необходимо получить значение свойств QuestionnaireId и Dozsait
У процедур есть Sender но это ссылка на кнопку стиля
Вопрос
Alexey Lovchikov
Здравствуйте,
Есть следующий класс, наследник от TListBoxItem и свой стиль questionnaireitem
TQuestionnaireItem = class(TListBoxItem) private FQuestionnaireId: Integer; procedure SetDozsait(const Value: string); procedure SetOnEditClick(const Value: TNotifyEvent); procedure SetOnDeleteClick(const Value: TNotifyEvent); public constructor Create(AOwner: TComponent); override; property QuestionnaireId: Integer read FQuestionnaireId write FQuestionnaireId; property Dozsait: string write SetDozsait; property OnEditClick: TNotifyEvent write SetOnEditClick; property OnDeleteClick: TNotifyEvent write SetOnDeleteClick; end; { TQuestionnaireItem } constructor TQuestionnaireItem.Create(AOwner: TComponent); begin inherited Create(AOwner); StyleLookup := 'questionnaireitem'; Height := 220; end; procedure TQuestionnaireItem.SetDozsait(const Value: string); begin Self.StylesData['lbdozsait.Text'] := Value; end; procedure TQuestionnaireItem.SetOnDeleteClick(const Value: TNotifyEvent); begin Self.StylesData['btdelete.OnClick'] := TValue.From<TNotifyEvent>(Value); end; procedure TQuestionnaireItem.SetOnEditClick(const Value: TNotifyEvent); begin Self.StylesData['btedit.OnClick'] := TValue.From<TNotifyEvent>(Value); end;В стиле questionnaireitem есть две кнопки событие которых присваивается через OnDeleteClick и OnEditClick
Ниже пример построения элементов
procedure TfrJournalQuestionnaire.InitList; var Index: Integer; AItem: TQuestionnaireItem; begin lbJournalQuestionnaire.Items.Clear; for Index := 1 to 5 do begin AItem := TQuestionnaireItem.Create(lbJournalQuestionnaire); AItem.QuestionnaireId := Index; AItem.Dozsait := 'Дозорый сайт '+ Index.ToString; AItem.OnEditClick := ClickQuestionnaireEdit; AItem.OnDeleteClick := ClickQuestionnaireDelete; lbJournalQuestionnaire.AddObject(AItem); end; end;Визуально выглядит так
2 ответа на этот вопрос
Рекомендуемые сообщения