salut tout le monde,
je voudrais savoir comment je pourrais faire pourque mon savedilog s'execute sur un panel et non sur une fenetre flottante.
Merdi d'avance
Version imprimable
salut tout le monde,
je voudrais savoir comment je pourrais faire pourque mon savedilog s'execute sur un panel et non sur une fenetre flottante.
Merdi d'avance
Le plus simple c'est de le réécrire.
Mouhais .... je pense qu il doit y avoir une autre solution
Personne n'a une petite idée ou une petite piste ?
Ce n'est qu'une idée.
Il faudrait pouvoir déclarer le panel comme étant le parent du SaveDialog et de positionner la fenêtre du SaveDialog par-dessus le panel, puis de trouver une combine pour réajuster ce positionnement à chaque tentative de déplacement de l'un par rapport à l'autre ... c'est à dire une usine à gaz.
Comme disait Philnext : "Le plus simple c'est de le réécrire". Sauf que je dirais qu'il n'y a pas grand-chose à réécrire en posant sur ton panel :
- un FileListBox,
- un DriveComboBox1 où l'on place dans sa propriété DirList (dans l'Inspecteur d'objets) la valeur DirectoryListBox1 ,
- un DirectoryListBox1 où l'on place dans sa propriéré FileList la valeur de FileListBox1
- et un FilterComboBox1 où l'on place idem dans sa propriéré FileList la valeur de FileListBox1
Pour compléter la syncgronisation des affichages y'a plus qu'à taper quelques lignes de code pour les procedures réagissant au onChange :
Ce qui précède est utilisable pour se faire un SaveDialog ou un OpenDialog personnalisés.Code:
1
2
3
4
5
6
7
8 procedure TForm1.DriveComboBox1Change() begin DirectoryListBox1.Drive:=DriveCombBox1.Drive; end; procedure TForm1.DirectoryListBox1Change() begin FileListBox1.Directory:=DirectoryListBox1.Directory; end; procedure TForm1.FilterComboBox1Change() begin FileListBox1.Mask:=FilterComboBox1.Mask; end;
Reste lus qu'à ajouter un Bouton "Sauver" ou un Bouton "Ouvrir" et un Bouton "Echapper-Fermer-Annuler" et ajouter qq lignes de code pour gérer les click-Boutons.
... mais si tu trouves encore plus simple je suis également intéressé.
A+
Beh le truc c'est que je pense que l'interface des "dialogs" n'est pas codé ça doit etre un appel a une API de windows ou un truc dans le genre. donc il doit y avoir un moyen de faire ce que je voudrais ça avoi a tout recodé je pense
je me permet de relancer ce post ...
Je suis sur que les petits génies de la programmation on une idée sur mon problème
Ben tu as été voir le code de la uses dialogs? Tu t'apercevrais que ce n'est pas des API Windows. Regarde le DoExecute de TOpenDialog et tu t'en rendras compte tout seul. Après si tu veux décortiquer tout ca, c'est sur qu'il ya plein d'API qui sont appelées...Citation:
Beh le truc c'est que je pense que l'interface des "dialogs" n'est pas codé ça doit etre un appel a une API de windows ou un truc dans le genre. donc il doit y avoir un moyen de faire ce que je voudrais ça avoi a tout recodé je pense
Faut recuperer le handle de la fenetre de dialog et faire un SetPArent (unitee windows) pour l'affecter au panel.
Pour recuperer le handle, windows propose plusieurs foncitons comme : getForgroundWindow ou encore getWindow.
Si tu possede le handle direct, peut etre via une property handle du TSaveDialog, ca serait encore mieux.
ah beh macumba , j ai pas trop la meme lecture que toi de la source , vu que pour moi a aucin moment il n y a le codage d'une form (bonok je n ai fait que survoler en deux secondes:lol: )
je teste ta technique Clorish et je post la réponse
mea culpa il me manquait un mot :? je voulais dire que des API Windows...
Par contre y a un bout de code qui m'interpelle du coup à la lecture du doexecute c'est celui-ci :
alors que les fonctions ExplorerHook et DialogHook attendent des paramètres.Code:
1
2
3
4 if (ofOldStyleDialog in Options) or not NewStyleControls then lpfnHook := DialogHook else lpfnHook := ExplorerHook;
Ya quelqu'un qui pourrait éclairer ma lanterne?
Bon je vois pas trop comment faire en fait ...
vu que le handle est toujours a zéro, que la preocédure execute est bloquante et qu il n y a pas d'évenement qui se lance avant la construction ...