2009-06-11 7 views

Répondre

3

ingrédients:

  • 1 variable booléenne
  • 1 composant TImage
  • une ligne ajoutée pour former gestionnaire d'événement OnCreate
  • 1 gestionnaire d'événements TImage.OnClick

instructions:

1) Créez une variable booléenne dans la section privée de votre déclaration de formulaire. Pour cet exemple, appelez cette variable fImageActive.

private 
    fImageActive : boolean; 

2) du concepteur de forme, goutte (ou sélectionnez un composant TImage existant) sur le formulaire et sélectionnez l'événement onClick, et cliquez deux fois pour passer en édition. Ensuite, ajoutez le code suivant:

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

3) du concepteur de formulaire, recherchez la propriété d'image et cliquez sur le bouton de sélection pour charger le fichier 1active.png pour commencer.

4) Cliquez sur le formulaire, trouver l'événement nommé « OnCreate », double-cliquez et ajoutez le code suivant (cela définir l'état initial):

fImageActive := true; 
0

Vous devez charger les deux images dans le fichier de ressources de votre projet, et en exécution, vous pouvez lire les images du fichier de ressources et les charger dans le Timage sur OnClick. La version de Delphi Je suis actuellement à l'aide (6) n'a pas prise en charge native des fichiers PNG, mais je pense que cette dernière version, faites

+2

bBuilt en charge PNG n'a pas été introduit jusqu'à Delphi 2009. Ce –

+0

est pour l'entrée supplémentaire Mason – Pascal

5

Je suppose que vous utilisez D2009 comme vous peut charger un fichier png dans Image1.

Si vous ne voulez pas distribuer vos images avec votre application (comme solution de skamradt implique), vous devez les inclure comme ressources:
Ajouter le .png à votre projet: Utilisez le menu "projet | Ressources. .. "et ajoutez les fichiers.
Nom en conséquence pour obtenir quelque chose comme:

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

Dans votre événement Click, vous aurez besoin d'un indicateur d'état de savoir lequel à afficher (comme skamradt).
J'ai utilisé Image1.hint pour indiquer quelle image est chargée (rapide et sale, à des fins de démonstration).

Utilisez le proc LoadImgFromPngResource ci-dessous pour charger l'image .png appropriée:

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;