Selektiv Flislegging i MDI Editors

Vindu /Tile Menypunktet er nyttig hvis bare to filer er åpne. Thiscode implementerer en mer nyttig "Tile Top 2 av N Windows" som doesn'tlose andre filer som kan være åpen Selektiv teglstein i MDI Redaktører
By Gene [email protected]
28 mai 2001. - Endre Når jeg lagt vindu sporing i et lter artikkelen, Sporings Vindu Tall i MDI Redaktører,
jeg fant ut at jeg ikke hadde satt Tag verdier når gjenåpning filene lukket før flislegging. Jeg har gjort denne endringen i TFrameForm.Tile2ofN1Click Bilde: //Lånte guts fra Open1Click å erstatte //ReopenIt i eWriter komplekse interweavingwith TEditForm.Create (Selv) gjør begynne Open (TileTwo [i]); Tag: = 3 + i; end; Erstatter: //Lånte guts fra Open1Click å erstatte //ReopenIt i eWriter komplekse interweavingwith TEditForm.Create (Selv) gjøre Open (TileTwo [i]);
Noen Lagt Kode
Hvis du har satt opp Tile Top 2 av N Windows
i TextEdit å se på koden arbeids, vil du ønsker å legge dette SaveAs1Click rutine å MDIEdit.pas. Du har kanskje lagt merke til at hvis du hadde en ny fil, lagres eller ikke, du fikk noen merkelige resultater. Legg dette og du vil ikke få rare resultater hvis du lagrer filen (og gi den et banenavn). Du bør ikke bruke dette menyvalget hvis du har en ulagret ny file.The tap av Restore dimensjonering er ikke anbefale en av de merkelige effekter. teglstein1
produserer den effekten, og jeg kaller det i Tile Top 2 av N Windows
.procedure TEditForm.Saveas1Click (Sender: TObject); begynne SaveFileDialog.FileName: = Banenavn; hvis SaveFileDialog.Execute deretter begynne Banenavn: = SaveFileDialog.FileName; Caption: = ExtractFileName (Banenavn); OpenFiles.Insert (Tag, Sti); //Liste ny Sti Save1Click (Sender); end, end,
Advarsel:
test-bed for denne koden er Borland sin TextEdit demo som kommer med Delphi. Hvis du kompilere i Delphi 5 eller 5.01, må du ha de modifiserte forms.pas som jeg henvise deg til i min tidligere artikkel, Programming System /Next (Forrige) i MDI redaktører.
Når du kompilere og kjøre Borland sin TextEdit (demoer /doc /TextEdit) og klikker på Vindu-menyen, finner du to filen arrangere menyelementer: Fliser og Cascade. Den Tile kommandoen er en design rart. Hvis du har to filer åpne, de er stablet vertikalt. Dette er et svært nyttig arbeid arrangement. Men kan gå på. Hvis du har tre filer åpne, er de fortsatt stablet vertikalt. Nå er det ikke mye arbeid område i hvilket som helst av dem. Hvis du har fire filer åpne, okkuperer de kvadranter av klientområdet. Jeg har ikke våget prøve med fem filer åpne. Jeg frykter piksler spratt ut av screen.Tile er mest nyttig hvis du har bare to filer åpne. I forbindelse med et prosjekt, men kan det være lurt å ha et halvt dusin nær. Det du trenger er en måte å sette alle filene, men to til side, med et museklikk, og senere bringe dem tilbake med en mus-click.You ønsker ikke å bekymre deg om filene er flislagt eller ikke når du gjør det andre klikket. Koden under implementerer dette med et nytt element på Vindu-menyen under Tile. Klikk Tile Top 2
N Windows
. Alle andre enn de to øverste filene er stengt og de to øverste er flislagt. Menyvalget er sjekket. Klikk den mens sjekket, og filene blir gjenåpnet, filene er maxed, og den som var aktiv før re-åpningen er på top.On TFrameForm, sette et menypunkt i menyen Vindu mellom flis og Cascade. På toppen av retningslinjene nedenfor, gir jeg en bildetekst (for brukeren å se), og minner om at Sjekket eiendommen skal være False. Alt annet kan bli stående som er (siden det er hva jeg har gjort mens du sjekker dette). Navn eiendommen kan bli forkortet som vist. I Hendelser ark, Double Klikk onClick å få behandleren. TFrameForm.Tile2ofN1Click er gitt her i sin helhet. Alle erklæringer (og initializations) er gitt first.This er ikke til å kompilere, ennå. Jeg har jobbet på denne tråden løs fra en kompleks "sønn av TextEdit", og jeg har jobbet opp minimal støtte infrastrukturen her. I egenskaper tabellen nedenfor, merk at TEditForm bør ha WindowState satt til wsMaximized. Under Support Code, jeg gir erstatning rutiner for TEditForm.FormClose og TEditForm.Open. Mine modifikasjoner er nødvendig for å holde styr på hvilke filer er åpne og få banenavn for å re-open.Way ned på bunnen er noe jeg burde ha tatt med i min første artikkel. Alle testene av min kode bære å bringe en gjeng filer i TextEdit. Åpning en av gangen er et drag. Så jeg har en erstatning TFrameForm.Open1Click å håndtere gjengen lasting. Et notat like før rutinen forteller deg hvordan du endrer dialogenes egenskaper Kode:.
Noen egenskapsinnstillinger:
I TFrameForm, sette inn et nytt menypunkt mellom Window /Tile og Window /Cascade. Tile Top & 2 av N Windows product: (Menyelement bildetekst) Navn kan bli hakket ned til Tile2ofN1
Sjekket er falseTEditForm WindowState: wsmaximized
TFrameForm ... var (global). .. TileTwo: TstringList; OpenFiles: TstringList; initialisering
//TileTwo er for hoved codeTileTwo: = TStringList.Create; TileTwo.Text: = ''; //OpenFiles er en juri-rigget system for å holde styr på åpne filesOpenFiles: = TStringList.Create; OpenFiles.Text: = ''; {Hoved kode, en TFrameForm rutine} prosedyre TFrameForm.Tile2ofN1Click (Sender: TObject); Var i, j: integer; begynne hvis MDIChildCount < 2 deretter Exit; if (MDIChildCount = 2) og (Tile2ofN1.Checked = False) da begynne Tile1Click (Sender); Gå; slutt; If (MDIChildCount > 2) og ikke Tile2ofN1.Checked deretter begynne Tile2ofN1.Checked: = true; for i: = 2 til MDIChildCount - en ikke begynne for j: = 0 til OpenFiles.Count - en gjøre hvis pos (MDIChildren [i] .Caption, OpenFiles.strings [j]) < > 0 da begynne TileTwo.Add (OpenFiles.strings [j]); MDIChildren [i] Nært; Gå i stykker; slutt; slutt; Tile2ofN1.Checked: = true; messageDlg ('I denne demoen, jeg trenger' + 'et avbrudd etter stengetid filer og før' + 'ringer Tile1Click så Child Count er' +, mtInformation, [mbOK], 0 'omregnet Go figure..'); LockWindowUpdate (Handle); Tile1Click (Sender); LockWindowUpdate (0); ende else if Tile2ofN1.Checked og (TileTwo.Text < > ''), og start LockWindowUpdate (Handle); for i: = 0 til TileTwo.Count - en gjøre //Lånte guts fra Open1Click å erstatte //ReopenIt i eWriter komplekse sammenflettede med TEditForm.Create (Selv) gjør begynne Open (TileTwo [i]); Tag: = 3 + i; slutt; MDIChildren [MDIChildCount - 2] .BringToFront; LockWindowUpdate (0); TileTwo.Text: '' =; Tile2ofN1.Checked: = False; end, end; Support Kode: product: {Disse to rutiner i TEDitForm spor og håndtere filen åpnes og lukkes og erstatte rutiner allerede der} prosedyre TEditForm.FormClose (Sender: TObject; Var Handling: TCloseAction); Var i: Longint; begynne for i: = 0 til OpenFiles.Count - en gjøre hvis OpenFiles [i] = Sti deretter begynne OpenFiles.Delete (i); gå i stykker; slutt; Handling: = caFree; ende; prosedyre TEditForm.Open (konst AFileName: string); begynne Banenavn: = AFileName; Caption: = ExtractFileName (AFileName); //Satt Sti inn OpenFiles liste OpenFiles.Add (Sti); med Editor gjør begynne Lines.LoadFromFile (Banenavn); SelStart: = 0; Forandringer: = False; end, end {Tar i flere filer til å kjøre tester vil være lettere hvis du velger TFrameForm sin OpenDialog1 og under alternativer, gjøre flere valg Sann. Deretter erstatte rutinen nedenfor for Open1Click} prosedyre TFrameForm.Open1Click (Sender: TObject); Var jeg: integer; begynne hvis OpenFileDialog.Execute deretter LockWindowUpdate (Handle); For i: = 0 til OpenFileDialog.Files.count - en gjøre med TEditForm.Create (Selv) gjøre? Pne (OpenFileDialog.Files [i]); LockWindowUpdate (0); end;
Sprang Bibliografi
Jeg begynte ad-libbing disse artiklene på å gjøre noen av de tingene jeg gjør i eWriter i Delphi demo TextEdit (som jeg bygget eWriter). Det er naturlig å samle alle disse i ett eksemplar av TextEdit. Og du kan ha til å gå frem og tilbake for å fylle på ny, savnet, eller endret supportrutiner. Eske merknader vises de fleste steder. Finne det er pågående "butikk" samtale ...


    Programming System /Next (Forrige) i MDI editorshttp:? //www.HowToDoThings.com/showarticle.asp Article = 143


    Selektiv teglstein i MDI Editorshttp:? //www.HowToDoThings.com/showarticle.asp article = 147

    Sporings Vindu Tall i MDI Editorshttp:? //www.HowToDoThings.com/showarticle.asp article = 154

    Avsnitt "helle" fra en tekst editorhttp: //www.HowToDoThings.com/showarticle Asp? article = 178