Utilitaire mdi & routines mdi de base

Soyez le premier à donner votre avis sur cette source.

Vue 10 943 fois - Téléchargée 1 800 fois

Description

Une application MDI permet d'ouvrir plusieurs fenêtres indépendantes l'une de l'autre. Celles-ci se chevauchant, ... dans la fenêtre principale.
C'est un utilitaire permet d'atteindre facilement ( en un clic ) une des fenêtres MDI enfants. Un peu à l'image de l'application Taskman de windows.
J'en profite pour y ajouter des routines MDI de base tel que mettre toutes les fenêtres enfants en cascade, les fermer toutes, ...

L'utilitaire peut être encore améliorer & vos suggestions sont toujours les bienvenues.

Source / Exemple :


No code. All in the zip.

Conclusion :


Je voudrais pouvoir récupérer l'image ( via l'icône ) de chaque fenêtre enfant et le charger dans chaque bouton de mon utilitaire. Merci pour votre aide.

Pour le moment cette utilitaire est juste un petit projet mais je voudrais l'améliorer à la façon du Alt-tab de Windows. La suite dans quelques temps donc.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
13
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
14 avril 2013

bnjour

Je debute totalement et souhaiterais savoir comment faire pour afficher un autre formulaire car l ajout d un item dans le menu et la nouvelle proceudre onclick associee ne me permet pas d afficher autre chose que la meme fenetre.
Je souhaiterais donc appeller une fenetre que j aurais cree moi mais j en suis incapable je debute totalement...

merci de votre aide et de votre patience
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Pour créer une fenêtre enfant, ce n'est pas application.CreateForm qu'il faut appeler mais :
procedure TForm_Main.Menu_Mdi_NewClick(Sender: TObject);
Var Form:TForm1;
begin
if Mdichildcount <= 4 then Form:=TForm1.Create(Application);
if Mdichildcount > 4 then Menu_Mdi_New.Enabled := False;
end;
Ainsi tu peux supprimer les déclaration de Form2,Form3 et Form4 situées dans Form1. Car ceci t'a obligé à limiter le nombre de fenêtre enfants alors que ce n'est pas utile.

Pour récupérer l'icone de la fenêtre enfant, voici la nouvelle procédure Tache() :
procedure TForm_Tache.Tache();
var SpeedBouton:TSpeedButton;
Cpt:Integer;
Bmp1,Bmp2:TBitMap;
begin
if Form_Main.MDIChildCount > 0 then
for Cpt := Form_Main.MDIChildCount-1 downto 0 do
begin
SpeedBouton := TSpeedButton.Create(self);
SpeedBouton.Parent := Form_Tache;
SpeedBouton.Name := 'SP_Tache' + IntToStr(Cpt);
SpeedBouton.Height := SP_Height;
SpeedBouton.Width := SP_Width;
SpeedBouton.Top := (Cpt - MDIChildCount) * (SP_Height + EcartH);
SpeedBouton.Visible := True;
SpeedBouton.Caption := Form_Main.MDIChildren[Cpt].Caption;
SpeedBouton.Tag := Cpt;
SpeedBouton.Font.Size := 8;
SpeedBouton.OnClick := Form_Tache.OnClick;

//Associer une image au bouton
Bmp1:=TBitMap.Create;
Bmp2:=TBitMap.Create;
Try
bmp1.Width :=32;
bmp1.Height:=32;
bmp1.Canvas.Brush.Color:=clbtnface;
bmp1.Canvas.FillRect(Bmp1.Canvas.ClipRect);
bmp1.Canvas.StretchDraw(Bmp1.Canvas.ClipRect,Form_Main.MDIChildren[Cpt].Icon)
bmp2.Width :=20;
bmp2.Height:=20;
bmp2.Canvas.StretchDraw(Bmp2.Canvas.ClipRect,Bmp1);
SpeedBouton.Glyph.Assign(bmp2);
Finally
Bmp1.Free;
Bmp2.Free;
End;
end;
end;

Pour le tester j'ai ajouté une icone ménuellement dans le OnCreate de TForm1 : Icon.LoadFromFile('MonIcone.Ico'). Mais le mieux serai d'ajouter un fichier .RES avec les icones.

Bonne continuation,

Nono.
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Dans la procédure TForm_Tache.Tache();
Il faut supprimer la ligne suivante pour ne pas avoir d'erreur à la fermeture de l'application :
Image := TImage.Create(self);

Pour les icones, je vais voir si je trouve quelque-chose...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.