Avatar billede dcgeek Nybegynder
16. januar 2003 - 20:37 Der er 6 kommentarer og
1 løsning

Oprette forms

Hvordan opretter jeg en ny form under runtime, samt sætter navn på den (name = f2)?
Avatar billede dcgeek Nybegynder
16. januar 2003 - 20:40 #1
Hov, glemte lige denne her:
Når den pågældne form er oprettet, hvordan laver jeg så en funktion/procedure til formen, så når brugeren klikker på den, bliver dens name vist i form1's caption?
Avatar billede hreiff Nybegynder
17. januar 2003 - 09:34 #2
var
  MinForm: TForm;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Minform := TForm.Create(Self);
  Minform.caption := 'f2';
  Minform.Show;
end;
Avatar billede dcgeek Nybegynder
17. januar 2003 - 10:02 #3
Ja,ja, men hvordan laver jeg det så sådan, at når jeg klikker på den, så vises formens name i Form1's caption?

For det kunne jo godt være at jeg ville have x antal forms, så variablen bliver MiniForm : Array[0..100] of TForm; og dermed MiniForm[x] := TForm.Create(Self).
Så når jeg klikker på den, skal den vise den pågælne forms name i form1's caption.
Avatar billede stoney Nybegynder
17. januar 2003 - 10:17 #4
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure formcaption(sender: TObject);
  private
    { Private declarations }
  public
  formcap : string;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure Tform1.formcaption(sender: TObject);

begin
if sender is Tform then

form1.Caption :=  (Sender as Tform).Name;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
dinform : Tform;
begin
dinform := Tform.Create(nil);
dinform.Name := 'F2';
dinform.OnClick := formcaption;
dinform.Visible := true;

end;

end.


Stoney
Avatar billede dcgeek Nybegynder
17. januar 2003 - 13:15 #5
hmm... ja, dit eksempel er nu meget godt, men for at jeg kan bruge det i mit project bliver jeg altså nød til at kunne lave noget lignende det her:

procedure f2[x].FormClick(sender: TObject);
begin
end;

så jeg i de ovenstående procedurer kan definere x, så jeg løbende under programmet kan ændre indholdet af hver f2[x]'s OnClick, så jeg ikke behøver at foruddefinerer hver procedure (så jeg under programkørsel ligesom opretter ny procedure for hver form, ved at definere x).
Avatar billede hreiff Nybegynder
17. januar 2003 - 13:33 #6
var i: integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  MinForm: TForm;
begin
  inc(i);
  Minform := TMinForm.Create(Self);
  Minform.caption := 'f2';
  Minform.name := 'f2-'+IntToStr(i);
  Minform.Show;
end;

Så kan du styre det på navnet (f2-1, f2-2, f2-3 osv.)
Man kan sagten oprette flere forme ved at trykke flere gange på knappen (så længe .name ikke er det samme
Avatar billede dcgeek Nybegynder
17. januar 2003 - 13:35 #7
Det er lige meget, har fundet en løsning, tak stoney :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester