Utiliser un TopenPictureDialog

Résolu
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 17 janv. 2007 à 13:40
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 19 janv. 2007 à 16:30
Bonjour,

Je cale sur une application qui charge des images au format Bmp en créant une liste avec un Tcombobox, avant de pouvoir appliquer un effet, seulement cela oblige de créer un dossier "Image" et de placer au moins 2 images ainsi que celles ou ont veux appliquer un effet.

J'aimerai pouvoir utiliser à la place un TopenPictureDialog avec le filtre "*.bmp" même si il faut l'utiliser en association avec le Tcombobox, ce qui éviterait une contrainte pour l'utilisateur.

Voici ce que j'utilise comme procédure :

procedure TMainForm.initBackgroundsNames();
var
  searchRec: TSearchRec;
begin
  backgroundsNames := TStringList.Create();


  // Liste les images du répertoire Image\
  if findFirst(rep+'Image\*', faAnyFile, searchRec) = 0 then
    begin
    repeat
      if extractFileExt(searchRec.Name)='.bmp' then
        backgroundsNames.Add(searchRec.Name);
    until findNext(searchRec)<>0;
    end;


  // Ajout de la liste des fichiers bmp dans la comboBox
  ComboBox1.Items.AddStrings(backgroundsNames);
end;



procedure TMainForm.initBackgroundBitmap(fileName: string);
begin
 
// Si le bitmap n'existe pas déjà (initialisation) on le crée
  if not assigned(backgroundBitmap) then backgroundBitmap := TBitmap.Create();
  try
    // Chargement du bitmap depuis le fichier
    backgroundBitmap.LoadFromFile(rep+'Image\'+fileName);
   
// Passage en mode RVB 24 bit pour le travail des pixels
    backgroundBitmap.PixelFormat := pf24bit;
  except


    showMessage('Erreur: ce n''est pas une image adéquate');
  end;
end;

Merci d'avance et bon coding,

@+,

Cincap

[url]mailto:/url

3 réponses

cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
19 janv. 2007 à 16:30
Bonjour,

@ Cirec, faux problème pour toi mais pour un débutant c'est autre chôse  car à l'exécution de la forme, le mouvement d'onde est déjà en action, d'ailleurs si tu élimines les fichiers images de base, tu as une exception (code de neodelphi) donc je ne vois pas comment intercaler un TopenPictureDialog, tant pis.

Merci et à bientôt

@ +,

Cincap

[url]mailto:/url
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 janv. 2007 à 11:35
Salut,

J'ai pas bien compris ce que tu demandes

mais en attendant que tu m'expliques un peut ce que tu désires réaliser, je peu quand même te dire que ta fonction de recherche
ne me parait pas correcte ... pas de FindClose

ensuite tu pouvais directement écrire ceci :
  if findFirst(rep+'Image\*.BMP', faAnyFile, searchRec) = 0 then ...

Sinon pour afficher tous les Bitmaps dans un Combobox tu peux tout simplement faire ceci :
procedure TForm1.FormCreate(Sender: TObject);
Var aDir : String;
begin
 aDir : = Path.MYPICTURES + '*.BMP';
 With ComboBox1 do Begin
   Text := EmptyStr;
   SendMessage(Handle, CB_DIR, DDL_ARCHIVE, Integer(aDir));
 End ;
End;

 
@+
Cirec

<hr size ="2" />
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
19 janv. 2007 à 14:29
"Seulement il y a une contrainte puisque les images doivent se trouver dans un répertoire défini (Image)."

c'est un faux problème ...

comme c'est toi qui fait l'application c'est à toi de la concevoir de la sorte qu'elle soit le plus flexible possible

Pour la modification de JPG il faut dans un premier temps convertir l'image en BMP pour pouvoir appliquer un effet et pour finir le re-convertir en JPG pour l'enregistrer.

D'une manière générale les effets et autres modifications ne sont applicables qu'aux bitmaps

 
@+
Cirec

<hr size="2" />
0
Rejoignez-nous