Système de programmation/next (précédent) dans le mdi, éditeurs


'Comment' programmer le système de menu dans les fenêtres filles MDI
d'un MDI éditeur de texte ou textwriter de changer Next et Prev
à partir de z-pile fonctionnant à l'utile rédaction/édition de tâches
Système de Programmation/Next (Précédent) dans le MDI, les rédacteurs
Par Gene Fowler
[email protected]

Écrit étendue des bloc-notes est une pratique courante et le nouveau bloc-notes
est presque toujours une application MDI. TextEdit est un 'échantillon' ou
'démo' qui a été dans tous Delphi paquet. J'ai écrit cela pour mon
même le bloc-notes qui a commencé dans TextEdit en 1997, de sorte que
je n'ai même pas le changement de l'unité de noms pour vous mettre le code
dans TextEdit de la source, de la compilation et de l'exécution des tests.
L'enfant MDI Système de menu Suivant est resté inchangé depuis le temps
immémoriaux. C'est un programmeur 'test run' de la pile z de l'open
windows (éditeurs, dans notre cas). Ouvrir un certain nombre de fichiers ou d'éditeurs.
continuez à frapper Système/Next ou Ctrl F6 et vous continuez à mettre le haut
la carte au bas de la pile. Utiliser le (s) Système/Prev par
Maj Ctrl F6 et faire une marche arrière en mettant le bas
de la carte vers le haut. Utile en alpha-test. Il n'est pas utile dans un
de l'éditeur. Après le saut entre les fenêtres pour une fois, la pile z n
reflète plus la charge (ou de la fenêtre numéro de commande et vous avez
une sorte de hasard fenêtre d'accès.
Ce qui serait utile pour un auteur ou un éditeur serait de le garder
le fait de permuter les deux premiers windows et, après un saut vers une autre fenêtre
ou d'en ouvrir un nouveau, pour revenir à ces deux et aller sur la permutation.
Le code ci-dessous met en œuvre. Système/Next ou Ctrl F6 va faire
l'échange en portant le prochain-de-haut vers le haut. La dernière
deux positions sont mémorisés après chaque utilisation de la Prochaine et, le cas
postes sont décalées, Maj Ctrl F6 permettra de restaurer les deux
leurs positions après le dernier Système/Next ou Ctrl F6. Ce sera
travail en tout 32 bits de Delphi.
Si vous compilez TextEdit en Delphi 5.0 ou (après l'application
le Pack de mise à Jour) 5.01, vous aurez l'instabilité de TextEdit pour mettre des
cette dans. Tout programme MDI comme TextEdit fusionnés à l'aide de menus
saut et de lock-up lorsque vous passez au maximum windows. Dans Delphi 1
par 4 moins grave s'est produite. Le bouton [x]
le nouveau haut de l'éditeur serait en gris, mais fonctionnelle. Cela a été
parce que pas de 'Restaurer ... Maximiser' entre crochets le commutateur. Elles ont été
cloué sur un coup de force le menu en utilisable
état. Dans la version 5.0, le 'forçage code' a été supprimé. Mais pas de bracketing
a été inséré. Par conséquent, le plantage total. Des Solutions pour le D4 problème
est apparu en Delphi liste de bugs (pas de Borland). L'un de ces
les solutions permettra de résoudre le D5 problème. Cette URL, vous verrez
item 0372 en Delphi liste de bugs:
http://www.jrsoftware.org/buglist/generated/entry0372.htm
Copie Greg Chapman de la procédure (TCustomForm.MergeMenu) dans un
le fichier et l'enregistrer. Faire une copie de formes.pas et remplacez
procédure dans les formes.pas avec Chapman. Mettre l'altération des formes.pas
dans le TextEdit répertoire du projet et de faire un build de TextEdit.
j'ai lu que fourni VCL source ne correspond pas toujours au
DCU, mais cela ne semble pas causer de problèmes ici. Encore, c'est
une bonne idée de limiter l'altération de l'unité à l'individu projet MDI
répertoires et de ne pas l'utiliser en général comme de nouvelles formes.pas sur votre
chemin de la bibliothèque.
Le code ci-dessous est un gestionnaire de messages pour les placer dans MDIEdit.pas
et deux de réponse routines de place dans MDIFrame.pas. Les déclarations
sont également ici.
Code:
{ Ce gestionnaire de message est dans la MDIEdit.pas d'unité de la
& nbsp & nbsp Borland démo TextEdit utilisé comme un banc d'essai pour ce projet.
}
type
& nbsp & nbsp TEditForm = class(TForm)
& nbsp & nbsp ...
& nbsp & nbsp privé
& ! & ! & ! & nbsp ...
& ! & ! & ! & nbsp procédure WMSysCommand(var Msg: TWMSysCommand)
message WM_SYSCOMMAND
& ! & ! & ! & nbsp ...
procédure TEditForm.WMSysCommand(var Msg: TWMSysCommand)
begin
& nbsp & nbsp & nbsp Cas Msg.CmdType de
& ! & ! & ! & ! & ! & nbsp SC_NextWindow:
& ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp FrameForm.GetNext
& ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & nbsp SC_PREVWINDOW:
& ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp FrameForm.GetPrev
& ! & ! & ! & ! & ! & ! & nbsp fin

& ! & ! & ! & ! & ! & nbsp ailleurs hérité
& nbsp & nbsp & nbsp fin
fin
{ Ces deux routines sont dans le MDIFrame.pas d'unité de la
& nbsp & nbsp Borland démo TextEdit utilisé comme un banc d'essai pour ce projet.
}
type
& nbsp & nbsp TFrameForm = class(TForm)
& ! & ! & ! & nbsp ...
& ! & ! & ! & nbsp procédure GetNext
& ! & ! & ! & nbsp procédure GetPrev
& ! & ! & ! & nbsp ...
var
& nbsp & nbsp ...
& nbsp & nbsp IsMaxed: boolean
& nbsp & nbsp F6One: string
& nbsp & nbsp F6Two: string
application
procédure TFrameForm.GetNext
begin
& nbsp & nbsp si MDIChildCount < 2
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp messageBeep(0)
& ! & ! & ! & ! & ! & nbsp Sortie
& ! & ! & ! & nbsp fin
& nbsp & nbsp LockWindowUpdate(Manche)
& nbsp & nbsp F6One := ActiveMDIChild.Légende
& nbsp & nbsp si ActiveMDIChild.WindowState = wsMaximized puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := True
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsNormal
& ! & ! & ! & nbsp fin
& nbsp & nbsp MDIChildren[1].BringToFront
& nbsp & nbsp si IsMaxed puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := False
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsMaximized
& ! & ! & ! & nbsp fin
& nbsp & nbsp F6Two := ActiveMDIChild.Légende
& nbsp & nbsp LockWindowUpdate(0)
fin
procédure TFrameForm.GetPrev
var
& nbsp & nbsp i: integer
begin
& nbsp & nbsp si MDIChildCount < 2
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp messageBeep(0)
& ! & ! & ! & ! & ! & nbsp Sortie
& ! & ! & ! & nbsp fin
& nbsp LockWindowUpdate(Manche)
& nbsp & nbsp si ActiveMDIChild.WindowState = wsMaximized puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := True
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsNormal
& ! & ! & ! & nbsp fin
& nbsp & nbsp for i := 0 to MDIChildCount - 1 do
& ! & ! & ! & nbsp si MDIChildren[i].Caption = F6One puis
& ! & ! & ! & ! & ! & nbsp MDIChildren[i].BringToFront
& nbsp & nbsp for i := 0 to MDIChildCount - 1 do
& ! & ! & ! & nbsp si MDIChildren[i].Caption = F6Two puis
& ! & ! & ! & ! & ! & nbsp MDIChildren[i].BringToFront
& nbsp & nbsp si IsMaxed puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := False
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsMaximized
& ! & ! & ! & nbsp fin
& nbsp & nbsp LockWindowUpdate(0)
fin

Entrelacé Bibliographie
j'ai commencé ad-libbing ces articles sur le fait de faire certaines choses que je ne
& nbsp dans eWriter en Delphi démo TextEdit (à partir de laquelle j'ai construit eWriter).
& nbsp Il est naturel de s'accumuler tous ces dans une copie de TextEdit. Et
& nbsp vous pourriez avoir à aller en arrière et en avant de la remplir à nouveau, manqués ou
& nbsp changé routines de prise en charge. Coffret apparaissent des notes de la plupart des endroits. La Figure
& nbsp c'est en cours 'boutique' conversation...

  1. Système de Programmation/Next (Précédent) dans le MDI rédacteurs

    http://www.HowToDoThings.com/showarticle.asp?article=143


  2. Sélective de Carrelage dans le MDI Rédacteurs

    http://www.HowToDoThings.com/showarticle.asp?article=147


  3. Fenêtre de Suivi des Numéros dans le MDI Rédacteurs

    http://www.HowToDoThings.com/showarticle.asp?article=154


  4. Paragraphe 'coulée' à partir d'un éditeur de texte

    http://www.HowToDoThings.com/showarticle.asp?article=178










Systeme de programmation/next (precedent) dans le mdi, editeurs


Systeme de programmation/next (precedent) dans le mdi, editeurs : Plusieurs milliers de conseils pour vous faciliter la vie.


'Comment' programmer le systeme de menu dans les fenetres filles MDI
d'un MDI editeur de texte ou textwriter de changer Next et Prev
a partir de z-pile fonctionnant a l'utile redaction/edition de taches
Systeme de Programmation/Next (Precedent) dans le MDI, les redacteurs
Par Gene Fowler
[email protected]

Ecrit etendue des bloc-notes est une pratique courante et le nouveau bloc-notes
est presque toujours une application MDI. TextEdit est un 'echantillon' ou
'demo' qui a ete dans tous Delphi paquet. J'ai ecrit cela pour mon
meme le bloc-notes qui a commence dans TextEdit en 1997, de sorte que
je n'ai meme pas le changement de l'unite de noms pour vous mettre le code
dans TextEdit de la source, de la compilation et de l'execution des tests.
L'enfant MDI Systeme de menu Suivant est reste inchange depuis le temps
immemoriaux. C'est un programmeur 'test run' de la pile z de l'open
windows (editeurs, dans notre cas). Ouvrir un certain nombre de fichiers ou d'editeurs.
continuez a frapper Systeme/Next ou Ctrl F6 et vous continuez a mettre le haut
la carte au bas de la pile. Utiliser le (s) Systeme/Prev par
Maj Ctrl F6 et faire une marche arriere en mettant le bas
de la carte vers le haut. Utile en alpha-test. Il n'est pas utile dans un
de l'editeur. Apres le saut entre les fenetres pour une fois, la pile z n
reflete plus la charge (ou de la fenetre numero de commande et vous avez
une sorte de hasard fenetre d'acces.
Ce qui serait utile pour un auteur ou un editeur serait de le garder
le fait de permuter les deux premiers windows et, apres un saut vers une autre fenetre
ou d'en ouvrir un nouveau, pour revenir a ces deux et aller sur la permutation.
Le code ci-dessous met en œuvre. Systeme/Next ou Ctrl F6 va faire
l'echange en portant le prochain-de-haut vers le haut. La derniere
deux positions sont memorises apres chaque utilisation de la Prochaine et, le cas
postes sont decalees, Maj Ctrl F6 permettra de restaurer les deux
leurs positions apres le dernier Systeme/Next ou Ctrl F6. Ce sera
travail en tout 32 bits de Delphi.
Si vous compilez TextEdit en Delphi 5.0 ou (apres l'application
le Pack de mise a Jour) 5.01, vous aurez l'instabilite de TextEdit pour mettre des
cette dans. Tout programme MDI comme TextEdit fusionnes a l'aide de menus
saut et de lock-up lorsque vous passez au maximum windows. Dans Delphi 1
par 4 moins grave s'est produite. Le bouton [x]
le nouveau haut de l'editeur serait en gris, mais fonctionnelle. Cela a ete
parce que pas de 'Restaurer ... Maximiser' entre crochets le commutateur. Elles ont ete
cloue sur un coup de force le menu en utilisable
etat. Dans la version 5.0, le 'forçage code' a ete supprime. Mais pas de bracketing
a ete insere. Par consequent, le plantage total. Des Solutions pour le D4 probleme
est apparu en Delphi liste de bugs (pas de Borland). L'un de ces
les solutions permettra de resoudre le D5 probleme. Cette URL, vous verrez
item 0372 en Delphi liste de bugs:
http://www.jrsoftware.org/buglist/generated/entry0372.htm
Copie Greg Chapman de la procedure (TCustomForm.MergeMenu) dans un
le fichier et l'enregistrer. Faire une copie de formes.pas et remplacez
procedure dans les formes.pas avec Chapman. Mettre l'alteration des formes.pas
dans le TextEdit repertoire du projet et de faire un build de TextEdit.
j'ai lu que fourni VCL source ne correspond pas toujours au
DCU, mais cela ne semble pas causer de problemes ici. Encore, c'est
une bonne idee de limiter l'alteration de l'unite a l'individu projet MDI
repertoires et de ne pas l'utiliser en general comme de nouvelles formes.pas sur votre
chemin de la bibliotheque.
Le code ci-dessous est un gestionnaire de messages pour les placer dans MDIEdit.pas
et deux de reponse routines de place dans MDIFrame.pas. Les declarations
sont egalement ici.
Code:
{ Ce gestionnaire de message est dans la MDIEdit.pas d'unite de la
& nbsp & nbsp Borland demo TextEdit utilise comme un banc d'essai pour ce projet.
}
type
& nbsp & nbsp TEditForm = class(TForm)
& nbsp & nbsp ...
& nbsp & nbsp prive
& ! & ! & ! & nbsp ...
& ! & ! & ! & nbsp procedure WMSysCommand(var Msg: TWMSysCommand)
message WM_SYSCOMMAND
& ! & ! & ! & nbsp ...
procedure TEditForm.WMSysCommand(var Msg: TWMSysCommand)
begin
& nbsp & nbsp & nbsp Cas Msg.CmdType de
& ! & ! & ! & ! & ! & nbsp SC_NextWindow:
& ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp FrameForm.GetNext
& ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & ! & nbsp SC_PREVWINDOW:
& ! & ! & ! & ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp FrameForm.GetPrev
& ! & ! & ! & ! & ! & ! & nbsp fin

& ! & ! & ! & ! & ! & nbsp ailleurs herite
& nbsp & nbsp & nbsp fin
fin
{ Ces deux routines sont dans le MDIFrame.pas d'unite de la
& nbsp & nbsp Borland demo TextEdit utilise comme un banc d'essai pour ce projet.
}
type
& nbsp & nbsp TFrameForm = class(TForm)
& ! & ! & ! & nbsp ...
& ! & ! & ! & nbsp procedure GetNext
& ! & ! & ! & nbsp procedure GetPrev
& ! & ! & ! & nbsp ...
var
& nbsp & nbsp ...
& nbsp & nbsp IsMaxed: boolean
& nbsp & nbsp F6One: string
& nbsp & nbsp F6Two: string
application
procedure TFrameForm.GetNext
begin
& nbsp & nbsp si MDIChildCount < 2
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp messageBeep(0)
& ! & ! & ! & ! & ! & nbsp Sortie
& ! & ! & ! & nbsp fin
& nbsp & nbsp LockWindowUpdate(Manche)
& nbsp & nbsp F6One := ActiveMDIChild.Legende
& nbsp & nbsp si ActiveMDIChild.WindowState = wsMaximized puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := True
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsNormal
& ! & ! & ! & nbsp fin
& nbsp & nbsp MDIChildren[1].BringToFront
& nbsp & nbsp si IsMaxed puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := False
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsMaximized
& ! & ! & ! & nbsp fin
& nbsp & nbsp F6Two := ActiveMDIChild.Legende
& nbsp & nbsp LockWindowUpdate(0)
fin
procedure TFrameForm.GetPrev
var
& nbsp & nbsp i: integer
begin
& nbsp & nbsp si MDIChildCount < 2
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp messageBeep(0)
& ! & ! & ! & ! & ! & nbsp Sortie
& ! & ! & ! & nbsp fin
& nbsp LockWindowUpdate(Manche)
& nbsp & nbsp si ActiveMDIChild.WindowState = wsMaximized puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := True
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsNormal
& ! & ! & ! & nbsp fin
& nbsp & nbsp for i := 0 to MDIChildCount - 1 do
& ! & ! & ! & nbsp si MDIChildren[i].Caption = F6One puis
& ! & ! & ! & ! & ! & nbsp MDIChildren[i].BringToFront
& nbsp & nbsp for i := 0 to MDIChildCount - 1 do
& ! & ! & ! & nbsp si MDIChildren[i].Caption = F6Two puis
& ! & ! & ! & ! & ! & nbsp MDIChildren[i].BringToFront
& nbsp & nbsp si IsMaxed puis
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp IsMaxed := False
& ! & ! & ! & ! & ! & nbsp ActiveMDIChild.WindowState := wsMaximized
& ! & ! & ! & nbsp fin
& nbsp & nbsp LockWindowUpdate(0)
fin

Entrelace Bibliographie
j'ai commence ad-libbing ces articles sur le fait de faire certaines choses que je ne
& nbsp dans eWriter en Delphi demo TextEdit (a partir de laquelle j'ai construit eWriter).
& nbsp Il est naturel de s'accumuler tous ces dans une copie de TextEdit. Et
& nbsp vous pourriez avoir a aller en arriere et en avant de la remplir a nouveau, manques ou
& nbsp change routines de prise en charge. Coffret apparaissent des notes de la plupart des endroits. La Figure
& nbsp c'est en cours 'boutique' conversation...

  1. Systeme de Programmation/Next (Precedent) dans le MDI redacteurs

    http://www.HowToDoThings.com/showarticle.asp?article=143


  2. Selective de Carrelage dans le MDI Redacteurs

    http://www.HowToDoThings.com/showarticle.asp?article=147


  3. Fenetre de Suivi des Numeros dans le MDI Redacteurs

    http://www.HowToDoThings.com/showarticle.asp?article=154


  4. Paragraphe 'coulee' a partir d'un editeur de texte

    http://www.HowToDoThings.com/showarticle.asp?article=178



Système de programmation/next (précédent) dans le mdi, éditeurs

Système de programmation/next (précédent) dans le mdi, éditeurs : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation