[Delphi 7] Meerdere instances van een form

Pagina: 1
Acties:

  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-05 08:01
Beste luitjes
Ik ben bezig aan een chat applicatie, dat betekent dat je meerdere 'instances' van een form hebt, dwz je praat met die, daar hoort ook een form bij. Maar nu ben ik gaan kijken hoe je dat doet, maar ik kom er maar niet uit.

Het 'createn' vanuit application.(Application.CreateForm(TForm1, Form1); ) werkt niet, dan krijg ik niet nóg een nieuwe..

Ook op google kom ik niet aan resultaten waar ik wat mee kan, het kan zijn omdat ik geen goede keywords gebruik, maar ik weet niet hoe ik 't zou moeten noemen, het zal vast wel wat simpels zijn, maar voor mij...

|>


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:34
snippet:
code:
1
2
3
4
5
var
   myForm : TForm2;
begin
   myForm := TForm2.Create (Self);
   myForm.Show();

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

code:
1
2
3
4
5
6
var
  ChatForm: TForm1;
begin
  ChatForm := TForm1.Create(Self) //of Application.CreateForm(TForm1, ChatForm);
  ChatForm.Show;
end;


Vrijgeven van dit form kan automatisch via het OnClose event van TForm1, handmatig via de method Release.

[ Voor 9% gewijzigd door jelmervos op 11-10-2004 17:35 ]

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-05 08:01
En variabelen aan zo'n form meegeven, gaat gewoon met Form1.Variabele := 'bla'? (dus als ik er meer heb?)

|>


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

Simon schreef op 11 oktober 2004 @ 17:39:
En variabelen aan zo'n form meegeven, gaat gewoon met Form1.Variabele := 'bla'? (dus als ik er meer heb?)
Form1.Variabele1 := waarde;
Form1.Variabele2 := waarde;
Form1.Variabele3 := waarde;

en daarna

Form1.Show;

of bedoel je je dat je tijdens creeren al variabelen wil meegeven? Dan kan je Create method overloaden.

  • simon
  • Registratie: Maart 2002
  • Laatst online: 21-05 08:01
cimbom schreef op 11 oktober 2004 @ 19:05:
[...]


Form1.Variabele1 := waarde;
Form1.Variabele2 := waarde;
Form1.Variabele3 := waarde;

en daarna

Form1.Show;

of bedoel je je dat je tijdens creeren al variabelen wil meegeven? Dan kan je Create method overloaden.
Het gaat erom dat ik elk nieuwe form specifieke variabelen mee wil geven, dus bijvoorbeeld om welke andere user het gaat :)

|>


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

Simon schreef op 11 oktober 2004 @ 19:09:
[...]


Het gaat erom dat ik elk nieuwe form specifieke variabelen mee wil geven, dus bijvoorbeeld om welke andere user het gaat :)
ja kan toch met die variabelen? Of bedoel je dat je niet snapt hoe?

  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

nou even duidelijk maken:

manier 1 via reintroduce van je constructor

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type
    TChatForm = class(TForm)
  private
    FUserLogin : string;
    FChannelName :string;    
  public
    constructor Create(AOwner : TComponent; UserLogin : String; Channel:string);reintroduce;    
  end;

implementation

constructor TChatForm.Create(AOwner : TComponent; UserLogin : String; Channel:string)
begin
  inherited Creae(AOwner);

  FUserLogin := UserLogin ;
  FChannelName := Channel; 
end;


en dan creer je hem als volgt:
code:
1
2
3
4
5
var
  aForm : TChatForm;

aForm := TChatForm.Create(Application, 'blauser ' ,'mychannel ' );
AForm.Show;


of
code:
1
2
3
4
5
6
7
8
type
    TChatForm2 = class(TForm)
  private
      
  public
     UserLogin : string;
    ChannelName :string; 
  end;


en je doet
code:
1
2
3
4
5
6
7
var
  aForm : TChatForm2;

aForm := TChatForm2.Create(Application);
aForm.UserLogin  := 'blauser ';
aForm.ChannelName  := 'mychannel ' ;
AForm.Show;


Hoop dat een en ander duidelijk wordt syntax zal wel niet kloppen, heb in noetpad getikt dus.

Verwijderd

Je kan ook een arbitraire hoeveelheid forms lanceren:
code:
1
2
3
4
with TMyForm.Create( Owner=Application, meerparameters ) do begin
    // Initialiseer nog meer
    Visible = true;
end;


Bij Delphi is ook een MDI (multiple document interface) voorbeeld bijgesloten. Hierin laat men zien hoe je in MS-Office stijl een willekeurig aantal child-vensters kan openen onder een parent-venster.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20-05 14:02

Tomatoman

Fulltime prutser

Er worden bij Delphi heleboel nuttige voorbeeldprogramma's meegeleverd, bijvoorbeeld

• C:\Program Files\Borland\Delphi7\Demos\Doc\TextEdit\textedit.dpr

en

• C:\Program Files\Borland\Delphi7\Demos\ActiveX\OleCtnrs\olesdi.dpr
versus
• C:\Program Files\Borland\Delphi7\Demos\ActiveX\OleCtnrs\olemdi.dpr

Een goede grap mag vrienden kosten.

Pagina: 1