Frames er en ting der løbende er blevet bedre og bedre. Jeg har lavet flere applikationer hvor jeg enten laver nedarving af TFrame og/eller opretter og sletter dynamisk.
Brugt med omtanke kan de være et virkelig plus. Tænk f.eks. på en af de evindelige Options-forme hvor man har en TPageControl med en masse faneblade. Sådan en form kan let blive noget skrækkeligt rod og her har jeg med held brugt frames på hver side til at udskille opgaven i bidder og for at tilføje automatik der signalerer at noget er skiftet og behøver at gemmes/opdateres.
Hvis jeg ikke rammer med nedenstående så prøv at beskrive din opgave lidt bedre og jeg vil se om jeg kan brygge et andet eksempel sammen - det er for komplekst at beskrive generelt. Måske skulle jeg skrive en artikel om det??
... men lad os tage det simple først
Hvis du vil vise og fjerne en TFrame (lad os kalde den frmeOKCancel), så kan du gøre det på følgende måde:
Framen TfrmeOKCancel indeholder to knapper: btnOK og btnCancel der begge er alignet til højre side. Selve framen er alignet til bunden.
På min frmMain har jeg en TCheckBox (cbShowFrame) som hhv. viser og fjerner framen fra bunden af skærmen.
I min frmMain har jeg en "fFrame : TFrame;" under den private del - jeg bruger den til at gemme den pågældende instans af framen så jeg kan fjerne den igen senere.
procedure TfrmMain.cbShowFrameClick(Sender: TObject); begin with (Sender as TCheckBox) do begin if Checked then begin fFrame := TfrmeOKCancel.Create(self); fFrame.Parent := self; // Sørger for at den vises end else begin fFrame.Free; fFrame := nil; // Strengt taget ikke nødvendigt her, men alligevel... end; end; end;
I Delphi v. 7 har Borland fået styr på at komponenterne ikke stod ordentligt når man placerede framene (m. align til en eller anden side) på en form der havde anden størrelse.
Man var derfor nødt til at have framene i samme størrelse som pladsen i formen hvor de skulle være. I D7 kører det derud af.
Har i øvrigt tit arbejdet med TList-varianter hvor jeg har ladet elementerne være nedarvinger af TFrame, så når man klikkede på et element, så skulle man bare vise framen så. Desuden var der mulighed for at tilrette de enkelte elementer - håber at du forstår hvar jeg skriver om - jeg syntes selv det var ret smart da jeg bryggede det sammen ,-)
Altså noget i retningen af, at man vælger en linie i en TListBox og så kommer der en frame der passer til det som du har valgt? Kender ikke forskellen mellem at loade en HTML-frame, kontra en hel HTML-side så det er rent gætværk.
Prøver med et eksempel: Jeg har et "gemme-password-program" der er opbygget med en menu-bar i top, et treeview til venstre og et frame-område til højre for den. Afhængig af hvilken type information du klikker på (underpunkt, password, bankkonti, hjemmesidelink, telefonnummer eller råtekst osv), så kommer den rette frame frem. Jeg har har/sætter (kan ikke huske det) framens align til alClient når den oprettes og så optager den pladsen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.