Un probleme avec MessageBox

Résolu
yugimega Messages postés 22 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juillet 2007 - 3 août 2005 à 11:51
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 - 12 sept. 2005 à 13:19
Bonjour,

J'essaye d'afficher un messagebox au chargemnt de l'application.
Mais Delphi me met qu'il y a une erreur.
J'ai mis une autre messagebox autre part dans l'application et elle marche très bien.
J'ai essayé tout : MessageBox, MessageBoxA, Application.MessageBox, ...
Mais rien ne marche aidé moi...

Voici mon code si vous voulez le voir...

procedure TForm1.FormCreate(Sender: TObject);
begin

//On met le chemin des images...
ini:=TIniFile.Create('WallPaper.ini');
FileListBox1.Directory:=ini.ReadString('Principal', 'Chemin', Edit1.Text);
If FileListBox1.Count = 0 Then
begin
Timer2.Interval:=0;
Button5.Caption:='Play';
PageControl1.SelectNextPage(True);
MessageBox(0,'Il n'y a pas d'image dans ce dossier.','Erreur',16);
end
Else if FileListBox1.Count > 0 Then
begin
//Afficher
end;
end;
ini.Free;

Donc ca c'est le messagebox qui marche pas...

procedure TForm1.Button1Click(Sender: TObject);
var
Dossier:String;
begin
If SelectDirectory('Veuillez choisir le dossier contenant vos images :', '',Dossier) Then
begin
FileListBox2.Directory:=Dossier;
If FileListBox2.Count > 0 Then Edit1.Text:=Dossier
else if FileListBox2.Count = 0 Then
begin
MessageBox(Form1.Handle, 'Le dossier séléctionné ne contient aucune image !'+#10+#13+'Vueillez séléctionner un autre dossier !', 'Erreur', 16);
Button1.Click;
end;
end;
end;

Et celui la marche ...

Merci...

7 réponses

yugimega Messages postés 22 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juillet 2007
3 août 2005 à 13:01
Salut,

Merci pour ta solution mais j'ai deja essayé cela mais aprés m'etre casser la tete a mort j'ai découvert que ca marche pas entre les ini:=TIniFile.Create('WallPaper.ini'); et ini.free;.
J'ai mis mon code d'affichage de messagebox après et pof ca marche...
Donc ma conclusion est que les messagebox ne marche pas dans les truc ini...

Sinon merci quant meme florenth...
3
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
3 août 2005 à 12:50
Salut,

Tu utilises une fois Form1.Handle ou 0 (zéro) comme premier parametre
de la fonction. Je n'ai jamais rempli ce parametre (je le mets tjrs à
zéro) et cela marche impec.



Essaye cela.

@ ++

Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
3 août 2005 à 16:23
Dans ta clause uses oublie pas d'ajouter : ShellAPI !

Cordialement.

Damien
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
3 août 2005 à 16:29
Ah oui et ...

Caste en PChar pour convertir tes strings ...

Exemple :

MessageBoxA( Self.Handle, Pchar('Ceci est ma boite de dialogue'), Pchar('Titre'), 32 );

@+

Damien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
3 août 2005 à 17:31
elguevel >

Dis, pourquoi tu veux rajouter ShellApi dans les uses.

Cela n'a rien a voir avec les Messagebox() qui sont déclarés dans l'unité Windows.pas.

Ce n'est pas la peine de transtyper les strings en PChar si elle sont
saisies directement dans le code. C'est déjà fait implicitement par
Delphi.

Par contre si c'est une variable, alors oui.



yugimega > C'est bien que tu aies résolu ton problème. Par contre,
ta façon de voir les choses me parait suspecte. (l'histoire que c'est
entre un Ini := TIniFile.Create() et un Ini.Free; ).

Peux-tu me donner le message d'erreur que tu obtenais (en entier) pour que j'essaye d'éclaircir cela ?



@ ++

Florent

Si tu ne te plantes pas ......
tu ne poussera jamais
0
yugimega Messages postés 22 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juillet 2007
4 août 2005 à 12:57
J'ai remarqué j'ai fait des erreur quand j'ai copié le code sur le forum donc voici la vrai version :

procedure TForm1.FormCreate(Sender: TObject);
begin

//On met le chemin des images...
ini:=TIniFile.Create('WallPaper.ini');
FileListBox1.Directory:=ini.ReadString('Principal', 'Chemin', Edit1.Text);
If FileListBox1.Count = 0 Then
begin
Timer2.Interval:=0;
Button5.Caption:='Play';
PageControl1.SelectNextPage(True);
MessageBox(0,'Il n''y a pas d''image dans ce dossier.','Erreur',16);
end
Else if FileListBox1.Count > 0 Then
begin
//Afficher
end;
ini.Free;
end;

Et Florent le message d'erreur qu'il me met est le suivant :

Le project1 Project1.exe à provoqué une classe d'exception EAccessViolation avec le message 'Violation d'accès à l'adresse 00000000. Lecture de l'adresse 00000000'. Processus stoppé. Utilisez Pas-à-pas ou Exècuter pour continuer.

Les deux boutons en dessous sont OK et Aide

Voila,voila...
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
12 sept. 2005 à 13:19
florenth >

Mea Culpa, effectivement je vient de voir mon annerie, Les messagebox ne sont en rien lié avec ShellApi (mais plutot Windows).
( J'ai du confondre avec une autre API )

Et dsl pour le PChar, je sais que çà marche en type string mais j'ai l'habitude de toujours caster avec PChar quand on me demande un PChar, donc désolé çà aussi c'est pas necessaire !

Merci , ++
0
Rejoignez-nous