Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Delphi: MDI Forms

Pagina: 1
Acties:

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
wie kan me hier het een en ander over uitleggen, of weet tutorials hier van te vinden? b.v.d.
ik krijg het namelijk niet aan de praat..

Verwijderd

Tja wat valt er aan MDI te vertellen.
Ok een voorbeeldje maak twee forms.
Form1 maak je een MDI van.
Form2 een MDI Child.
In Form1 OnShow event de code
"Form2.Show" intikken.
Runnen en je ziet dat Form2 in Form1 zit.
Tja da wassie wel zo'n beetje. Geen briljante uitleg maar ik hoop dat je het wel hebt gesnapt.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
ik snaphet, alleen volgend probleem:

hoe roep ik in een mdi-child het memo-field (voorbeeld) aan?

for x:=1 to 10 do
MDIChild[x].memo1.lines.add('bla');

werkt niet...
Form2.memo1.lines.add('bla'); wel, maar dan add je alleen lines in het 1ste window..

  • Elissen
  • Registratie: Januari 2000
  • Laatst online: 24-02 12:16
Het staat perfect uitgelegd in een van de boeken van Delphi 2.0.
Mail me ff om me te herrineren dat ik het voor je opzoek
elissen@bigfoot.com

  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 21-11 21:57

Tuinhark

Retro

Je zult meerdere instanties moeten maken van die Form2. Ik weet niet hoe het in Delphi gaat, maar het zal niet te veel verschillen van Visual Basic. :)

Dus, dat for-loopje wat je net neerzet, zal alleen werken als de instanties ook daadwerkelijk bestaan. Daarom werkt in je voorbeeldje alleen het 2e geval.

Verwijderd

het is me niet geheel duidelijk wat je er nu precies mee wil doen, maar ik ga er vanuit dat je door de windows door wil kunnen bladeren en dingen toevoegen etc.
kijk eens goed naar:
ActiveMDIChild

dit gebruik je dan in combinatie met
Next, Previous, ClientHandle, MDIClientCount is ook erg handig zodat je kunt zien hoeveel windows er op dat moment zijn.
maar ik gebruik over het algemeen
ActiveMDIChild.MDIChildren[x]......
hiermee heb je een array can child windows en kun je dus heel precies het juiste window pakken. vooral in combinatie met ActiveMDIChild.MDIClientCount erg handig.

dus nu concreet je kunt bijvoorbeeld doen:

ActiveMDIChild.MDIChildren[0].Memo1.lines.add('yeah this works great');

succes..

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
hmmz.. ik zal es checken.. activemdichild..
procedure TMain.CreateMDIChild(const Name: string);
var
Window: TWindow;
begin
{ create a new MDI child window }
Window:=TWindow.Create(Application);
Window.Caption:=Name;
end;

procedure TMain.New1Click(Sender: TObject);
begin
CreateMDIChild('Window' + IntToStr(MDIChildCount + 1));
end;

procedure TMain.Button1Click(Sender: TObject);
begin
// als je hier op drukt, dan moet in bv. window en window2, "blabla" aan de memofield worden toegevoegd.
ActiveMDIChild.MDIChildren[1].memo1.lines.add('blabla');
ActiveMDIChild.MDIChildren[2].memo1.lines.add('blabla');
// dat werkt alleen niet..
end;
Van de MDIChildren kan ik geen procedures\functies oid. aanroepen. dus ook niet memofields, buttons, edit-boxes, etc.etc.. alleen dingen zoals "close" etc..

Wat is hier het probleem? ook zonder ActiveMDIChild heb ik hetzelfde probleem

Verwijderd

k ik zal het nog een keer proberen.

Form1 = MDIForm
Form2 = MDIChild

ergens zul je dit moeten hebben staan:
-------------------------------------
1. var Kind: array[1..100] of TForm2;
2. for x := 1 to 10 do Kind := TForm2.Create(Self);
-------------------------------------
De tweede statement maakt meerdere instanties van Kind. Als je 'm aanmaakt verschijnt ie meteen op het beeldscherm.
Nu doe je als volgt:
-------------------------------------
for x := 1 to 10 do
Kind[x].Memo1.Lines.Add('Single Guy');


Zo simpel is het. Any questions?

Okay hier is een cut-and-paste voor Form1:


var
Form1: TForm1;
MDIChild: array[1..100] of TForm2;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var x: integer;
begin
for x := 1 to 10 do MDIChild[x] := TForm2.Create(Self);
MDIChild[1].Memo1.Lines.Add('a');
end;
-------------------------------------

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
1. var Kind: array[1..100] of TForm2;
2. for x := 1 to 10 do Kind := TForm2.Create(Self);
-------------------------------------
De tweede statement maakt meerdere instanties van Kind. Als je 'm aanmaakt verschijnt ie
meteen op het beeldscherm.
Nu doe je als volgt:
-------------------------------------
for x := 1 to 10 do
Kind[x].Memo1.Lines.Add('Single Guy');
Zo simpel is het. Any questions?
Single Guy.. THNX! Shure hope this works.. (d8 het wel.. :)))

Credits go out to you!! :)
Pagina: 1