2009-06-11 4 views

ответ

3

ингредиенты:

  • 1 булева переменная компонента
  • 1 TImage
  • 1 линия добавлен, чтобы сформировать OnCreate обработчик события
  • 1 обработчик события TImage.OnClick

1) Создайте булевскую переменную в частном разделе объявления формы. В этом примере вызовите эту переменную fImageActive.

private 
    fImageActive : boolean; 

2) От дизайнера форм, падение (или выберите существующий) TImage компонент на форме и выберите событие OnClick и дважды нажмите, чтобы перейти в редактирование. Затем добавьте следующий код:

fImageActive := not fImageActive; 
    if fImageActive then 
    Image1.Picture.LoadFromFile('1active.png') 
    else 
    Image1.Picture.LoadFromFile('1inactive.png') 

3) Из вида конструктора, найдите свойство изображения и нажмите кнопку с многоточием, чтобы загрузить файл 1active.png для стартеров.

4) Нажмите на форму, найти мероприятие под названием «OnCreate», двойной щелчок и добавьте следующий код (это установит начальное состояние):

fImageActive := true; 
0

Вам необходимо загрузить оба изображения в файл ресурсов вашего проекта, а во время выполнения вы можете прочитать фотографии из файла ресурсов и загрузить их в расписание OnClick. Версия Delphi настоящее время я использую (6) не имеет встроенную поддержку для PNG файлов, но я думаю, что последний вариант сделать

+2

bBuilt поддержка PNG не была введена до Delphi 2009. –

+0

Это для дополнительного ввода Mason – Pascal

5

Я предполагаю, что вы используете D2009, как вы может загрузить файл PNG в Image1.

Если вы не хотите распространять свои изображения вместе с приложением (как решение skamradt подразумевает), вы должны включить их в качестве ресурсов:
Добавить PNG в ваш проект: меню Использование "Project | Ресурсы. .. "и добавьте файлы.
Имя их соответствующим образом, чтобы получить что-то вроде:

1active.png RCData PngImage_Active 
1inactive.png RCData PngImage_Inactive 

В Вашем Click случае, вам понадобится индикатор состояния, чтобы узнать, какой из них для отображения (например, skamradt).
Я использовал Image1.hint, чтобы указать, какое изображение загружено (быстрое и грязное, для демонстрационной цели).

Используйте LoadImgFromPngResource процедурный ниже, чтобы загрузить соответствующий PNG изображение:

procedure LoadImgFromPngResource(const AResName: string; DestImage: TImage); 
var 
    png: TPngImage; 
begin 
    png := TPngImage.Create; 
    try 
    png.LoadFromResourceName(HInstance, AResName); 
    DestImage.Picture.Assign(png); 
    finally 
    png.Free; 
    end; 
end; 

procedure TForm4.Image1Click(Sender: TObject); 
begin 
    if Image1.Hint <> 'Active' then 
    begin 
    LoadImgFromPngResource('PngImage_Active', Image1); 
    Image1.Hint := 'Active'; 
    end 
    else 
    begin 
    LoadImgFromPngResource('PngImage_Inactive', Image1); 
    Image1.Hint := 'Inactive'; 
    end; 
end; 

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

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