2016-01-30 1 views
0

я быть_наст 5 элементов, созданные во время выполнения, как этиизменения времени выполнения создается элемент стиль

NewButton := TImageViewer.Create(Self); 
    with NewButton do 
    begin 
     Parent := Self; 
     Bitmap.LoadFromStream(InStream); 
     Height := 80; 
     Width := 80; 
     tag:=leftx; 
     Position.X := leftx; 
     Position.Y := 5; 
     OnClick := WaitingButtonsClick; 
     Enabled := True; 
     Visible := True; 
     Name := 'but' + IntToStr(leftx); 
    end; 
leftx := leftx+85; 

так элементы имеют свое собственное имя и тег

теперь после нажатия пользователя изображения я должен изменить загруженный изображение

так я получил имя элемента после щелчка

procedure TForm1.WaitingButtonsClick(Sender: TObject); 
begin 
// ShowMessage((Sender as TAction).ActionComponent.Name); 
    ShowMessage(TImageViewer(Sender).Name); 
// id := TButton(Sender).tag; 
// showmessage('slm'+id.ToString); 
end; 

ok.af ter получить имя элемента, как я могу изменить целевой файл или стиль !?

+0

Я смущен, почему вы бросаете что-то из класса 'TImageViewer' в' TButton'? – quasoft

+1

В Delphi XE нет класса с именем 'TImageViewer'. Это класс FMX. Какую версию Delphi вы используете? –

+0

@quasoft извините, моя ошибка .. обновлено сейчас! –

ответ

2

Кажется, что вы бросаете объект типа TImageViewer в TButton.

Измените обработчик щелчка так:

procedure TForm1.WaitingButtonsClick(Sender: TObject); 
var 
    viewer: TImageViewer; 
begin 
    viewer := Sender as TImageViewer; 

    // Change file or style of viewer 
    //viewer.Bitmap.LoadFromFile(....); 

    ... 
end; 

Как правило, всегда отбрасывать объекты с as оператора:

viewer := Sender as TImageViewer - RIGHT

против

viewer := TImageViewer(Sender) - WRONG

Выгода заключается в том, что оператор as выполняет проверки безопасности для вас и предупреждает вас, если вы пытаетесь использовать несовместимый тип.

Второй вариант может использоваться только в том случае, если переменная является простым указателем (а не объектом), и это редко требуется.


Также использование позиции по форме для создания уникальных имен компонентов не рекомендуется.

Его лучше придумать другую схему создания имени компонента.

Например, вы можете определить счетчик в форме и добавить этот счетчик к именам компонентов.

 Смежные вопросы

  • Нет связанных вопросов^_^